anand
anand

Reputation: 289

How do I extract the estimation parameters (theta) from GaussianProcessClassifier

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

The above code runs as expected. However, in order to explain the model, something like, 'a 1 unit change in Beta1 will result in a .7% improvement in probability of sucess' , I need to be able to see the theta. How do I do this? Thanks for the assist. BTW, this is for a homework assignment

Upvotes: 2

Views: 735

Answers (2)

seralouk
seralouk

Reputation: 33147

Very nice question. You can indeed access the thetas however in the documentation it is not clear how to do this.


Use the following. Here I use the iris dataset.

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

Results:

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

An example from the documentation that access thetas can be found HERE


Hope this helps.

Upvotes: 2

Mihai Chelaru
Mihai Chelaru

Reputation: 8197

It looks as if the theta value you are looking for is a property of the kernel object that you pass into the classifier. You can read more in this section of the sklearn documentation. You can access the log-transformed values of theta for the classifier kernel by using classifier.kernel_.theta where classifier is the name of your classifier object.

Note that the kernel object also has a method clone_with_theta(theta) that might come in handy if you're making modifications to theta.

Upvotes: 0

Related Questions