Ответ 1
В более новых версиях pandas вместо этого Factor
называется Categorical
. Измените свою линию на:
df['species'] = pd.Categorical.from_codes(iris.target, iris.target_names)
Я пытаюсь запустить код, предоставленный 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()
В более новых версиях pandas вместо этого Factor
называется Categorical
. Измените свою линию на:
df['species'] = pd.Categorical.from_codes(iris.target, iris.target_names)
Категориальные переменные, по-видимому, являются одной из наиболее активных областей разработки в pandas, поэтому я считаю, что она снова изменилась в pandas 0.15.0:
df['species'] = pd.Categorical.from_codes(iris.target, iris.target_names)
(Мне не хватало достаточной репутации, чтобы добавить это как комментарий к Дэвиду Робинсону)
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 ]