python中的鸢尾花决策树
Posted
技术标签:
【中文标题】python中的鸢尾花决策树【英文标题】:Iris decision tree in python 【发布时间】:2021-07-01 12:40:21 【问题描述】:我正在尝试了解决策树,但最终找到了一篇有关决策树的文章。这篇文章的目的是确定一朵花是否是鸢尾花,但我似乎遇到了一些错误,我希望有人能回答我得到两个错误,如下所示:
iris: Bunch iris: inner_f 'tuple' 的实例没有'target' 成员
和
iris: Bunch iris: inner_f 'tuple' 的实例没有'data' 成员
我在 x = iris.data 行和 y = iris.target 行遇到这些错误。
代码如下:
import warnings
warnings.filterwarnings('ignore')
import pandas as pd
from sklearn import datasets
from sklearn.model_selection import train_test_split
#load iris data
iris = datasets.load_iris()
x = iris.data
y = iris.target
d = ["sepal_length":row[0],
"sepal_width":row[1],
"petal_length":row[2],
"petal_width":row[3] for row in x]
df = pd.DataFrame(d) # construct dataframe
df["types"] = y # assign types
df = df.sample(frac=1.0) # random shuffle rows
df.head()
有人知道我为什么会收到这些错误吗?
【问题讨论】:
这段代码对我来说没有产生任何错误。 根据您的sklearn
的版本,return_X_y
有一个参数。请检查您从load.iris()
获得的数据类型。是元组还是数据框?
【参考方案1】:
您的错误消息表明有问题的值 iris
是一个元组,它没有您引用的属性。检查您正在使用的工具的文档;他们应该解释如何将datasets.load_iris()
解压缩到您需要的对象中。
【讨论】:
【参考方案2】:在大多数情况下,我不会过滤警告,因为您可以从警告中获得有用的信息。
因此,sklearn 数据集格式是一个 Bunch,它是一个像字典一样工作的专用容器对象。您可以使用点符号访问它,例如iris.data 或字典符号,例如虹膜['数据']。在这里,不清楚你的机器上的错误是什么,因为我(像其他评论者一样)在 python 3.8.5 中访问 iris.data 或 iris['data'] 没有问题。
我想让你知道几个地方可以改进你的方法:
(1) 不清楚为什么需要构建数据框,因为您可以直接通过调用连接的 numpy 数组上的 train_test_split 来获取所需的样本,或者您可以直接从 numpy 数组中获取索引的随机样本。
(2) 你构建数据框的方法比它需要的更复杂。
import pandas as pd
import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split
# load iris data
iris = datasets.load_iris()
# train test split
X_train, y_train, X_test, y_test = train_test_split(iris.data, iris.target)
# random shuffle of data/target indices
rng = np.random.default_rng()
rng_size = iris.data.shape[0]
idx_sample = rng.choice(np.arange(rng_size), size=rng_size, replace=False)
# simpler way to create dataframe
# concatenate along the columns (axis 1)
# then set the column names in one place
df = pd.concat([pd.DataFrame(iris.data), pd.DataFrame(iris.target)], axis=1)
df.columns = ["sepal_length", "sepal_width", "petal_length", "petal_width", "types"]
【讨论】:
以上是关于python中的鸢尾花决策树的主要内容,如果未能解决你的问题,请参考以下文章