我不明白什么时候我必须使用scikit learn的fit方法
在这个网页:http://machinelearningmastery.com/automate-machine-learning-workflows-pipelines-python-scikit-learn/有一个管道+ StandardScaler的例子。没有使用fit方法。
但在另一个:http://scikit-learn.org/stable/auto_examples/svm/plot_rbf_parameters.html还有一个StandardScaler和一个fit方法。
这是我的代码:Pipeline+Robustscaler:result_list = []
for name in ["AWA","Rem","S1","S2","SWS","SX", "ALL"]:
x=sio.loadmat('/home/{}_E.mat'.format(name))['x']
s_y=sio.loadmat('/home/{}_E.mat'.format(name))['y']
y=np.ravel(s_y)
print(name, x.shape, y.shape)
print("")
#Create a pipeline
clf = make_pipeline(preprocessing.RobustScaler(), SVC(cache_size=1000, kernel='rbf'))
###################10x20 SSS##################################
print("10x20")
xSSSmean20 = []
for i in range(10):
sss= StratifiedShuffleSplit(y, 20, test_size=0.1, random_state=i)
scoresSSS=cross_validation.cross_val_score(clf, x, y, cv=sss)
xSSSmean20.append(scoresSSS.mean())
result_list.append(xSSSmean20)
print("")
要训练你的分类器,你必须适合你的训练数据集。
第一个链接也这样做,不是因为它没有显式地出现在代码片段中,所以它没有这样做:
方法cross_val_score
使用model
作为估计量来拟合到数据。
看一下'cross_val_score'方法的实现,试着理解它是如何工作的,而不是在不了解它的作用的情况下使用它。
这里是函数的文档,这里的实现在GitHub中可以参考。
建议:
当你不明白的时候,试着去钻研代码。你会学到很多!