我想在 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/