XGBoost: обучение и предсказание
Пришло время создать вашу первую модель XGBoost! Как показал Сергей в видео, для построения моделей XGBoost можно использовать уже знакомую вам парадигму .fit() / .predict() из scikit-learn — библиотека xgboost совместима с API scikit-learn!
В этом упражнении вы будете работать с данными об оттоке клиентов. Набор данных содержит вымышленную информацию из приложения для поездок: поведение пользователей в течение первого месяца использования приложения в ряде вымышленных городов, а также сведения о том, пользовались ли они сервисом через 5 месяцев после регистрации. Данные уже загружены в DataFrame с именем churn_data — изучите их в оболочке Shell!
Ваша цель — используя данные за первый месяц, предсказать, останутся ли пользователи приложения активными клиентами на отметке в 5 месяцев. Это типичная постановка задачи прогнозирования оттока. Для этого вы разделите данные на обучающую и тестовую выборки, обучите небольшую модель xgboost на обучающей выборке и оцените её качество на тестовой, вычислив точность.
Библиотеки pandas и numpy уже импортированы как pd и np, а функция train_test_split — из sklearn.model_selection. Кроме того, массивы признаков и целевой переменной уже созданы как X и y.
Это упражнение является частью курса
Экстремальный градиентный бустинг с XGBoost
Инструкции к упражнению
- Импортируйте
xgboostкакxgb. - Создайте обучающую и тестовую выборки так, чтобы 20% данных использовалось для тестирования. Задайте
random_stateравным123. - Создайте экземпляр
XGBoostClassifierс именемxg_cl, используяxgb.XGBClassifier(). Укажитеn_estimatorsравным10иobjectiveравным'binary:logistic'. Пока не беспокойтесь о том, что это означает — вы познакомитесь с этими параметрами позже в курсе. - Обучите
xg_clна обучающей выборке (X_train, y_train), используя метод.fit(). - Предскажите метки тестовой выборки (
X_test) с помощью метода.predict()и нажмите Отправить ответ, чтобы вывести точность.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Import xgboost
____
# Create arrays for the features and the target: X, y
X, y = churn_data.iloc[:,:-1], churn_data.iloc[:,-1]
# Create the training and test sets
X_train, X_test, y_train, y_test= ____(____, ____, test_size=____, random_state=123)
# Instantiate the XGBClassifier: xg_cl
xg_cl = ____.____(____='____', ____=____, seed=123)
# Fit the classifier to the training set
____
# Predict the labels of the test set: preds
preds = ____
# Compute the accuracy: accuracy
accuracy = float(np.sum(preds==y_test))/y_test.shape[0]
print("accuracy: %f" % (accuracy))