我正在尝试遵循本教程学习基于机器学习的预测,但我有两个问题吗?
Ques1。如何在下面的代码中设置n_estimators
,否则它将始终采用默认值
from sklearn.cross_validation import KFold
def run_cv(X,y,clf_class,**kwargs):
# Construct a kfolds object
kf = KFold(len(y),n_folds=5,shuffle=True)
y_pred = y.copy()
# Iterate through folds
for train_index, test_index in kf:
X_train, X_test = X[train_index], X[test_index]
y_train = y[train_index]
# Initialize a classifier with key word arguments
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))
Ques2:如何使用已经训练好的模型文件(例如从SVM中获得的),以便我可以使用它来预测更多(测试)我没有用于训练的数据?
对于您的第一个问题,在上面的代码中您将调用run_cv(X,y,SVC,n_classifiers=100)
, **kwargs
将通过步骤clf = clf_class(**kwargs)
将其传递给分类器初始化器。
对于您的第二个问题,您链接的代码中的交叉验证只是用于模型评估,即比较不同类型的模型和超参数,并确定您的模型在生产中的可能有效性。一旦你决定了你的模型,你需要在整个数据集上重新调整模型:
clf.fit(X,y)
那么您可以使用clf.predict
或clf.predict_proba
获得预测