Линейная регрессия в Python

Линейная регрессия в Python

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

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

Информация в наших статьях  направлена прежде всего на практическое применение знаний, поэтому в нём мы не собираемся только обсуждать понятия – вы сможете сразу использовать их в программном коде. Тем более, что Python – довольно простой для изучения язык программирования. Вам будет намного проще, если вы уже имеете понятие об операторе цикла, условном операторе и других основных методах программирования. Очень неплохо, если вы писали программы и уже имеете некоторый опыт в использовании NumPy и Matplotlib, но всё это не критично. Примеры программного кода очень короткие, чтобы сразу было понятно, что он делает.

Конечно мы не ставим вам оценки, так что вам нужен какой-то выработать свой критерий, чтобы понимать, усвоили вы прочитанный материал или нет. Например  если вы сможете вывести уравнение, которое мы рассматривали для примера, и сможете написать код, не пересматривая его ещё раз, – значит, вы усвоили материал и можете двигаться дальше.

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

Интенция  рубрики о Python  и  линейная регрессия

  • Сначала, мы расскажем вам, какими вопросами занимается машинное обучение и что такое линейная регрессия.
  • Потом мы разберём один из примеров. Мы воспользуемся линейной регрессией, чтобы показать истинность закона Мура. Закон Мура гласит, что число транзисторов в чипе удваивается каждые два года. Это продемонстрирует, насколько широка применимость линейной регрессии в решении задач окружающей нас действительности, так как закон Мура является одним из известнейших следствий компьютерного прогресса.
  • После того, как мы ознакомимся с этим вопросом, мы дадим вам все инструменты, необходимые для его успешного решения.

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

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

  • Далее мы усложним задачу путём введения дополнительных входных переменных.

В законе Мура мы имели только одну входную переменную – время, и действительно поразительно, что это всё, что нам нужно для предсказания прогресса технологий! Сравните это, например, с анализом изображений, где приходится иметь дело с тысячами и даже миллионами входных переменных. Конечно же, мы не будем перескакивать с анализа одной переменной на анализ миллиона.

Мы покажем вам, как перейти от модели с одной переменной до модели с двумя переменными. Поняв, как это происходит, вам будет очень просто создать модели с любым их количеством.

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

Мы так же предоставим вам основные инструменты, необходимые для перехода на следующий уровень. В качестве заключения хотелось бы сказать, что  пакет Pandas делает Python мощным инструментом для анализа данных. и является неплохой альтернативой Excel при работе с большими объемами данных. Эта тема слишком глубока, чтобы в данной статье подробно говорить  В дальнейшем,мы планируем написать серию статей в которых будет показана вся мощь данного пакета.

Машинное обучение. Роль линейной регрессии

Original source: Williams, E.J. (1959). Regression Analysis. John Wiley \& Sons, New York. Page 43, Table 3.7

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

Вы должны знать основы дифференциального счисления, чтобы уметь найти минимум функции, знать, как найти производную, как находить частные производные и для чего всё это нужно. Вы также должны владеть основами языка Python, такими как оператор цикла, условный оператор или переменные-массивы. Вы также не обойдётесь без знания векторов, матриц и правил операций над ними из курса линейной алгеброй. Кроме того, вы должны быть знакомы с теорией вероятности, так как вам не обойтись без знания таких понятий, как гауссово, оно же нормальное, распределение, среднее значение или отклонение.

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

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

В машинном обучении есть две большие категории, два класса алгоритмов, которые мы будем обсуждать.

  • Первый класс называется контролируемым обучением. Это когда между входными данными и конечным результатом есть прямая зависимость, которая хороша известна. В этом случае изучаемые данные можно представить как пары х и у, и каждое значение х можно использовать для прогноза значения у.
  • Второй класс – неконтролируемое обучение. В этом случае у нас нет известной взаимозависимости, и всё, что нам остаётся, – это пытаться изучить структуру имеющихся данных. Если она существует, конечно. В качестве примера такой ситуации мы можем представить себе большую кипу каких-то документов. Что мы можем о них сказать? Разве что, возможно, во многих из них, в которых встречается слово «физика», встретится и слово «Эйнштейн».

Линейная регрессия относится к контролируемому обучению. У нас есть ряд значений данных х и у. Нанеся их на график, мы можем затем рассматривать каждое значение х как входную переменную, в результате которой на выходе получаем некоторое исходящее значение у.

Контролируемое обучение, в свою очередь, также делится на две большие категории – классификацию и регрессию.

  • Классификация пытается определить категорию входных данных или наличие или отсутствие их какой-то особенности – например, пытается распознать написанную цифру или определить, содержится ли на изображении кот
  • Регрессия же вычисляет определенное число или вектор – например, завтрашнюю температуру или цену на акции Google

