我对机器学习比较陌生,希望在以下方面提供一些帮助:
我在我的数据上运行支持向量机分类器(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吗?只是FYI:我的目标数据列是二值化的(值为0和1) .
如果我的方法有误,请告诉我最好的方法 .
谢谢!
2 回答
你快到了:
此时,您可以使用sklearn.metrics模块中的任何指标来确定您的执行情况 . 例如:
你只需要分割你的X和y . 不要拆分火车和测试 .
然后,您可以将案例svm中的分类器传递给
cross_val_score
函数,以获得每个实验的准确性 .只需3行代码: