【发布时间】:2018-10-10 16:17:55
【问题描述】:
我正在做一个关于 iris 数据集的教程。在这个过程中,我发现了一段代码,我看不懂:
它由两个ndarrays组成:
iris.target_names 是一个带有目标变量标签的 numpy ndarray:
iris.target_names
>>> array(['setosa', 'versicolor', 'virginica'], dtype='<U10')
clf.predict(test[features]) 是一个带有我预测的编码数字的 numpy ndarray:
clf.predict(test[features])
>>> array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,
1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2],
dtype=int64)
以下代码为我的预测创建了一个带标签的 ndarray:
iris.target_names[clf.predict(test[features])]
>>> array(['setosa', 'setosa', 'setosa', 'setosa', 'setosa', 'setosa',
'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 'setosa',
'setosa', 'setosa', 'versicolor', 'versicolor', 'versicolor', 'versicolor',
'versicolor', 'versicolor', (...), dtype='<U10')
我已经考虑了一段时间,但我不明白它是如何工作的。因为实际上我们通过一个包含三个以上元素的一维数组来索引一个包含三个元素的一维数组,对吧?这怎么行?
如果有人可以帮助我就这个主题提供一些提示,那就太好了。
谢谢,马库斯
【问题讨论】:
-
您正在使用预测的类来索引回原始标签,因此
0,1,2被转换为target_names数组中的序数位置以给出'setosa', 'versicolor', 'virginica' -
就像位置选择:-)
标签: python numpy scikit-learn labeling