Я должен присвоить категориальным данным метку. Рассмотрим пример радужной оболочки глаза:
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,) target_names: ['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, virginica, virginica] Длина: 150 Категории (3, объект): [setosa, versicolor, virginica]
Попробуем это на другом примере:
# 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 \ategorical.pyc в from_codes (cls, коды, категории, упорядоченные) 459460, если len (коды) и (коды.max ()> = len (категории) или code.min () ‹-1): -> 461 поднять ValueError (« коды должны быть между -1 и «462» len (категории) -1 ») 463
ValueError: коды должны быть от -1 до len (категории) -1
Ты знаешь почему?