如何从GaussianProcessClassifier中提取估计参数(theta)

时间:2018-06-03 16:05:55

标签: python scikit-learn classification gaussian

# 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]]

上面的代码按预期运行。然而,为了解释这个模型,比如“Beta1中的1个单位变化将导致成功概率提高0.7%”,我需要能够看到theta。我该怎么做呢? 谢谢你的帮助。顺便说一句,这是一项家庭作业

2 个答案:

答案 0 :(得分:1)

非常好的问题。您确实可以访问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的文档中的示例HERE

希望这有帮助。

答案 1 :(得分:0)

看起来,您要查找的theta值是您传递给分类器的内核对象的属性。您可以阅读更多in this section of the sklearn documentation。您可以使用classifier.kernel_.theta访问分类器内核的日志转换值,其中classifier是分类器对象的名称。

请注意,kernel object还有一个方法clone_with_theta(theta),如果您对theta进行修改,它可能会派上用场。