admin管理员组文章数量:1650772
运行刘建平老师博客中,关于决策树DecisionTreeClassifier实例的代码运行出现:ValueError: Length of feature_names, 4 does not match number of features, 2的错误。
经过一番排查,发现错误原因是因为独热编码的问题。
错误就出在
feature_names=iris.feature_names,
feature_names这一参数的作用是:使决策树图中的各个小块可以显示其对应的特征名
这一参数要求参数值必须与被分析的数据集中的特征名(也叫属性名)对应,数量一致且顺序一致。
我打印了feature_names ,发现feature_names 的个数一共有4个。分别为:
['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
难怪,系统会报错。系统要求的feature的个数为2个,但我却传进去了4个参数。所以我更改后的代码如下所示:
dot_data = tree.export_graphviz(clf, out_file=None,
# 这一句是我更改过的代码
feature_names=['sepal length','sepal width'],
class_names=iris.target_names,
filled=True,
rounded=True,
special_characters=True)
刘建平老师有关决策树实例的博客指路:https://wwwblogs/pinard/p/6056319.html
刘建平老师有关决策树实例的代码(纠错版):
import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets
from sklearn.tree import DecisionTreeClassifier
# 仍然使用自带的iris数据
iris = datasets.load_iris()
X = iris.data[:, [0, 2]] # 特征数据
y = iris.target # 标签数据
# print(X)
# print(y)
# 训练模型,限制树的最大深度4
clf = DecisionTreeClassifier(max_depth=4)
# 拟合模型
clf.fit(X, y)
# 画图
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.1),
np.arange(y_min, y_max, 0.1))
Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
# 散点图和不同类别的分界线图共同绘制在一张图上
plt.contourf(xx, yy, Z, alpha=0.4) # plt.contourf用来画出不同分类的边界线
plt.scatter(X[:, 0], X[:, 1], c=y, alpha=0.8)
plt.show()
# 接着我们可视化我们的决策树
from IPython.display import Image
from sklearn import tree
import pydotplus
print(iris.feature_names)
print(iris.target_names)
dot_data = tree.export_graphviz(clf, out_file=None,
feature_names=iris.feature_names,
# feature_names=['sepal length','sepal width'],
class_names=iris.target_names,
filled=True,
rounded=True,
special_characters=True)
graph = pydotplus.graph_from_dot_data(dot_data)
Image(graph.create_png())
# 保存图像
graph.write_png("DecisionTree实例.jpeg")
本文标签: 解决方法featurenameslengthValueErrorFeatures
版权声明:本文标题:ValueError: Length of feature_names, 4 does not match number of features, 2 的解决方法 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1729531747a1204895.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论