Рассмотрим теперь собственно линейную регрессию, которая, как уже отмечалось, относится к классу контролируемого обучения. Действительно, здесь мы имеем зависимость между х и у, причём исходящее значение у является числом. Многие регрессию называют также «линией наилучшего соответствия», так как если нанести на график точки данных х и у и провести соответствующим образом прямую, то получится линия наилучшего соответствия. Линейная регрессия является одним из способов это сделать.

Линейная регрессия в Python

Целевая функция линейной регрессионной модели:

y=f(x,b) + \varepsilon, E(\varepsilon) = 0

 

(, где   — параметры модели,  — случайная ошибка модели ) имеет вид:

f (x,b) =b_{{0}} + b_{{1}}x_{{1}} + ... + b_{{k}}x_{{k}}

 

где   — параметры (коэффициенты) регрессии,   — регресоры (факторы модели), k — количество факторов модели.

Определение одномерной модели и её решение

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

Итак, начнём с постановки задачи. Начнём с учебного примера. Нам дан ряд входных данных x1, x2, …, xN и исходящих y1, y2, …, yN. Нанесём их на координатную плоскость. У нас получится множество точек. Возможно, они совсем не будут складываться в прямую, и вы не захотите использовать линейную регрессию для их анализа. Но если вы всё-таки решитесь, то вам понадобится найти то, что иногда называют линией наилучшего соответствия. Это будет прямая. Из школьного курса математики вы помните, как определяется прямая:

y=ax+b.

Обозначим через ŷ предсказываемое значение исходящей переменной, в отличие от обычного у, которое дано нам в качестве результата эксперимента. Таким образом, нам надо найти значения коэффициентов a и b.

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

Итак, для начала определим ошибку нашей функции, для чего рассчитаем сумму отклонений фактического значения от расчётного:

 

\sum_{i=1}^{N} = (y_i - \widehat y_i)^2

Но так делать нельзя. Предположим, что в одном случае фактическое значение отличается от расчётного на 5 единиц, а в другом – на -5 единиц. Тогда эти два показателя просто компенсируют друг друга и ошибка окажется равной нулю, что, очевидно, не так. Нам нужно, чтобы погрешность была всегда положительной. Каким образом мы можем это сделать? Возвести разницу в квадрат. Очевидно, тогда любая разница окажется положительной:

\sum_{i=1}^{N} = (y_i - \widehat y_i)^2

 

Тут вы можете спросить: а почему тогда не использовать модуль вместо квадрата? Замечательный вопрос. Но, как вы увидите позже, для решения нам понадобится производная, которую проблематично взять из модуля функции.

Итак, у нас есть функция ошибок, а вы хотите свести её к минимуму. Используем для этого производную, а вычислив её, приравняем к нулю. Поскольку у нас два параметра – a и b – нам придётся взять частные производные. Можно быть уверенным, что минимум есть, так как функция квадратичная и у неё есть минимум.

Итак, что мы имеем? Мы имеем функцию ошибок:

\sum_{i=1}^{N} = (y_i - \widehat y_i)

 

И мы должны найти значения, при которых частные производные равны нулю:

 \frac{dE}{da} = 0, \frac{dE}{db} = 0.

 

Этим и займёмся. Частная производная по а равна:

\frac{\partial E}{\partial a} = \sum_{i=1}^{N} 2 (y_{i}-\widehat y_{i})

 

Поскольку ŷi=axi+b, мы можем записать уравнение в следующей форме, приравняв сразу к нулю:

\frac{\partial E}{\partial a} = \sum_{i=1}^{N} 2 (y_{i}-\widehat y_{i})

\sum^_{i}y_{i}x_{{i}} = \sum^_{i}(ax_{i}+b)x_{{i}}=a\sum^_{i}{x_{i}}^{2}+b\sum^_{i}^_X_{{i}}

 

Теперь найдём вторую производную:

\frac{\partial E}{\partial b} = 0,

\frac{\partial E}{\partial b} = \sum_{i=1}^{N} 2 (y_{i}-\widehat y_{i}),

 

Поскольку

^\sum_{i}y_{{i}}=^\sum_{i} 2 (y_{i} - \widehat y_{i}),

 

то всё выражение равно

a ^\sum_{i} x_{{i}} + bN,

 

Разделим это выражение на количество наблюдений N:

\frac{\Sigma_i y_i}{N} = a \frac{\Sigma_{i=1}^{N} x_{i}} {N} + b.

 

