Этот Jupyter Notebook содержит вспомогательные указания для выполнения семинарских и домашних заданий. В течение курса мы будем преимущественно работать в подобных "тетрадках", но может быть иногда будем переключаться на другие среды\средства.
(Я использую Python версии 2.x.x, а не 3.x.x)
Самый простой и надежный способ - воспользоваться готовым дистрибутивом Anaconda, включающий в себе практически все необходимые модули и утилиты, которые нам понадобятся - IPython, NumPy, SciPy, Matplotlib и Scikit-Learn. Просто следуйте указаниям установщика для вашей ОС.
Рекомендую ознакомиться с этим постом - там приводятся различные интересные возможности "тетрадок" о которых вы возможно не знали.
Пишите, ради бога. В нашем случае разница будет минимальна, поэтому код можно легко перевести из одной версии в другую.
Данный курс должен дать вам:
Фундамент будет заложен. А дальше нужна практика и ваша собственная мотивация.
Что желательно уметь делать, будучи DS:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
plt.style.use('ggplot')
plt.rcParams['figure.figsize'] = (16,8)
Чем они отличаются? Соедините 2 таблицы, так, чтобы соблюсти целостность информации.
Найдите количество детей, рождающихся 6, 13 и 20 числа каждого месяца с учетом дня недели.
Выделяется ли как-то пятница 13?
Загрузите датасет с информацией о характеристиках вина и его качестве.
Какие признаки больше всего влияют на целевую переменную?
Создайте новый столбец quality_cat
, которая будет иметь значение "good"
если quality > 5
и "bad"
- иначе.
Нарисуйте гистрограммы признака alcohol в группах с quality_cat == "good"
и quality_cat == "bad"
.
Можете ли вы придумать правило для классификации вина на хорошее и плохое по рисунку выше? Пусть это будет нашей первой моделью)
Напишите функцию brute_clf_train()
которая бы перебирала пороговое значение по признаку alcohol
и находило бы "оптимальное" (кстати, что значит оптимальное?)
Напишите функцию brute_clf_predict()
которая бы по значению признака alcohol
и найденному выше порогу говорила какое качество у вина.
А заодно выводила бы количество "ошибок" на текущем наборе данных
Проверим, как обобщается наша модель на другие данные.
Загрузите файл 1 и файл 2 в папку с тетрадкой. С помощью функции loadtxt
в модуле numpy
загрузите табличные данные одного из файлов. Присвойте y = D[:,0] а X = D[:, 1:].
Сейчас мы воспользуемся одной магической формулой и построим модель линейной регрессии. Откуда эта формула берется мы узнаем на следующих занятиях.
Модель линейной регрессии в матричном виде выглядит так: $\hat{y} = X\hat{\beta}$, где
$$ \hat{\beta} = (X^T X)^{-1} X^T y $$Остатки модели рассчитываются как $$ \text{res} = y - \hat{y} $$
Итак, еще раз:
# load data
D = np.loadtxt('tutorial_dataset_1.csv',
skiprows=1,
delimiter=',')
# Write your code here
#
#
#