python - 使用 **kwargs (Scikit Learn) 设置 n_estimators 参数

标签 python machine-learning scikit-learn

我正在尝试关注 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

它被称为:

从 sklearn.svm 导入 SVC 打印 "%.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.predictclf.predict_proba 进行预测。

关于python - 使用 **kwargs (Scikit Learn) 设置 n_estimators 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39279121/

相关文章:

python - 构建缺失数据的混淆矩阵

python - 如何将数据框的一列放入 Python 中的泊松分布

python - 如何按数字拆分列表列表?

c# - 我应该使用什么来识别等宽数字?

python - "\n"写入文件时无法在 python 中工作

python - 如何使用 scikit-learn 中的散列技巧对二元语法进行矢量化?

python - Scikit-learn 具有不同评分者的学习曲线,并排除一组 cv 产生相同的值

python - 试图校准keras模型

python - Keras 中 Conv1D 的行为(张量维度)

python - Huggingface Transformer - GPT2 从保存的检查点恢复训练