【问题标题】:Setting the n_estimators argument using **kwargs (Scikit Learn)使用 **kwargs (Scikit Learn) 设置 n_estimators 参数
【发布时间】:2016-09-02 07:16:55
【问题描述】:

我正在尝试按照this 教程学习基于机器学习的预测,但我有两个问题?

问题1。如何在下面这段代码中设置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))

问题 2:如何使用已经训练好的模型文件(例如从 SVM 获得),以便我可以用它来预测更多我没有用于训练的(测试)数据?

【问题讨论】:

    标签: python machine-learning scikit-learn


    【解决方案1】:

    对于您的第一个问题,在上面的代码中您将调用run_cv(X,y,SVC,n_classifiers=100)**kwargs 将通过步骤clf = clf_class(**kwargs) 将其传递给分类器初始化程序。

    对于您的第二个问题,您链接的代码中的交叉验证仅用于模型评估,即比较不同类型的模型和超参数,并确定您的模型在生产中的可能有效性。确定模型后,您需要在整个数据集上重新拟合模型:

    clf.fit(X,y)
    

    然后您可以使用clf.predictclf.predict_proba 获得预测。

    【讨论】:

      猜你喜欢
      • 2018-09-23
      • 2019-01-16
      • 2016-02-11
      • 1970-01-01
      • 2014-02-18
      • 2015-07-11
      • 2023-03-29
      • 2016-07-13
      • 2018-03-18
      相关资源
      最近更新 更多