Попытка преобразовать категориальные данные в цифры c и запустить RandomForestClassifier - PullRequest
0 голосов
/ 09 января 2020

Я тестирую этот код.

df1 = df[['Group', 'Sector', 'Cat2', 'Cat3', 'Cat4', 'Cat5', 'Cat6', 'Industry', 'Market', 'Price']].copy()
df1 = df1[:100000]
df1.shape

df1 = df1.fillna(0)


df1 = pd.get_dummies(df1)


X = df1.drop(['Price'], axis=1)
y = df1['Price']

from sklearn.model_selection import train_test_split
# Split dataset into training set and test set
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3) # 70% training and 30% test


#Import Random Forest Model
from sklearn.ensemble import RandomForestClassifier

# Create the model with 100 trees
model = RandomForestClassifier(n_estimators=100, 
                               bootstrap = True,
                               max_features = 'sqrt')
# Fit on training data
model.fit(X_train, y_train)

Я получаю сообщение об ошибке в этой строке: model.fit(X_train, y_train)

Это моя ошибка: ValueError: Unknown label type: 'continuous'

Моя установка такая: у меня много полей в 'df', и я копирую несколько в 'df1'. Все они категоричны: 'Group', 'Sector', 'Cat2', 'Cat3', 'Cat4', 'Cat5', 'Cat6', 'Industry', 'Market'

Это цифра c: 'Price'

Я использую горячее кодирование для преобразования категориальных элементов в цифры c и число c (цена) остается без изменений. Что-то не так с этой настройкой или все нормально? Просто ищу руководство и, надеюсь, решение здесь. Спасибо.

1 Ответ

2 голосов
/ 09 января 2020

Вы используете классификатор для прогнозирования непрерывных цен. Когда речь идет о метке , sklearn означает цель, поэтому проблема не в вашем X, а в y. Что вам нужно, это sklearn.ensemble.RandomForestRegressor. Благодаря этому вы сможете прогнозировать непрерывные значения, такие как price.

Используйте это вместо:

from sklearn.ensemble import RandomForestRegressor

model = RandomForestRegressor(n_estimators=100, 
                               bootstrap = True,
                               max_features = 'sqrt')
# model.fit(X, y...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...