我在尝试按照这个教程学习基于机器学习的预测,但我有两个问题?
问题1. 如何在下面的代码中设置n_estimators
,否则它将始终使用默认值。
from sklearn.cross_validation import KFolddef run_cv(X,y,clf_class,**kwargs):# 构建一个kfolds对象kf = KFold(len(y),n_folds=5,shuffle=True)y_pred = y.copy()# 遍历折叠for train_index, test_index in kf: X_train, X_test = X[train_index], X[test_index] y_train = y[train_index] # 使用关键字参数初始化分类器 clf = clf_class(**kwargs) clf.fit(X_train,y_train) y_pred[test_index] = clf.predict(X_test)return y_pred
它被调用的方式如下:
from sklearn.svm import SVC print "%.3f" % accuracy(y, run_cv(X,y,SVC))
问题2:如何使用已训练的模型文件(例如,从SVM获得的),以便我可以用它来预测更多(测试)数据,这些数据我在训练时没有使用过?
回答:
关于你的第一个问题,在上面的代码中,你可以这样调用run_cv(X,y,SVC,n_classifiers=100)
,**kwargs
会将此参数传递给分类器初始化步骤clf = clf_class(**kwargs)
。
关于你的第二个问题,你链接的代码中的交叉验证只是用于模型评估,即比较不同类型的模型和超参数,并确定你的模型在生产中的可能效果。一旦你决定了你的模型,你需要在整个数据集上重新拟合模型:
clf.fit(X,y)
然后你可以使用clf.predict
或clf.predict_proba
来获取预测结果。