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

Machine learning Python中机器学习数据集中的类名存储在哪里?,machine-learning,python,scikit-learn,Machine Learning,Python,Scikit Learn,我正在使用Python3.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

我正在使用Python3.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']
正如我们所看到的,这些类别是刚毛、花色和维吉尼亚。我不明白的是这些类名存储在哪里,或者在模型中如何调用它们。如果对数据或目标使用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

如果您希望为自己的数据集模拟此结构,则必须定义自己的自定义对象类型以模拟此结构。这需要定义您自己的类。

您使用的是什么软件?不同的软件可能会以不同的方式来实现这一点。如果您没有对自己的数据集进行模拟,那么指定类的方法会是什么?它们是否是最后一列中的数字值,如1、2、3、4,然后让sklearn将它们作为y值指向它们?@GSarala在sklearn中,您提供的功能是一个numpy数组(n,k),类是另一个数组(n,)。你不需要任何特殊的包装。无论如何,标签不会传递给模型。。我的课程在最后一列。我在记事本文件中制作了一个翻译表,所以我知道1是UNCA,2是acc,3是好的,4是非常好的。然后,我用genfromtext将csv读入numpy数组,使用行lastcolumn=csv[:,6]只获取数组的最后一列。这是否意味着我在numpy数组中正确地命名了您指定的类?它只有最后一列。它的输出是[1.1.1…1.3.4]