Читаем 120 практических задач полностью

– Задача: Комбинация нескольких моделей для повышения точности.

Ансамблевые методы объединяют несколько моделей для улучшения точности предсказаний по сравнению с использованием одной модели. В этом примере мы рассмотрим два популярных ансамблевых метода: Bagging и Boosting.

Ансамблевые методы

1. Bagging (Bootstrap Aggregating):

– Использует несколько копий одного и того же алгоритма обучения, обученных на различных подвыборках данных.

– Пример: Random Forest, который состоит из множества решающих деревьев.

2. Boosting:

– Построение серии моделей, каждая из которых исправляет ошибки предыдущей.

– Пример: AdaBoost, Gradient Boosting.

Применение ансамблевых методов

1. Bagging: Random Forest

Random Forest состоит из множества решающих деревьев, обученных на различных подвыборках данных. Каждое дерево дает свой прогноз, а итоговый прогноз определяется путем голосования (классификация) или усреднения (регрессия).

```python

from sklearn.datasets import load_iris

from sklearn.model_selection import train_test_split

from sklearn.ensemble import RandomForestClassifier

from sklearn.metrics import accuracy_score

# Загрузка данных

data = load_iris

X = data.data

y = data.target

# Разделение на обучающую и тестовую выборки

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Обучение модели Random Forest

rf_model = RandomForestClassifier(n_estimators=100, random_state=42)

rf_model.fit(X_train, y_train)

# Прогнозирование и оценка точности

y_pred = rf_model.predict(X_test)

accuracy = accuracy_score(y_test, y_pred)

print(f'Точность модели Random Forest: {accuracy:.4f}')

```

2. Boosting: Gradient Boosting

Gradient Boosting строит серию деревьев, где каждая последующая модель пытается исправить ошибки предыдущих моделей.

```python

from sklearn.ensemble import GradientBoostingClassifier

# Обучение модели Gradient Boosting

gb_model = GradientBoostingClassifier(n_estimators=100, random_state=42)

gb_model.fit(X_train, y_train)

# Прогнозирование и оценка точности

y_pred = gb_model.predict(X_test)

accuracy = accuracy_score(y_test, y_pred)

print(f'Точность модели Gradient Boosting: {accuracy:.4f}')

```

Ансамблевые методы в комбинации: Voting Classifier

Voting Classifier объединяет предсказания нескольких моделей и принимает решение на основе голосования.

```python

from sklearn.ensemble import VotingClassifier

# Создание ансамбля из нескольких моделей

voting_model = VotingClassifier(

estimators=[

('rf', rf_model),

('gb', gb_model)

],

voting='soft' # 'hard' для мажоритарного голосования

)

# Обучение ансамблевой модели

voting_model.fit(X_train, y_train)

# Прогнозирование и оценка точности

y_pred = voting_model.predict(X_test)

accuracy = accuracy_score(y_test, y_pred)

print(f'Точность ансамблевой модели Voting Classifier: {accuracy:.4f}')

```

Пример с использованием Keras и TensorFlow

Подготовка данных

```python

import tensorflow as tf

from tensorflow.keras.datasets import mnist

from tensorflow.keras.utils import to_categorical

# Загрузка данных MNIST

(X_train, y_train), (X_test, y_test) = mnist.load_data

X_train = X_train.reshape((X_train.shape[0], 28, 28, 1)).astype('float32') / 255

X_test = X_test.reshape((X_test.shape[0], 28, 28, 1)).astype('float32') / 255

# Преобразование меток в категориальный формат

y_train = to_categorical(y_train, 10)

y_test = to_categorical(y_test, 10)

```

Построение моделей

```python

from tensorflow.keras.models import Sequential

from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense

def create_model:

model = Sequential([

Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),

MaxPooling2D((2, 2)),

Conv2D(64, (3, 3), activation='relu'),

MaxPooling2D((2, 2)),

Flatten,

Dense(64, activation='relu'),

Dense(10, activation='softmax')

])

model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

return model

# Создание и обучение нескольких моделей

models = [create_model for _ in range(3)]

for model in models:

model.fit(X_train, y_train, epochs=5, batch_size=64, validation_split=0.1)

```

Ансамблирование моделей

