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

非常感谢您的帮助!

最佳答案

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

您可以创建一个需要以下输入的函数;对模型x_test,y_test进行建模,并输出介于0和1之间的值(最好为1),该值可用作优化函数。

只需创建函数,应用model.predict(x_test),然后使用诸如准确性之类的指标来分析结果。

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

10-12 21:18