我对 gridsearchCV 中的评分有疑问。 我有一个随机森林分类器,我正在使用 gridsearchcv 对其参数进行超调。
cross_val = sklearn.model_selection.RepeatedKFold(n_splits = 5, n_repeats = 5, random_state = 0)
grid_search = sklearn.model_selection.GridSearchCV(RandomForestClassifier(),
param_grid=param_grid, cv = cross_val, scoring='f1_macro')
grid_search.fit(X, y)
当我运行它时,我可以获得一个数据框,其中包含所有折叠和重复的 f1 分数:
results = grid_search.cv_results_
results = pd.DataFrame(results)
但是,因为我的研究很有趣,所以我想知道每个类的分类精度,就像运行 sklearn.metrics.classification_report 时一样。
我已经尝试过分别运行相同的交叉验证并获得每个折叠的分类报告。然而,准确度与网格搜索交叉验证的评分表中的准确度略有不同,我也没有得到。
for train, test in grid_search.cv.split(X,y):
# Create subsets of data using K-fold cross validation for each iteration
X_tr, X_t= X[train], X[test]
y_tr, y_t = y[train], y[test]
# Create Random Forest Regressor
model_grid.fit(X_tr, y_tr)
y_pred = model_grid.predict(X_t)
#Calculate accuracy
report_dict = sklearn.metrics.classification_report(y_pred, y_t, output_dict=True)
report = sklearn.metrics.classification_report(y_t, y_pred)
print(report)
如果有人能帮助我,我将不胜感激! 提前致谢
您的
for
循环似乎是实现这一目标的正确方法。RandomForestClassifier
:来修复
random_state
的“随机性”,您应该会得到一致的结果
grid_search = sklearn.model_selection.GridSearchCV(RandomForestClassifier(random_state = 0),
param_grid=param_grid, cv = cross_val, scoring='f1_macro')