决策树代码中accuracy_score报‘Expected array-like...got None’错误如何修复?
问题修复方案
核心问题分析
你遇到的错误本质是accuracy_score的参数中有一个为None,大概率是前序代码的模型实例化或预测步骤出错,导致y_pred未正确生成(变为None)。结合你的代码,主要存在两个关键问题:
修复步骤
补全必要的库导入
你的代码缺少scikit-learn核心模块的导入,这会导致函数/类未定义,后续逻辑执行失败。需要在代码最顶部添加:from sklearn.datasets import make_classification from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import accuracy_score修正决策树类名
scikit-learn中用于分类任务的决策树类是DecisionTreeClassifier,而非你写的DecisionTree。错误的类名会导致模型无法正确实例化,后续的fit和predict调用都会失效,最终y_pred变为None。修改模型实例化代码:clf = DecisionTreeClassifier(max_depth=4, criterion='gini')
修复后的完整代码
from sklearn.datasets import make_classification from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import accuracy_score X, y = make_classification(n_features=2,n_redundant=0,n_samples=400, random_state=17) X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.3,random_state=17) clf = DecisionTreeClassifier(max_depth=4, criterion='gini') clf.fit(X_train, y_train) y_pred = clf.predict(X_test) prob_pred = clf.predict_proba(X_test) accuracy = accuracy_score(y_test,y_pred) print(f"模型准确率:{accuracy}")
额外验证建议
如果修改后仍有问题,可以在计算准确率前添加以下代码,确认y_test和y_pred的有效性:
assert y_test is not None, "y_test 未正确生成" assert y_pred is not None, "y_pred 未正确生成"
内容的提问来源于stack exchange,提问作者Floda
相关产品推荐
相关产品推荐

