首页 > 解决方案 > 如何获取数据的特征名称?

问题描述

我对包含在 python 环境中的 iris 数据集使用了以下说明

iris_data=load_iris()
feature_names = iris_data.feature_names 
k= tree.export_text(model.estimators_[i],feature_names)

我得到了这个形状的规则

"""\
|--- petal length (cm) <= 2.35
|   |--- class: 0.0
|--- petal length (cm) >  2.35
|   |--- petal width (cm) <= 1.65
|   |   |--- class: 1.0
|   |--- petal width (cm) >  1.65
|   |   |--- petal width (cm) <= 1.75
|   |   |   |--- sepal length (cm) <= 5.80
|   |   |   |   |--- class: 2.0"

但是当我尝试对外部数据集使用相同的指令时,我收到此错误 AttributeError: 'DataFrame' object has no attribute 'feature_names'
当我尝试通过此指令获取功能名称时

fnm = list(dataset.columns.values.tolist())
k= tree.export_text(model.estimators_[i],fnm)

并使用同一行到expert_text 我得到以下错误文件“C:\Anaconda3\lib\site-packages\sklearn\tree_export.py”,第886行,在export_textlen(feature_names)))ValueError:feature_names必须包含3个元素,得到 53

标签: pythontreetagsextractrules

解决方案


该方法sklearn.datasets.load_iris返回一个sklearn.utils.Bunch具有feature_names属性的对象。

您的新数据集是一个pandas.DataFrame具有columns属性的对象。


推荐阅读