簡體   English   中英

Python scikit學習(使用grid_search.GridSearchCV)

[英]Python scikit-learn (using grid_search.GridSearchCV)

我正在使用網格搜索來適合機器學習模型參數。

我輸入了以下代碼(從sklearn文檔頁面進行了修改: http ://scikit-learn.org/stable/modules/generated/sklearn.grid_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”內核? 我沒有在參數中將其指定為選項。

這是怎么回事?

謝謝!

PS我正在使用sklearn的'0.15-git'版本。

附錄 :我注意到clf.best_estimator_提供了正確的輸出。 那么clf.estimator在做什么?

clf.estimator只是作為第一個參數傳遞給GridSearchCV對象的estimator的副本。 任何未在網格上搜索的參數均由此估算器確定。 由於您沒有為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並沒有真正的價值,但是無論如何它也不是一個公共屬性(因為它不以“ _”結尾)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM