Хочу поделиться опытом решения задачи по машинному обучению и анализу данных от Kaggle. Данная статья позиционируется как руководство для начинающих пользователей на примере не совсем простой задачи.
Выборка данных содержит порядка 10000 строк и 15 столбцов.Вот некоторые из параметров:
![](https://habrastorage.org/r/w1560/web/3e2/048/bad/3e2048badd5e45c59115500c0394e4fa.png)
Для правильной работы классификатора необходимо преобразование категориального признака в числовой.На представленных выше данных в глаза сразу бросается два столбца: «Пол» и «Географическое положение». Проведем преобразования:
![](https://habrastorage.org/r/w1560/web/a93/9b4/ac7/a939b4ac7f0a47b5895f248141e280cf.png)
Корреляционная показывает, какие параметры будут влиять на результат. Сразу можно выделить 3 положительные корреляции: «Баланс счета», «Возраст», «Географическое положение».
Для избежания проблем с переобучением разделим наш набор данных:
![](https://habrastorage.org/r/w1560/web/643/754/a3e/643754a3e1e944c7afad6c3cc791cf7f.png)
Точность предсказания составила ~78%, что является неплохим результатом.
Выборка данных
Выборка данных содержит порядка 10000 строк и 15 столбцов.Вот некоторые из параметров:
- Возраст
- Пол
- Количество денежных средств на счету
Задача
- Найти параметры максимально влияющие на отток клиентов.
- Создание гипотезы, предсказывающей отток клиентов банка.
Инструментарий
- pandas
- sklearn
- matplotlib
- numpy
Импорт библиотек
import pandas as pd
from sklearn.cross_validation import train_test_split
from sklearn import svm
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.metrics import mean_squared_error
import numpy as np
from sklearn.naive_bayes import GaussianNB
Загрузка и просмотр данных
dataframe = pd.read_csv("../input/Churn_Modelling.csv")
dataframe.head()
![](https://habrastorage.org/web/3e2/048/bad/3e2048badd5e45c59115500c0394e4fa.png)
Преобразование данных
Для правильной работы классификатора необходимо преобразование категориального признака в числовой.На представленных выше данных в глаза сразу бросается два столбца: «Пол» и «Географическое положение». Проведем преобразования:
dataframe['Geography'].replace("France",1,inplace= True)
dataframe['Geography'].replace("Spain",2,inplace = True)
dataframe['Geography'].replace("Germany",3,inplace=True)
dataframe['Gender'].replace("Female",0,inplace = True)
dataframe['Gender'].replace("Male",1,inplace=True)
Создание корреляционной матрицы
correlation = dataframe.corr()
plt.figure(figsize=(15,15))
sns.heatmap(correlation, vmax=1, square=True,annot=True,cmap='cubehelix')
plt.title('Correlation between different fearures')
plt.show()
![](https://habrastorage.org/web/a93/9b4/ac7/a939b4ac7f0a47b5895f248141e280cf.png)
Корреляционная показывает, какие параметры будут влиять на результат. Сразу можно выделить 3 положительные корреляции: «Баланс счета», «Возраст», «Географическое положение».
Кросс валидация
Для избежания проблем с переобучением разделим наш набор данных:
X_train, X_test, y_train, y_test = train_test_split(
X, Y, test_size=0.4, random_state=0)
Прогноз
clf = GaussianNB()
clf = clf.fit(X_train ,y_train)
clf.score(X_test, y_test)
![](https://habrastorage.org/web/643/754/a3e/643754a3e1e944c7afad6c3cc791cf7f.png)
Точность предсказания составила ~78%, что является неплохим результатом.