machine-learning - Python 机器学习数据集中的类名存储在哪里?

标签 machine-learning python scikit-learn

我正在使用 Python 3.6 上的 iris 数据集和 sklearn 来学习机器学习,但我不明白正在检索的类名存储在哪里。在 Iris 中,有 3 个类,每个类包含 50 个观测值。您可以使用多个命令来打印类及其关联的数值:

print(iris.target)
print(iris.target_names)

这将导致输出:

[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2
 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 2 2]
['setosa' 'versicolor' 'virginica']

可以看出,这些类别是 Setosa、Versicolor 和 Virginica。我不明白的是这些类名存储在哪里,或者如何在模型中调用它们。如果对数据或目标使用 shape 命令,结果为 (150,4) 和 (150,),这意味着数据中有 150 个观测值和 4 行,目标中有 150 行。然而,我无法弥合我的思想的差距,不知道这是从哪里来的。

我不明白的是类名应该存储在哪里。如果我为口袋妖怪类型创建了一个全新的数据集,并且有冰、火、水、飞行,我可以在哪里存储这些类型?它们是否也需要是数字,如 iris,0、1、2、3?

最佳答案

Sklearn 使用自定义类型的对象来存储其数据集,这样它们就可以将元数据与原始数据一起存储。

如果加载 iris 数据集

In [2]: from sklearn import datasets

In [3]: iris = datasets.load_iris()

您可以使用type检查对象的类型:

In [4]: type(iris)
Out[4]: sklearn.utils.Bunch

您可以使用dir查看对象内部的属性:

In [5]: dir(iris)
Out[5]: ['DESCR', 'data', 'feature_names', 'target', 'target_names']

然后使用 . 表示法来查看属性本身:

In [6]: type(iris.data)
Out[6]: numpy.ndarray

In [7]: type(iris.target)
Out[7]: numpy.ndarray

In [8]: type(iris.feature_names)
Out[8]: list

如果您想为自己的数据集模仿此结构,则必须定义自己的自定义对象类型来模仿此结构。这将涉及定义您自己的类。

关于machine-learning - Python 机器学习数据集中的类名存储在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49456380/

相关文章:

python - 将模块从 opencv_contrib 添加到 OpenCV

python - sklearn imputer 删除具有缺失值的列

python-3.x - CountVectorizer 中的 fit() 有何意义?

machine-learning - 为caffe添加回归层

machine-learning - 关于感知器的一些问题

machine-learning - 获取pyspark中分类后的所有评价指标

machine-learning - 在 Scikit-Learn 中使用近似最近邻进行分类

用于检查进程是否在 Linux 中挂起的 Python 守护进程

Python、Jinja2 nl2br 和安全性

python - 使用 Scikit-Learn 生成高维数据集