Если мы запишем, что ȳ = ax + b

то получим окончательное решение в виде:

a = \frac{\Sigma x_{i}y_{i} - \overline y\Sigma x_{i}}{\Sigma x_{i} ^{2} - \overline x\Sigma x_{i}} },

b = \frac{\overline y\Sigma x_{i}^{2} - \overline x\Sigma y_{i}x_{i}}{\Sigma x_{i}^{2} - \overline x\Sigma x_{i}} }.

 

Итак, мы имеем два уравнения с двумя неизвестными. Вы можете решить их методом подстановки или с помощью матричного счисления. Лично мы предпочитаем метод подстановки. Решите эту систему самостоятельно в качестве упражнения.

Обратите внимание, что знаменатели обеих выражений одинаковы. Мы можем использовать это обстоятельство при написании кода на языке Python.

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

Данная тема подробно разобрана нами в статье.

Постановка многомерной задачи и её решение

Поговорим о многомерной линейной регрессии, также называемой множественной линейной регрессией. Начнём с постановки задачи, определим целевую функцию, а затем выведем решение.

Итак, на этот раз у нас так же есть массив входных переменных:

X = x1, x2, …, xN.

Но теперь каждое наше xi – это не число, а вектор размерности D.

Например, мы можем заняться изучением цены акций компании в зависимости от отзывов о ней в Twitter, а кроме того – в зависимости от отзывов о ней же на LinkedIn.

В этом случае каждое наше входящее xi будет представлено вектором размерности два. При этом исходящие данные Y = y1, y2, …, yN по-прежнему остаются скалярными величинами.

Как правило, входные данные X представляются в виде таблицы или матрицы с N строк и D столбцов, то есть размерности NxD. Каждый ряд – это результаты одного наблюдения. Каждый элемент матрицы xij – это наблюдение i при размерности j, где i=1..N и j=1..D.

При множественной линейной регрессии

Ŷ = w1x1 + w2x2 + … + wDxD.

Если мы перепишем всё это в векторной форме, где:

векторная форма

можно записать:

ŷ = wTX.

Необходимость транспонирования w обусловлена тем, что умножение матриц возможно лишь при совпадении их размерностей. В случае умножения матрицы размерности 1xD на матрицу Dx1 получаем нужную нам скалярную величину размерности 1×1.

Напомню, что в случае простой линейной регрессии мы, кроме того, имели и свободный член b, характеризовавший точку пересечения искомой прямой с осью y. В данном случае мы его можем его безболезненно убрать, и вот почему. Мы просто вводим новую переменную x0 и устанавливаем её значение, равное единице:

Ŷ = w0 + w1x1 + … = w0x0 + w1x1 + … = wTX.

Итак, продолжим нахождение решения. Целевая функция остаётся той же, что и раньше. Единственная разница в том, что ŷ теперь выглядит чуть по-другому:

E = \sum_{i=1}^{N}(y_{i} - \widehat y_{{i}})^2 = \sum^_{i=1}^ {N} (y_{i} - w^{T}x_{i})^2.

 

Теперь всё тоже по-прежнему. Мы должны найти частные производные и приравнять их к нулю. Таким образом, мы должны найти D производных и получить D уравнений с D неизвестными:

\frac{\partial E}{\partial w_j} = \sum_{i=1}^{N} 2 (y_i - w^2 x_i)(-\frac{d(w^T x_i))}{d w_j}).

 

Поскольку

wTxi = w0xi0 + … + wjxij + ,,, + wDxiD,

то получаем:

\frac{d(w^T x_i)}{d w_j} = x_i_j.

Следовательно:

\frac{\partial E}{\partial w_j} = \sum_{i=1}^{N} 2 (y_i - w^T x_i) x_i_j = 0,

\sum_{i=1}^{N} y_i x_i_j = \sum_{i=1}^{N} (w^T x_i) x_i_j.

В обоих частях уравнения стоят скалярные числа. Мы можем переписать уравнение в матричной форме

xijTy = wT(XTxij).

Что очень важно – проверять размерность матриц, так как, как вы знаете, по правилам линейной алгебры перемножать можно лишь матрицы с совпадающими внутренними размерностями. Проверим и мы. В левой части транспонированный вектор-столбец xij имеет размерность 1xN, матрица исходящих результатов y – размерность Nx1, следовательно, их произведение является скалярной величиной размерности 1×1.

Далее, в правой части wT имеет размерность 1xD, матрица XT – размерность DxN, а xijNx1, поэтому произведение XT и xij имеет размерность Dx1, а общее произведение – опять-таки размерность 1×1. Так что пока что всё правильно – левая часть является скаляром, и правая часть тоже.

