scikit-learn 1.4.2中MLPClassifier无best_validation_score_属性问题咨询
问题原因及解决方案
在scikit-learn 1.4.0及后续版本中,MLPClassifier的早停相关属性发生了命名变更:原best_validation_score_被重命名为best_score_,这是官方为统一API规范做出的调整——让所有支持早停的模型(如SGDClassifier、GradientBoostingClassifier等)都使用一致的best_score_属性存储最佳验证分数,避免不同模型使用差异化的属性名。
你的代码在1.4.2版本中报错,就是因为该版本已移除旧的best_validation_score_属性,替换为best_score_。
修正示例
错误调用(触发AttributeError):
from sklearn.neural_network import MLPClassifier from sklearn.datasets import load_iris X, y = load_iris(return_X_y=True) clf = MLPClassifier(early_stopping=True, random_state=42) clf.fit(X, y) print(clf.best_validation_score_)
正确调用(适配1.4.2版本):
from sklearn.neural_network import MLPClassifier from sklearn.datasets import load_iris X, y = load_iris(return_X_y=True) clf = MLPClassifier(early_stopping=True, random_state=42) clf.fit(X, y) print(clf.best_score_)
如果需要兼容新旧版本,可增加版本判断逻辑:
import sklearn from sklearn.neural_network import MLPClassifier from sklearn.datasets import load_iris X, y = load_iris(return_X_y=True) clf = MLPClassifier(early_stopping=True, random_state=42) clf.fit(X, y) if sklearn.__version__ >= "1.4.0": print(clf.best_score_) else: print(clf.best_validation_score_)
内容的提问来源于stack exchange,提问作者Antonio Piemontese
相关产品推荐
相关产品推荐

