Вы слышали о Титанике Kaggle-Challenge? Это известная задача машинного обучения, в которой участники должны предсказать вероятность выживания пассажиров «Титаника» на основе различных характеристик. В этой статье мы будем использовать Sklearn для подбора модели, ее оценки и выполнения разработки функций для повышения ее точности.

Для начала давайте загрузим набор данных из Kaggle. Вы можете найти его здесь: https://www.kaggle.com/c/titanic/data. Когда у вас есть набор данных, мы можем начать с кода.

Во-первых, нам нужно импортировать необходимые модули:

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

Затем давайте загрузим данные в фрейм данных Pandas:

df = pd.read_csv('titanic.csv')

Теперь мы можем начать с предварительной обработки данных. Отбросим столбцы, которые не имеют отношения к нашей модели:

df = df.drop(['PassengerId', 'Name', 'Ticket', 'Cabin'], axis=1)

Мы также можем указать недостающие значения в столбце «Возраст»:

imputer = SimpleImputer(strategy='mean')
df['Age'] = imputer.fit_transform(df[['Age']])

Теперь давайте выполним некоторые функции проектирования. Мы можем создать новую функцию под названием «FamilySize», добавив столбцы «SibSp» и «Parch»:

df['FamilySize'] = df['SibSp'] + df['Parch']

Затем мы можем создать новую функцию под названием «IsAlone», которая показывает, путешествовал ли пассажир один или нет:

df['IsAlone'] = df['FamilySize'].apply(lambda x: 1 if x==0 else 0)

Теперь мы можем разделить данные на наборы для обучения и тестирования:

X_train, X_test, y_train, y_test = train_test_split(df.drop(['Survived'], axis=1), df['Survived'], test_size=0.2, random_state=42)

Давайте масштабируем числовые столбцы с помощью StandardScaler:

scaler = StandardScaler()
X_train[['Age', 'Fare']] = scaler.fit_transform(X_train[['Age', 'Fare']])
X_test[['Age', 'Fare']] = scaler.transform(X_test[['Age', 'Fare']])

Наконец, мы можем подобрать модель логистической регрессии:

model = LogisticRegression()
model.fit(X_train, y_train)

И оцените его точность на тестовом наборе:

y_pred = model.predict(X_test)
accuracy_score(y_test, y_pred)

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

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