【发布时间】:2018-05-31 04:18:45
【问题描述】:
我必须为分类数据分配一个标签。让我们以 iris 为例:
import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
iris = load_iris()
print "targets: ", np.unique(iris.target)
print "targets: ", iris.target.shape
print "target_names: ", np.unique(iris.target_names)
print "target_names: ", iris.target_names.shape
它将被打印出来:
目标:[0 1 2] 目标:(150L,)目标名称:['setosa' 'versicolor' 'virginica'] target_names: (3L,)
为了生成所需的标签,我使用 pandas.Categorical.from_codes:
print pd.Categorical.from_codes(iris.target, iris.target_names)
[setosa, setosa, setosa, setosa, setosa, ..., 维吉尼亚, 维吉尼亚, [virginica, virginica, virginica] 长度:150 类别(3,对象): [setosa, versicolor, 弗吉尼亚]
让我们在另一个例子上试一试:
# I define new targets
target = np.array([123,123,54,123,123,54,2,54,2])
target = np.array([1,1,3,1,1,3,2,3,2])
target_names = np.array(['paglia','gioele','papa'])
#---
print "targets: ", np.unique(target)
print "targets: ", target.shape
print "target_names: ", np.unique(target_names)
print "target_names: ", target_names.shape
如果我再次尝试转换标签中的分类值:
print pd.Categorical.from_codes(target, target_names)
我收到错误消息:
C:\Users\ianni\Anaconda2\lib\site-packages\pandas\core\categorical.pyc 在 from_codes(cls, 代码, 类别, 有序) 459 460 如果 len(codes) 和 (codes.max() >= len(categories) 或 codes.min() 461 raise ValueError("代码必须介于 -1 和 " 第462章 第463章
ValueError: 代码需要介于 -1 和 len(categories)-1 之间
你知道为什么吗?
【问题讨论】:
标签: python pandas categorical-data python-iris