Подтвердить что ты не робот

Pandas ошибка атрибута: нет атрибута 'Factor' found

Я пытаюсь запустить код, предоставленный yhat в своей статье о случайных лесах в Python, но я продолжаю получать следующее сообщение об ошибке:

File "test_iris_with_rf.py", line 11, in <module>
    df['species'] = pd.Factor(iris.target, iris.target_names)
AttributeError: 'module' object has no attribute 'Factor'

код:

from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
import pandas as pd
import numpy as np

iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
print df
print iris.target_names
df['is_train'] = np.random.uniform(0, 1, len(df)) <= .75

df['species'] = pd.Factor(iris.target, iris.target_names)

df.head()
4b9b3361

Ответ 1

В более новых версиях pandas вместо этого Factor называется Categorical. Измените свою линию на:

df['species'] = pd.Categorical.from_codes(iris.target, iris.target_names)

Ответ 2

Категориальные переменные, по-видимому, являются одной из наиболее активных областей разработки в pandas, поэтому я считаю, что она снова изменилась в pandas 0.15.0:

df['species'] = pd.Categorical.from_codes(iris.target, iris.target_names)

(Мне не хватало достаточной репутации, чтобы добавить это как комментарий к Дэвиду Робинсону)

Ответ 3

def factor(series):
    #input should be a pandas series object
    dic = {}
    for i,val in enumerate(series.value_counts().index):
        dic[val] = i
    return [ dic[val] for val in series.values ]