Как извлечь параметры оценки (тета) из GaussianProcessClassifier - PullRequest
0 голосов
/ 03 июня 2018
# Scale/ Normalize Independent Variables 
X = StandardScaler().fit_transform(X) 
#Split data into train an test set at 50% each
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.5, random_state=42) 
gpc= GaussianProcessClassifier(1.0 * RBF(1.0), n_jobs=-1)
gpc.fit(X_train,y_train)
y_proba=gpc.predict_proba(X_test)
#classify as 1 if prediction probablity greater than 15.8%
y_pred = [1 if x >= .158 else 0 for x in y_proba[:, 1]]

Приведенный выше код работает, как ожидалось.Однако, чтобы объяснить модель, что-то вроде «изменение на 1 единицу Beta1 приведет к увеличению вероятности успеха на 0,7%», мне нужно увидеть тета.Как мне это сделать?Спасибо за помощь.Кстати, это домашнее задание

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Очень хороший вопрос.Вы действительно можете получить доступ к thetas, однако в документации не ясно, как это сделать.


Используйте следующее.Здесь я использую iris набор данных.

from sklearn.gaussian_process.kernels import RBF
from sklearn.gaussian_process import GaussianProcessClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

# Scale/ Normalize Independent Variables 
X = StandardScaler().fit_transform(X) 
#Split data into train an test set at 50% each
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size= .5, random_state=42) 
gpc= GaussianProcessClassifier(1.0 * RBF(1.0), n_jobs=-1)
gpc.fit(X_train,y_train)
y_proba=gpc.predict_proba(X_test)
#classify as 1 if prediction probablity greater than 15.8%
y_pred = [1 if x >= .158 else 0 for x in y_proba[:, 1]]

# thetas
gpc.kernel_.theta

Результаты:

array([7.1292252 , 1.35355145, 5.54106817, 0.61431805, 7.00063873,
       1.3175175 ])

Пример из документации, которая обеспечивает доступ к thetas можно найти ЗДЕСЬ


Надеюсь, это поможет.

0 голосов
/ 03 июня 2018

Похоже, что значение theta, которое вы ищете, является свойством объекта ядра, который вы передаете в классификатор.Вы можете прочитать больше в этом разделе документации sklearn .Вы можете получить доступ к лог-преобразованным значениям тета для ядра классификатора, используя classifier.kernel_.theta, где classifier - имя вашего объекта классификатора.

Обратите внимание, что у объекта ядра также есть метод clone_with_theta(theta), который может пригодиться, если вы вносите изменения в тета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...