Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Margo_УИРС.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆

Часть 3. Реализация

Рассмотрим работу модели градиентного бустинга, решив задачу прогнозирования сахарного диабета с использованием языка программирования Python и библиотеки XGBoost. Набор данных для обучения, который предоставляет Университет Джонса Хопкинса, состоит из объектов, каждый из которых имеет 8 признаков и одну целевую переменную.

Объектами являются женщины в возрасте от 21 года индийского наследия Пима. Признаками объектов являются:

1) Количество беременностей

2) Плазменные концентрации глюкозы в тесте на допустимое отклонение глюкозы

3) Диастолическое артериальное давление

4) Толщина кожи в области трицепса

5) Количество инсулина

6) Индекс массы тела

7) Diabetes pedigree function

8) Возраст

Целевой переменной является метка класса:

0 — прогноз, на предрасположенность к заболеванию сахарным диа- бетом в ближайшие 5 лет,

1 — прогноз, на не предрасположенность к заболеванию сахарным диабетом в ближайшие 5 лет.

Загрузим наборы данных и подготовим их для обучения и оценки качества с помощью модели XGBoost.

import numpy

import xgboost from sklearn

import cross_validation from sklearn. metrics

import accuracy_score

# load data dataset = numpy. loadtxt («pima-indians-diabetes. csv», delimiter=««,)

Необходимо разделить столбцы исходного набора данных на обучающую выборку и целевую переменную.

# split data into X and y

X = dataset [:,0:8]

Y = dataset [:,8]

Также необходимо разбить обучающую выборку на две части: первая будет участвовать в обучении модели, а вторая (отложенная выборка) — в оценке качества обученной модели.

# split data into train and test sets

seed = 7 4

test_size = 0.33

X_train, X_test, y_train, y_test = cross_validation. train_test_split (X, Y, test_size=test_size, random_state=seed)

Так как целевая переменная принимает конечное число значений (0 или 1), мы имеем дело с задачей классификации. Для решения подобных задач в библиотеке XGBoost есть класс XGBClassifier, который позволяет решать задачи классификации при помощи метода градиентного бустинга. Метод fit данного класса принимает в качестве входных параметров обучающую выборку и целевую переменную и обучает модель по входным данным.

# fit model no training data model = xgboost. XGBClassifier () model. fit (X_train, y_train)

После того как модель обучена, можно делать предсказания по отложенной выборке. Для того чтобы сделать предсказание по отложенной выборке, необходимо ее передать на вход в функцию predict объекта XGBClassifier. Выходным значением функции predict является вектор размерности (1, количество объектов в выборке, которая подается на вход), который содержит в себе вероятности отнесения объекта с индексом , к классу 0. Чтобы получить валидные метки класса (0 или 1) необходимо округлить полученные вероятности до 0 или 1.

# make predictions for test data y_pred = model. predict (X_test) predictions = [round (value) for value in y_pred]

Для оценки качества построенной модели используется метод accuracy_score из библиотеки sklearn. На вход он принимает полученные предсказания и действительные метки классов, а на выходе мы получаем долю правильно классифицированных объектов.

# make predictions for test data y_pred = model. predict (X_test) predictions = [round (value) for value in y_pred]

Accuracy: 77.95%

В итоге мы получили качество 77.95%, что является хорошим качеством, учитывая тот факт, что мы имеем в наличии небольшой набор данных.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]