【问题标题】:Custom scorer in SciKit-Learn - allow grid search optimisation for a particular classSciKit-Learn 中的自定义记分器 - 允许对特定类进行网格搜索优化
【发布时间】:2015-04-02 22:06:10
【问题描述】:

我想在 SciKit-Learn 中创建一个自定义评分器,我可以将它传递给 GridSearchCV,它会根据特定类的预测准确性评估模型性能。

假设我的训练数据由属于三个类别之一的数据点组成:

“狗”、“猫”、“老鼠”

# Create a classifier:
clf = ensemble.RandomForestClassifier()

# Set up some parameters to explore:
param_dist =    {
                 'n_estimators':[500, 1000, 2000, 4000],
                 "criterion": ["gini", "entropy"],
                 'bootstrap':[True, False]
                }

# Construct grid search
search = GridSearchCV(clf,\
                      param_grid=param_dist,\
                      cv=StratifiedKFold(y, n_folds=10),\
                      scoring=my_scoring_function)


# Perform search
X = training_data
y = ground_truths
search.fit(X, y)

有没有办法构造 my_scoring_function,只返回“狗”类的预测准确度? make_scorer function 似乎受到限制,因为它只处理每个数据点的基本事实和预测类别。

非常感谢您的帮助!

【问题讨论】:

  • 使用make_scorer有什么问题?看起来您只需要将所有非狗类等同起来并计算准确性。

标签: python machine-learning scikit-learn cross-validation


【解决方案1】:

我错过了 sklearn 文档中的一个部分。

您可以创建一个需要以下输入的函数; model, x_test, y_test,并输出一个介于 0 和 1 之间的值(其中 1 最好),可以用作优化函数。

只需创建函数,应用 model.predict(x_test),然后使用准确度等指标分析结果。

【讨论】:

    猜你喜欢
    • 2017-10-26
    • 2017-03-27
    • 1970-01-01
    • 2016-08-30
    • 2017-04-07
    • 2018-08-21
    • 2020-07-23
    • 2012-08-13
    • 2015-12-17
    相关资源
    最近更新 更多