python - SciKit-Learn 中的自定义评分器 - 允许针对特定类别进行网格搜索优化

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

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

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

'dog', 'cat', 'mouse'

# 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,以便仅返回“dog”类的预测准确性? make_scorer function似乎有局限性,因为它只处理每个数据点的基本事实和预测类别。

非常感谢您的帮助!

最佳答案

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

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

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

关于python - SciKit-Learn 中的自定义评分器 - 允许针对特定类别进行网格搜索优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28303522/

相关文章:

python - 如何从 setUpClass 跳过所有测试

machine-learning - 此场景的文本分类技术

python - scikit-learn:将多输出决策树转换为 CoreML 模型

javascript - 从 Javascript 脚本 block 中提取变量

python - 使用 numpys np.fromfunction 评估 Python lambda 函数

python - python中按行对数组进行排序

python - 为什么我的 TensorFlow 神经网络的 XOR 精度只有 0.5 左右?

python - “numpy.ndarray”对象没有属性 'columns'

python - StandardScalar Fit_Transform 出错

python - 使用 SHAP 值解释 LogisticRegression 分类