【问题标题】:Where are class names stored in a machine learning dataset in Python?Python 机器学习数据集中的类名存储在哪里?
【发布时间】:2018-09-02 12:39:06
【问题描述】:

我正在使用带有 sklearn 的 Python 3.6 上的 iris 数据集来学习机器学习,但我不明白要检索的类名存储在哪里。在 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?

【问题讨论】:

  • 你用的是什么软件?不同的软件可能会以不同的方式做到这一点。

标签: machine-learning python scikit-learn


【解决方案1】:

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

如果你加载虹膜数据集

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

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

【讨论】:

  • 如果您不为自己的数据集模仿,那么指定类的方法是什么?它们会是最后一列中的 1、2、3、4 之类的数值,然后让 sklearn 将它们作为 y 值指向它们吗?
  • @GSarala 在 sklearn 中,您将功能作为 numpy 数组 (n, k) 和类作为另一个数组 (n,)。您不需要为它们提供任何特殊包装。标签无论如何都不会传递给模型。
  • Here is the CSV file I have. It's a safe link。我的课程在最后一列。我在记事本文件中做了一个翻译表,所以我知道 1 是 unacc,2 是 acc,3 很好,4 很好。然后,我使用 genfromtext 将 csv 读入 numpy 数组,使用行 lastcolumn = csv[:,6] 仅获取数组的最后一列。这是否意味着我按照您的指定在 numpy 数组中正确命名了我的类?它只有最后一列。打印它的输出是 [1. 1. 1. ... 1. 3. 4.]
猜你喜欢
  • 2017-04-20
  • 1970-01-01
  • 2021-09-15
  • 2017-05-16
  • 1970-01-01
  • 1970-01-01
  • 2018-03-09
  • 2016-05-25
  • 2020-05-25
相关资源
最近更新 更多