```python

import numpy as np

def ensemble_predict(models, X):

predictions = [model.predict(X) for model in models]

return np.mean(predictions, axis=0)

# Прогнозирование и оценка точности

y_pred = ensemble_predict(models, X_test)

y_pred_classes = np.argmax(y_pred, axis=1)

y_test_classes = np.argmax(y_test, axis=1)

accuracy = np.mean(y_pred_classes == y_test_classes)

print(f'Точность ансамблевой модели: {accuracy:.4f}')

```

Пояснение:

1. Bagging: Random Forest:

– Обучение множества решающих деревьев на различных подвыборках данных и объединение их предсказаний.

2. Boosting: Gradient Boosting:

– Построение серии моделей, каждая из которых исправляет ошибки предыдущей.

3. Voting Classifier:

– Объединение предсказаний нескольких моделей с использованием голосования.

4. Ансамбль с использованием Keras:

Перейти на страницу:

Похожие книги

1917–1920. Огненные годы Русского Севера
1917–1920. Огненные годы Русского Севера

Книга «1917–1920. Огненные годы Русского Севера» посвящена истории революции и Гражданской войны на Русском Севере, исследованной советскими и большинством современных российских историков несколько односторонне. Автор излагает хронику событий, военных действий, изучает роль английских, американских и французских войск, поведение разных слоев населения: рабочих, крестьян, буржуазии и интеллигенции в период Гражданской войны на Севере; а также весь комплекс российско-финляндских противоречий, имевших большое значение в Гражданской войне на Севере России. В книге используются многочисленные архивные источники, в том числе никогда ранее не изученные материалы архива Министерства иностранных дел Франции. Автор предлагает ответы на вопрос, почему демократические правительства Северной области не смогли осуществить третий путь в Гражданской войне.Эта работа является продолжением книги «Третий путь в Гражданской войне. Демократическая революция 1918 года на Волге» (Санкт-Петербург, 2015).В формате PDF A4 сохранён издательский дизайн.

Леонид Григорьевич Прайсман

История / Учебная и научная литература / Образование и наука
1221. Великий князь Георгий Всеволодович и основание Нижнего Новгорода
1221. Великий князь Георгий Всеволодович и основание Нижнего Новгорода

Правда о самом противоречивом князе Древней Руси.Книга рассказывает о Георгии Всеволодовиче, великом князе Владимирском, правнуке Владимира Мономаха, значительной и весьма противоречивой фигуре отечественной истории. Его политика и геополитика, основание Нижнего Новгорода, княжеские междоусобицы, битва на Липице, столкновение с монгольской агрессией – вся деятельность и судьба князя подвергаются пристрастному анализу. Полемику о Георгии Всеволодовиче можно обнаружить уже в летописях. Для церкви Георгий – святой князь и герой, который «пал за веру и отечество». Однако существует устойчивая критическая традиция, жестко обличающая его деяния. Автор, известный историк и политик Вячеслав Никонов, «без гнева и пристрастия» исследует фигуру Георгия Всеволодовича как крупного самобытного политика в контексте того, чем была Древняя Русь к началу XIII века, какое место занимало в ней Владимиро-Суздальское княжество, и какую роль играл его лидер в общерусских делах.Это увлекательный рассказ об одном из самых неоднозначных правителей Руси. Редко какой персонаж российской истории, за исключением разве что Ивана Грозного, Петра I или Владимира Ленина, удостаивался столь противоречивых оценок.Кем был великий князь Георгий Всеволодович, погибший в 1238 году?– Неудачником, которого обвиняли в поражении русских от монголов?– Святым мучеником за православную веру и за легендарный Китеж-град?– Князем-провидцем, основавшим Нижний Новгород, восточный щит России, город, спасший независимость страны в Смуте 1612 года?На эти и другие вопросы отвечает в своей книге Вячеслав Никонов, известный российский историк и политик. Вячеслав Алексеевич Никонов – первый заместитель председателя комитета Государственной Думы по международным делам, декан факультета государственного управления МГУ, председатель правления фонда "Русский мир", доктор исторических наук.В формате PDF A4 сохранен издательский макет.

Вячеслав Алексеевич Никонов

История / Учебная и научная литература / Образование и наука