2016-11-12 195 views
2

我有訪問scikit支持向量迴歸模型(SVR)的係數學習麻煩時,該模型被嵌入在管道和網格搜索。 請看下面的例子:係數的支持向量迴歸(SVR),使用網格搜索(GridSearchCV)和管道在Scikit瞭解

from sklearn.datasets import load_iris 
import numpy as np 
from sklearn.grid_search import GridSearchCV 
from sklearn.svm import SVR 
from sklearn.feature_selection import SelectKBest 
from sklearn.pipeline import Pipeline 

iris = load_iris() 
X_train = iris.data 
y_train = iris.target 

clf = SVR(kernel='linear') 
select = SelectKBest(k=2) 
steps = [('feature_selection', select), ('svr', clf)] 
pipeline = Pipeline(steps) 
grid = GridSearchCV(pipeline, param_grid={"svr__C":[10,10,100],"svr__gamma": np.logspace(-2, 2)}) 
grid.fit(X_train, y_train) 

這似乎很好地工作,但是當我嘗試訪問最佳擬合模型

grid.best_estimator_.coef_ 

我得到一個錯誤信息的係數:AttributeError的:「管道」對象沒有屬性'coef_'。

我也試圖訪問管道的各個步驟:

pipeline.named_steps['svr'] 

但找不到係數那裏。

回答

1

只是碰巧遇到了同樣的問題,this post 有了答案: grid.best_estimator_包含管道,它由steps的一個實例。最後一步應該始終是估計量,所以你應該總是找到係數在:

grid.best_estimator_.steps[-1][1].coef_

相關問題