Я изучал исследовательский анализ данных и машинное обучение в Копенгагенской бизнес-школе в осеннем семестре 2021 года. Этот проект был первым обязательным заданием моего основного курса Data Science. Используя Python, он содержит манипулирование данными, исследование, неконтролируемое и контролируемое машинное обучение.

Код здесь: GitHub

Набор данных был опубликован на Kaggle компанией UCI Machine Learning 5 лет назад. Данные были получены в ходе опроса учащихся курсов математики и португальского языка в средней школе. Он содержит много интересной социальной, гендерной и учебной информации о студентах. Вы можете использовать его для некоторых EDA или попытаться предсказать итоговые оценки учащихся.

Все атрибуты наборов данных student-mat.csv (курс математики) и student-por.csv (курс португальского языка) см. на странице наборов данных:



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

Библиотеки и предварительная обработка данных

# Exploratory Data Analysis
import pandas as pd
import numpy as np
# Visualization
import seaborn as sns
import matplotlib.pyplot as plt
# Machine Learning
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
# Supervised Machine Learning : Classification
from sklearn.linear_model import LogisticRegression 
from sklearn import metrics
from sklearn.metrics import log_loss
from sklearn.metrics import classification_report
# Supervised Machine Learning : Regression
from sklearn.linear_model import LinearRegression 
from xgboost import XGBRegressor
from sklearn.ensemble import RandomForestRegressor
# Unsupervised Machine Learning: Clustering
from sklearn.decomposition import PCA 
from sklearn.cluster import KMeans 
import altair as alt

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

Мы также выполнили некоторые задачи предварительной обработки, чтобы убедиться, что у нас есть чистые данные для работы:

  • Проверка данных и проверка формы данных: эмпирическое правило не менее 500 наблюдений и 10 признаков
  • Логические переменные кодируются в 0 или 1
  • Удаление дубликатов и значений NaN с использованием матрицы отсутствия

Исследуйте переменные: анализ и визуализация

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

Большинство оценок (> 60%) относятся к средней корзине.
Мы видим, что потребление алкоголя в рабочие дни (Dalc), по-видимому, оказывает значительное негативное влияние на итоговые оценки учащихся. Тем не менее, влияние употребления алкоголя в выходные дни более тонкое, особенно в умеренном количестве.
Студенты потребляют больше алкоголя в выходные дни, что обнадеживает. Потребление алкоголя явно выше у мужчин, а также немного более значимо для школы Мусиньо да Силвейра.

Контролируемое машинное обучение: классификация

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

Можем ли мы классифицировать итоговые оценки учащихся с помощью двоичных данных?

Мы хотели классифицировать конечную производительность с помощью целевого поля G3_binned. Во-первых, нам нужно было определить, стандартизировать и пометить переменные:

X = student[[‘school’,’sex’,’age’, ‘address’, ‘famsize’, ‘Pstatus’, ‘Medu’,’Fedu’,’trave ltime’, ‘studytime’, ‘failures’,‘schoolsup’, ‘famsup’, ‘paid’, ‘activities’, ‘famrel’, ‘freetime’, ‘goout’, ‘Dalc’, ‘Walc’, ‘health’,‘nursery’, ‘higher’, ‘internet’, ‘romantic’, ‘absences’]]
y = student['G3_binned']

Затем мы разделили данные на обучающие и тестовые наборы и подогнали нашу мультиклассовую логистическую модель. Модель демонстрирует скромную производительность со средним баллом 72%.

Глядя на отчет о классификации, мы видим, что модель хорошо работает на средних бинах, но не на высоких и низких бинах. Эта производительность может быть связана с размером набора данных, который не позволяет модели хорошо вписываться в небольшие ячейки.

Контролируемое машинное обучение: регрессия

Мы использовали три модели линейной регрессии для прогнозирования непрерывной переменной.

Можем ли мы предсказать окончательную успеваемость учащихся с несколькими переменными?

С помощью метода .corr() мы определили 5 основных переменных, положительно коррелирующих с производительностью G3. Затем мы использовали эти переменные для прогнозирования этого целевого поля.

Из трех использованных моделей наиболее эффективна МНК со средней оценкой 87 % на тестовых данных.
Регулярная диаграмма показывает, что модель более эффективна для прогнозирования высоких оценок.

Неконтролируемое машинное обучение: кластеризация

Мы использовали кластеризацию K-средних, чтобы разделить данные на непересекающиеся подмножества на основе всех данных.

Можем ли мы разделить данные на три конкретных кластера?

Мы масштабировали и преобразовывали данные с помощью компонентов PCA. Затем мы создали 3 кластера и визуализировали результат с помощью seaborn.

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

# Inspect the clusters
print(student.loc[k_means.labels_ == 0, student.columns[25:33]].describe())
print(student.loc[k_means.labels_ == 1, student.columns[25:33]].describe())
print(student.loc[k_means.labels_ == 2, student.columns[25:33]].describe())

Первый кластер с самыми высокими показателями подагры и потребления алкоголя имеет самые низкие оценки успеваемости (‹ 9).

Третий кластер с наименьшими показателями подагры и потребления алкоголя также имеет низкую успеваемость (‹ 10).

Второй кластер, в котором показатели подагры и потребления алкоголя несколько выше, чем в третьем кластере, имеет самые высокие оценки эффективности (> 13).

Заключение

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

Если вы хотите продолжить изучение темы, вот список некоторых курсов от DataCamp, которые могут помочь вам в вашем путешествии по машинному обучению с Python:

Обучение без учителя в Python

Python — Введение в контролируемое обучение

Python — моделирование дерева решений

Заботиться!