【发布时间】:2021-12-30 13:49:37
【问题描述】:
我对 MLPClassifier 执行了网格搜索。
为什么分类报告中的准确率 (0.76) 与数据帧中的最高拆分测试分数(在本例中为 0.80)不同?
代码:
X, y = make_classification(n_samples=200, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, random_state=1)
param_grid = {'learning_rate_init': [1e-5,1e-4], 'hidden_layer_sizes': [(50,),(50,50)],'max_iter':[100], 'activation':['logistic','relu']}
print("Finding optimal Hyper-parameters within the specified grid...")
grid = GridSearchCV(MLPClassifier(),param_grid,verbose=0, cv=5, scoring='accuracy')
a = grid.fit(X_train,y_train)
grid_predictions = a.best_estimator_.predict(X_test)
cm = sklearn.metrics.confusion_matrix(y_test, grid_predictions)
disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=grid.classes_)
disp.plot(cmap='Blues')
plt.show()
print(sklearn.metrics.classification_report(y_test,grid_predictions, digits=6))
print("BEST PARAMETERS FOUND:",format(grid.best_params_))
print("BEST - Mean Accuracy:",format(round(grid.cv_results_['mean_test_score'][grid.best_index_],6)))
print("BEST - Standard Deviation Accuracy:",format(round(grid.cv_results_['std_test_score'][grid.best_index_],3)))
print("BEST - Mean Time:{}s".format(round(grid.cv_results_['mean_fit_time'][grid.best_index_],3)))
print("BEST - Standard Deviation Time:{}s".format(round(grid.cv_results_['std_fit_time'][grid.best_index_],3)))
pd.DataFrame(grid.cv_results_)
【问题讨论】:
-
应该报告的是 mean 分数,而不是任何单个拆分中的分数(例如您在此处突出显示的
split0);所以这里 是 一个问题(即为什么混淆矩阵显示的准确度为 0.76,而不是 0.646667 的平均值),但不是你要问的那个...... -
请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。
标签: python machine-learning scikit-learn neural-network