我使用网格搜索来拟合机器学习模型参数。
我输入了以下代码(修改自sklearn文档页:search.GridSearchCV.html)
from sklearn import svm, grid_search, datasets, cross_validation
# getting data
iris = datasets.load_iris()
# grid of parameters
parameters = {'kernel':('linear', 'poly'), 'C':[1, 10]}
# predictive model (support vector machine)
svr = svm.SVC()
# cross validation procedure
mycv = cross_validation.StratifiedKFold(iris.target, n_folds = 2)
# grid search engine
clf = grid_search.GridSearchCV(svr, parameters, mycv)
# fitting engine
clf.fit(iris.data, iris.target)然而,当我查看clf.estimator时,我得到了以下内容:
SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0, degree=3, gamma=0.0,
kernel='rbf', max_iter=-1, probability=False, random_state=None,
shrinking=True, tol=0.001, verbose=False)我是怎么得到一个“rbf”内核的?我没有在参数中指定它为选项。
到底怎么回事?
谢谢!
我用的是“0.15-git”版本的滑雪。
增编:我注意到clf.best_estimator_给出了正确的输出。那么clf.estimator在做什么呢?
发布于 2014-06-06 22:43:19
clf.estimator只是作为第一个参数传递给GridSearchCV对象的估计器的副本。任何没有搜索到的参数都是由这个估计量决定的。因为您没有显式地为SVC对象svr设置任何参数,所以它被赋予了所有默认值。因此,由于clf.estimator只是svr的副本,所以打印clf.estimator的值将返回带有默认参数的SVC对象。你不是写了吗,例如,
svr = svm.SVC(C=4.3)那么clf.estimator的值应该是:
SVC(C=4.3, cache_size=200, class_weight=None, coef0=0.0, degree=3, gamma=0.0,
kernel='rbf', max_iter=-1, probability=False, random_state=None,
shrinking=True, tol=0.001, verbose=False)用户在访问clf.estimator时没有真正的价值,但无论如何它也不是一个公共属性(因为它没有以“_”结尾)。
https://stackoverflow.com/questions/24088010
复制相似问题