如何在sklearn中运行10倍交叉验证后运行SVC分类器?

时间:2017-12-05 22:28:22

标签: python machine-learning svm cross-validation

我对机器学习比较陌生,希望在以下方面提供一些帮助:

我在我的数据上运行支持向量机分类器(SVC),交叉验证10次,并计算准确度分数(约为89%)。我正在使用Python和scikit-learn来执行任务。这是一段代码:

def get_scores(features,target,classifier):
  X_train, X_test, y_train, y_test =train_test_split(features, target , 
    test_size=0.3)
    scores = cross_val_score(
    classifier,
    X_train,
    y_train,
    cv=10,
    scoring='accuracy',
    n_jobs=-1)
 return(scores)

get_scores(features_from_df,target_from_df,svm.SVC())

现在,我如何使用我的分类器(在运行10倍cv之后)在X_test上测试它并将预测结果与y_test进行比较?您可能已经注意到,我只在交叉验证过程中使用了X_train和y_train。

我注意到sklearn有cross_val_predict: http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.cross_val_predict.html我应该用cross_val_predict替换我的cross_val_score吗?仅供参考:我的目标数据列是二值化的(值为0和1)。

如果我的方法有误,请告诉我最好的方法。

谢谢!

2 个答案:

答案 0 :(得分:3)

您只需要拆分X和y。不要拆分火车并进行测试。

然后,您可以将案例svm中的分类器传递给698函数,以获取每个实验的准确性。

仅3行代码:

cross_val_score

答案 1 :(得分:0)

你快到了:

# Build your classifier
classifier = svm.SVC()

# Train it on the entire training data set
classifier.fit(X_train, y_train)

# Get predictions on the test set
y_pred = classifier.predict(X_test)

此时,您可以使用sklearn.metrics模块中的任何指标来确定您的效果。例如:

from sklearn.metrics import accuracy_score
print(accuracy_score(y_test, y_pred))