El *_*ude 2 python svm scikit-learn
我计划使用scikit svm进行课堂预测.我有一个由大约100个实验组成的两类数据集.每个实验都封装了我的数据点(向量)+分类.根据http://scikit-learn.org/stable/modules/svm.html对SVM的培训应该是直截了当的.我将不得不将所有向量放在一个数组中,并使用相应的类标签生成另一个数组,训练SVM.但是,为了运行留一法错误估计,我需要省略一个特定的向量子集 - 一个实验.如何使用可用的分数功能实现这一目标?
干杯,EL
你可以手动训练除了一个观察之外的一切,使用numpy索引将其删除.然后,您可以使用任何sklearn的帮助程序来评估分类.例如:
import numpy as np
from sklearn import svm
clf = svm.SVC(...)
idx = np.arange(len(observations))
preds = np.zeros(len(observations))
for i in idx:
is_train = idx != i
clf.fit(observations[is_train, :], labels[is_train])
preds[i] = clf.predict(observations[i, :])
Run Code Online (Sandbox Code Playgroud)
或者,scikit-learn有一个帮助,可以做一次性退出,另一个助手可以获得交叉验证分数:
from sklearn import svm, cross_validation
clf = svm.SVC(...)
loo = cross_validation.LeaveOneOut(len(observations))
was_right = cross_validation.cross_val_score(clf, observations, labels, cv=loo)
total_acc = np.mean(was_right)
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅用户指南.cross_val_score
实际上每个折叠都返回一个分数(这有点奇怪的IMO),但由于我们每次观察有一个折叠,如果错误则为0,如果是正确则为1.
当然,留一法很慢并且具有可怕的统计属性来启动,所以你应该使用它KFold
.
归档时间: |
|
查看次数: |
1386 次 |
最近记录: |