Случайная лесная регрессия не дает 0 или 1 - PullRequest
0 голосов
/ 21 января 2019

В настоящее время я использую RandomForestRegression для Titanic (Kaggle).

%%timeit
model = RandomForestRegressor(n_estimators=200, oob_score=False,n_jobs=1,random_state=42)
model.fit(X,y)
#y_oob = model.oob_prediction_
#print("c-stat:", roc_auc_score(y,model.oob_prediction_))

prediction_regression = model.predict(X_test)
# dataframe with predictions
kaggle = pd.DataFrame({'PassengerId': passengerId, 'Survived': prediction_regression})
# save to csv
kaggle.to_csv('./csvToday/prediction_regression.csv', index=False)

но возвращается не 0 или 1.это дает десятичные точки

892: 0.3163893: 0,07 и т. Д.

Как заставить RandomForestRegression возвращаться как 0 или 1

1 Ответ

0 голосов
/ 21 января 2019

Регрессия - это проблема машинного обучения прогнозирования количества / количества / цены (например, прогнозирование рыночных акций, прогнозирование цен на жилье и т. Д.). Насколько я помню, цель титанического соревнования - предсказать, выживет ли пассажир. Это звучит как проблема двоичной классификации. Если это проблема классификации, вы должны использовать RandomForestClassifier ( docs ).

Итак, ваш код будет выглядеть так:

from sklearn.ensemble import RandomForestClassifier

model = RandomForestClassifier(
    #some parameters
)

model.fit(X_train, y_train)
y_pred = model.predict(X_test)


submit_df = pd.DataFrame({'PassengerId': passengerId, 'Survived': y_pred})
submit_df.to_csv('./csvToday/submission.csv', index=False)

Это ядро ​​ может предоставить вам еще несколько идей.

...