Автор оригинала: Chris.
💡 Этот учебник покажет вам Самый простой и простой способ реализации линейной регрессии в Python – использование линейной регрессии с линейной регрессией Scikit-Learn. Я написал этот учебник как часть моей книги Python One-listers Где я представляю, как экспертные кодера много достигают много кода.
Не стесняйтесь в Bookmark и скачать бесплатные халаты Python One-Liner.
Это действительно просто реализовать линейную регрессию с Sklearn (Короче для Scikit-Surve ) Библиотека. Быстро посмотрите на этот фрагмент кода – мы объясним все позже!
from sklearn.linear_model import LinearRegression import numpy as np ## Data (Apple stock prices) apple = np.array([155, 156, 157]) n = len(apple) ## One-liner model = LinearRegression().fit(np.arange(n).reshape((n,1)), apple) ## Result & puzzle print(model.predict([[3],[4]])) # What is the output of this code?
Этот одноклассник использует два библиотека Python: Numpy и Scikit – Учите Отказ Первый – это стандартная библиотека де-факто для численных вычислений (например, матричные операции). Последнее является наиболее всеобъемлющей библиотекой для машинного обучения, которая реализует сотни алгоритмов и методов машинного обучения.
Итак, давайте рассмотрим фрагмент кода шаг за шагом.
Мы создаем простой набор данных трех ценностей: три цена на акции Apple Stock в три дня подряд. Переменная яблоко
Держит этот набор данных как одномерное применение Numpy. Мы также храним длину применения Numpy в переменной n
.
Допустим, цель состоит в том, чтобы предсказать стоимость акций следующих двух дней. Такой алгоритм может быть полезен в качестве ориентира для алгоритмических торговых приложений (используя большие наборы наборов данных).
Для достижения этой цели одноклассник использует линейную регрессию и создает модель через функцию Fit ()
Отказ Но что именно модель?
Фон: Что такое модель?
Думать о Модель обучения машины как черный ящик. Вы положите вещи в коробку. Мы называем вход « функции » и обозначайте их с помощью переменной х
который может быть одно значение или многомерный вектор значений. Затем коробка делает свою магию и обрабатывает ваш вход. Через немного времени вы вернетесь в результате y
Отказ
Теперь есть две отдельные фазы: Этап обучения и фаза вывода Отказ Во время этапа тренировки вы сообщаете своей модели своей «мечтой» вывода y '
Отказ Вы меняете модель, пока она не генерирует вывод вашей мечты y '
Отказ
Когда вы продолжаете рассказывать модели вашей «мечты» выходов для многих разных входов, вы « поезда » модель, используя ваш «Учебные данные» Отказ Со временем модель узнает, какую вывод вы хотели бы получить на определенные выходы.
Вот почему данные настолько важны в 21-м веке: ваша модель будет такой же хорошей, как это только для обучения данных. Без хороших учебных данных оно гарантированно потерпит неудачу.
Так почему же машина изучает такую большую дело в наше время? Основная причина в том, что модели «обобщены», то есть, они могут использовать свой опыт из учебных данных для прогнозирования результатов для совершенно новых входов, которые они никогда раньше не видели. Если модель хорошо обобщает, эти выходы могут быть удивительно точны по сравнению с «реальными», но неизвестными выходами.
Объяснение кода
Теперь давайте деконструируем одноклассницу, которое создает модель:
model = LinearRegression().fit(np.arange(n).reshape((n,1)), apple)
Во-первых, мы создаем новую «пустую» модель, позвонив Linearregression ()
Отказ Как эта модель выглядела?
Каждая линейная регрессионная модель состоит из определенных параметров. Для линейной регрессии параметры называются «коэффициентами», поскольку каждый параметр является коэффициентом в линейном уравнении, сочетающих различные функции ввода.
С этой информацией мы можем пролить свет в наш черный ящик.
Учитывая функции ввода X_1
, x_2
, …, X_K
Отказ Модель линейной регрессии сочетает в себе функции ввода с коэффициентами A_1
С A_2
, …, A_K
Для расчета прогнозируемого вывода y с использованием формулы:
В нашем примере у нас есть только одна функция ввода х
Так что формула становится легче:
Другими словами, наша линейная модель регрессии описывает линию в двумерном пространстве. Первая ось описывает вход х
Отказ Вторая оси описывает выход х
Отказ Линия описывает (линейную) связь между входом и выходом.
Каковы учебные данные в этом пространстве? В нашем случае ввод модели просто принимает индексы дней: [0, 1, 2]
– однажды для каждой цены акций [155, 156, 157]. Положить его по-другому:
- Вход
х = 0
должен вызвать выводy = 155.
- Вход
х = 1
должен вызвать выводy = 156.
- Вход
х = 2
должен вызвать выводy = 157.
Теперь, в какой строке лучше всего подходит для наших учебных данных [155, 156, 157]
?
Вот что вычисляют модель линейной регрессии:
## Data (Apple stock prices) apple = np.array([155, 156, 157]) n = len(apple) ## One-liner model = LinearRegression().fit(np.arange(n).reshape((n,1)), apple) ## Result print(model.coef_) # [1.] print(model.intercept_) # 155.0
Вы можете увидеть, что у нас есть два коэффициента: 1,0 и 155,0. Давайте поставим их в нашу формулу для линейной регрессии:
Давайте построим как в линию, так и на тренировках в том же пространстве:
Идеально подходит! Используя эту модель, мы можем предсказать цену акций на любую цену х
Отказ Конечно, точнее ли это предсказание отражает реальный мир – это еще одна история.
После обучения модели мы используем его для прогнозирования двух в следующих днях. Набор данных Apple состоит из трех значений 155, 156 и 157. Мы хотим знать четвертую и пятую ценность в этой серии. Таким образом, мы предсказываем значения для индексов 3 и 4.
Обратите внимание, что как функция Fit ()
и функция прогнозировать ()
Требуется массив со следующим форматом:
[,
,
…,
Каждое значение данных тренировок является последовательностью значения функций:
= [feature_1, feature_2, …, feature_k]
Опять же, вот наш одноклассник:
model = LinearRegression().fit(np.arange(n).reshape((n,1)), apple)
В нашем случае у нас есть только одна особенность x
. Поэтому мы Reshape Объемный массив на странную виду выглядящую матрицу:
[[155],
[156],
[157]]
Fit ()
Функция принимает два аргумента: входные функции данных тренировки (см. Последний абзац) и «Выходы мечты» этих входов. Конечно, результаты нашей мечты являются реальными ценами на акции Apple. Затем функция повторяет тестирование и настройку различных параметров модели (I.E., Lines), так что разница между предсказанными значениями моделей и «выходами мечты» минимальна. Это называется «Минимизация ошибок» Отказ (Чтобы быть более точным, функция минимизирует разницу в квадрате от прогнозируемых значений модели и «выходы мечты», чтобы выбросы оказали большее влияние на ошибку.)
В нашем случае модель отлично подходит для обучения данных, поэтому ошибка равна нулю. Но часто невозможно найти такую линейную модель. Вот пример учебных данных, которые не могут быть подходящими одной прямой:
from sklearn.linear_model import LinearRegression import numpy as np import matplotlib.pyplot as plt ## Data (Apple stock prices) apple = np.array([157, 156, 159]) n = len(apple) ## One-liner model = LinearRegression().fit(np.arange(n).reshape((n,1)), apple) ## Result print(model.predict([[3],[4]])) # [158. 159.] x = np.arange(5) plt.plot(x[:len(apple)], apple, "o", label="apple stock price") plt.plot(x, model.intercept_ + model.coef_[0]*x, ":", label="prediction") plt.ylabel("y") plt.xlabel("x") plt.ylim((154,164)) plt.legend() plt.show()
В этом случае Fit ()
Функция находит строку, которая минимизирует ошибку в квадрате между данными тренировок и прогнозами, как описано выше.
Куда пойти отсюда?
Вы чувствуете, что вам нужно почистить свои навыки кодирования? Затем присоединитесь к моим бесплатным «курсу по электронной почте Python Eail». Я пришлю вам чис-листы, ежедневные уроки Python и кодовые конкурсы. Это весело!
Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.
Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python одноклассники (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.
Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.
Оригинал: “https://blog.finxter.com/python-linear-regression-1-liner/”