Я пытаюсь запустить Gradient Boosting Classifier - PullRequest
0 голосов
/ 06 ноября 2018
from sklearn.ensemble import GradientBoostingRegressor

gbrt = GradientBoostingRegressor(max_depth=2, n_estimators=3, learning_rate=1.0)
gbrt.fit(X, y)

import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
X_train, X_val, y_train, y_val = train_test_split(X, y)

gbrt = GradientBoostingRegressor(max_depth=2, n_estimators=120)
gbrt.fit(X_train, y_train)

errors = [mean_sqaured_error(y_val, y_pred)
     for y_pred in gbrt.staged_predict(X_val)]
bst_n_estimators = np.argim(errors)

gbrt_best = GradientBoostingRegressor(max_depth = 2, n_estimators = bst_n_estimators)
gbrt_best.fit(X_train, y_train)

Когда я запускаю этот код, я получаю следующую ошибку

ValueError: could not convert string to float: '<=50K'

Я использую следующие данные

https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data

После повышающего классификатора я хочу проверить повышение производительности в области под кривой, но сначала необходимо исправить вышеуказанную ошибку

1 Ответ

0 голосов
/ 06 ноября 2018

В зависимости от предоставленного вами кода и предварительного просмотра данных ValueError возникает из-за того, что вы вводите строковые значения / категориальные данные в модель GBM. Рекомендуем сначала выполнить горячее кодирование (http://scikit -learn.org / stable / modules / generate / sklearn.preprocessing.OneHotEncoder.html ) или сначала pd.get_dummies (https://pandas.pydata.org/pandas-docs/stable/generated/pandas.get_dummies.html),, а затем установить модель.

Для кривой ROC, пожалуйста, проверьте: http://scikit -learn.org / stable / auto_examples / model_selection / plot_roc.html # sphx-glr-auto-examples-model-selection-plot-roc-py . Пример должен быть довольно простым для того, что вам нужно.

df = pd.read_csv(['PLEASE SPECIFY YOUR FILE PATH'], thousands = ',')
df.columns = ['V' + str(col) for col in df.columns]
list_cat = ['V1', 'V3', 'V4', 'V5', 'V6', 'V7', 'V8', 'V9', 'V13', 'V14']
list_target = ['V0']
df = pd.get_dummies(df, columns = list_cat, drop_first = True)
X = df.loc[:, df.columns != list_target[0]].values
y = df[list_target].values
print(df.shape)
df.head()

import numpy as np
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

gbrt = GradientBoostingRegressor(max_depth=2, n_estimators=3, learning_rate=1.0)
gbrt.fit(X, y)

enter image description here enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...