Перепишем наше уравнение полностью в матричной форме.

XTy = wT(XTX).

Как вы помните, в таких вещах очень важно проверять размерность, поэтому давайте проверим всё ещё раз. В левой части матрица XT имеет размерность DxN, матрица y – размерность Nx1, а их произведение имеет размерность Dx1. В правой части wT имеет размерность 1xD, а произведение в скобках – DxN на NxD, так что общая размерность правой части составляет 1xD.

А вот это проблема. Почему так получилось? Дело в том, что после транспонирования матрицы X у нас получается вектор-столбец, тогда как в правой части – вектор-строка. Чтобы всё было правильно, мы должны ещё раз транспонировать правую часть. Как вы понимаете, при транспонировании мы всё меняем местами, поэтому итоговый результат получится в виде:

[wT(XTX)]T = (XTX)w.

После транспонирования получим размерность Dx1. Перепишем ещё раз наше уравнение, откуда уже легко находится искомое w.

XTy = (XTX)w,

w = (XTX)-1XTy.

Это и есть решение для множественной линейной регрессии.

Что любопытно, в программном коде Python есть специальные функции для решения уравнений вида Ax=b. Поэтому при программировании мы обозначим:

A=(XTX), x=w  и b=XTy.

Чуть позже в других наших статьях вы увидите, как именно мы будем реализовывать это решение в коде.

Хотим отметить, что  данная тема подробно разобрана нами в статье.

Примеры линейной регрессии

Теперь давайте рассмотрим пару примеров линейной регрессии из окружающего нас мира.

Один из примеров, который нам пришёл в голову, – это взаимозависимость между количеством часов, проведённых в спортзале в течение недели, и индексом массы тела. Другой пример – прямая зависимость между оценкой, которую получит ученик, и количеством часов занятий в школе.

В этих примерах мы можем быстро понять, что от чего зависит. Но в общем случае необходимо проявлять осторожность, чтобы правильно определить причинно-следственную связь. В нашем случае совершенно очевидно, что чем больше вы тренируетесь в спортзале, тем более здоровыми вы будете и тем лучшим будет ваш индекс массы. Единственное, что тут можно уточнить, – это найти линию наилучшего соответствия и тем точнее определить взаимозависимость одной величины от второй.

Но так бывает не всегда. Пусть и в другом рассматриваемом примере мы нашли линию наилучшего соответствия и обнаружили, что две переменные коррелируют друг с другом. Но это ещё не значит, что одно действие вызывает другое. Например, количество часов занятий в школе и ваши оценки могут показывать взаимосвязь друг с другом, но, возможно, этому есть какая-то третья причина – например, просто ваши родители заставляли вас больше учиться дома.

Введение в проблему закона Мура

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

Прежде всего мы должны выяснить, есть ли взаимозависимость между нашими величинами. Сейчас мы покажем, как линейная регрессия доказывает знаменитый закон информатики – закон Мура. Закон Мура гласит: количество транзисторов в интегральной микросхеме удваивается примерно через каждые два года:

T0=A0; T1=2*A0; T2= 2*2*A0; …; Tn=2nA0.

Подождите, скажете вы. Причём тут линейная регрессия? Разве это не увеличение по экспоненте?

Отличный вопрос! И впрямь, удвоение величины через каждые два года – это действительно экспоненциальное увеличение. Компьютеры действительно становятся всё более мощными, причём, если вы обратили внимание, мощность возрастает не просто постоянными  темпами, а лавинообразно – так, сейчас ваш смартфон мощнее, чем многие ноутбуки 10 лет назад!

Ну, и как же тогда использовать линейную регрессию? Фокус в том, что мы будем считать не количество транзисторов, а темпы их роста. Получается очень даже линейная регрессия:

log(Tn)=log(A0)+log(2)*n

Линейная регрессия в Python

Поместив по оси х время,  а логарифм числа транзисторов – по оси у, мы можем решать поставленную задачу.

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

Наша цель – помочь вам наглядно, в геометрической форме, увидеть и понять идею линейной регрессии, а также научиться творчески применять линейную регрессию для решения задач окружающего мира – таких, как закон Мура.

Если вы решили заняться самостоятельной работой.

После того, как вы научитесь реализовывать одномерную линейную регрессию в программном коде и рассчитывать среднеквадратическое отклонение, чтобы доказать правильность найденной линии наилучшего соответствия, вы сможете совершенно самостоятельно решить эту задачу. Данные взяты из Википедии: Количество транзисторов указано во втором столбце, годы – в третьем.

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

Краткий обзор значимых вопросов линейной регрессии и машинного обучения

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

Кое-какие вопросы мы не рассматривали в этой статье, хотя они связаны с использованием линейной регрессии в полную силу.

Во-первых, это тема ошибки обобщения и учебных и проверочных наборов данных. Суть которого состоит в том, что при оценке модели имеющиеся в наличии данные разбиваются на k частей. Затем на k−1 частях данных производится обучение модели, а оставшаяся часть данных используется для проверки. Процедура повторяется k раз; в итоге каждая из k частей данных используется для проверки. Таким образом мы можем найти среднее значение и стандартное отклонение для k разных ошибок в качестве меры точности нашей модели, что показывает, насколько мы можем быть уверенными в модели.

Следующее – стандартизация. Представьте себе, что в нашей линейной регрессионной модели одна входящая переменная принимает значения от нуля до единицы, а другая – от 0 до 1000. Окончательная ошибка будет смещена в сторону второй переменной. Как правило, в таком случае мы вычитаем среднее значение, а затем делим на стандартное отклонение для каждого входящего столбца данных, так что преобразованные данные имеют среднее значение, равное нулю, и стандартное отклонение, равное единице. Этот процесс ещё называется нормализацией.

Следующее, о чём мы хотим упомянуть – регуляризация. Данные, с которыми мы работали, – это только цветочки. В действительности данные гораздо сложнее, и вы легко можете оказаться в ситуации, когда большинство ваших входных данных находятся в диапазоне от -1 до 1, и есть несколько данных, имеющих значение, скажем, миллион. Такие точки называются «холмами». Согласно идее минимизации ошибки, линейная регрессия будет толкать нашу линию наилучшего соответствия ближе к этим холмам и прочь от остальных данных в соответствии с математической линией лучшего соответствия.

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

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

Практика в использовании полученных знаний

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

Вообще, по нашему мнению, люди делятся в этом вопросе на два типа:

  1. Первый – это когда вы заинтересовались машинным обучением в целом и хотите использовать его для обработки данных. Тогда достаточно уже одной теории, чтобы вам было интересно. Для вас увлекательны уже сами алгоритмы моделирования, и вы хотите узнать больше.
  2. Второй тип – когда вас интересует конкретное практическое применение. Например, вы медик и хотели бы знать, как коррелируются два сделанных медицинских анализа.

Тем не менее мы обнаружили, что на самом деле существует и третий тип людей. Это люди, которые хотят применить теорию на практике, но не знают, к чему её приложить. Если вы пока что не нашли ничего для себя интересного, попытайтесь посмотреть новости, зайти в библиотеку или заняться чем-либо ещё, что стимулирует ваше творчество.

Бесплатный доступ  к базам  данных

Итак:

  1. Первое – соберите данные для работы в сфере, которую вы бы хотели исследовать и измерить корреляцию.
  2. Второе – загрузите данные и напишите код, не забывая разделить данные на учебные и проверочные.
  3. Третье – посмотрите, не можете ли вы использовать одни переменные для прогнозирования других.
  4. Четвёртое – оцените точность модели на учебных и проверочных данных.
  5. Пятое – изобразите графически зависимость зависимой переменной от аргумента и выполните простую одномерную линейную регрессию. Какая из моделей даёт лучший коэффициент детерминации?
  6. Шестое – определите, сколько переменных вам в действительности нужно, чтобы получить лучший коэффициент детерминации на проверочных данных. Не забывайте, что вы можете добавлять по одной переменной, пока добавление переменной улучшает значение коэффициента детерминации учебного набора.

Большую часть из вышеперечисленного вы прочтете в  рубрике Linear Regression in Python, так что самые самостоятельные из вас, надо полагать, уже делают это.

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

По нижеуказанной ссылке содержатся данные специально для линейной регрессии. Имеются данные о систолическом кровяном давлении, коэффициенты преступности и фильмы.

На правительственных сайтах также есть много данных, включающие финансовые, данные переписи о состоянии здоровья, о сельском хозяйстве и многом другом:

Frontpage

https://data.gov.in

https://open.canada.ca

Вы можете даже найти свои данные в интернете, если у вас есть собственные мысли по этому поводу. По нашему мнению, запросы библиотек Python и BeautifulSoup окажутся очень полезными для этого дела.

Не забывайте, что помимо регрессии и классификации существует ещё и контролируемое и неконтролируемое обучение.

Удачи в сфере изучения обработки данных!

Понравилась статья? Поделить с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: