Часто мы встречаем эти два ключевых слова в разделе «Машинное обучение - регрессия» и «Классификация». Мы сохраним классификацию для последующих частей… в этой части мы исследуем линейную регрессию (практическое занятие).

Я слышал, что линейная регрессия из области статистики… ???

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

Непрофессиональная интерпретация линейной регрессии

Линейная регрессия - это линейная модель; это означает, что это модель, которая предполагает линейную зависимость между входными переменными (x) и единственной выходной переменной (y). В более общем плане мы можем сказать, что (y) можно вычислить из линейной комбинации входных переменных (x).

Когда есть только одна входная переменная (x), метод просто называется Простая линейная регрессия. Когда присутствует несколько входных переменных, мы заимствуем термин из статистики: Множественная линейная регрессия.

Итак, без лишних слов, давайте приступим к нашей реализации линейной регрессии на Python:

Требования:

1. Python установлен на вашем компьютере (желательно 64-бит и версия 3.6)

2. Scikit-learn (эта библиотека, пожалуй, лучшая для построения моделей машинного обучения)

3. Numpy (эта библиотека используется для относительно легкого выполнения научных расчетов)

4. Jupyter Notebook (эта библиотека помогает в интерактивных вычислениях)

Примечание. Мы не строим модель с нуля, а используем библиотеку scikit-learn, потому что я твердо убежден, что концепция «изобретать колесо» не подходит для кодов производственного уровня и что scikit-learn доработан на протяжении многих лет, что упростило реализацию и отладку.

Приступим:

  1. После установки вышеуказанных библиотек перейдите в командную строку и введите:

Фрагмент кода:

блокнот jupyter

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

3. Щелкните новое раскрывающееся меню и выберите «Python 3».

4. Должно открыться новое окно с одной ячейкой, как показано ниже:

5. Начнем с импорта библиотек. Щелкните ячейку и введите следующий фрагмент кода:

Фрагмент кода:

импортировать панд как pd

импортировать numpy как np

импортировать matplotlib.pyplot как plt

импортировать seaborn как sns

% matplotlib встроенный

Примечание. Две указанные выше библиотеки «matplotlib» и «seaborn» являются библиотеками визуализации, и вы можете принять это как личную задачу, установив эти библиотеки.

Нажмите Shift + Enter, чтобы выполнить jupyter-cell.

6. Затем мы импортируем набор данных, используя всем известную библиотеку pandas (Загрузите набор данных отсюда: https://drive.google.com/uc?export=download&id=1aQXXedCJuMBqmIJA3R9IRc0WPop1zWrI) .

Введите следующий код:

Фрагмент кода:

dataset = pd.read_csv («Электронная коммерция Customers.csv»)

dataset.head ()

Как вы можете видеть выше, команда отображает ваш полный набор данных. Это поможет вам составить следующий план атаки!

7. Чтобы визуализировать связь между продолжительностью членства и потраченной годовой суммой, введите следующий код:

Фрагмент кода:

sns.scatterplot (x = «Продолжительность членства», y = «Годовая сумма расходов», data = набор данных)

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

9. Введите следующий код, чтобы извлечь значения из этих двух столбцов и преобразовать их в массив numpy.

Фрагмент кода:

y = набор данных [«Израсходованная сумма за год»]

X = набор данных [[‘Сред. Продолжительность сеанса »,« Время в приложении »,« Время на веб-сайте »,« Продолжительность членства »]]

10. Введите следующий код, чтобы увидеть форму переменных X и y:

Фрагмент кода:

X.shape

y.shape

11. Мы замечаем, что обе переменные X и y являются массивами numpy и имеют по 500 строк. Пришло время разделить набор данных на обучающий набор и тестовый набор. Для этого введите следующий код:

Фрагмент кода:

из sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0.20, random_state = 0)

12. В приведенном выше фрагменте кода мы разделили X на X_train и X_test. Аналогичная процедура была проделана с переменной y. Test_size установлен на 0.20, что означает, что я выделил 20% обеих строк переменных X и y для X_test и y_test соответственно.

13. Теперь наш следующий шаг - импортировать модель линейной регрессии из библиотеки scikit-learn, которая будет выполнять наши новые прогнозы. Для этого введите следующий код:

Фрагмент кода:

из sklearn.linear_model import LinearRegression

14. Теперь, когда мы импортировали нашу модель LinearRegression, нам нужно создать объект из этой модели. Для этого выполните следующие действия:

Фрагмент кода:

lm = Линейная регрессия ()

15. Теперь, когда мы создали объект модели LinearRegression, нам нужно подогнать объект к обучающему набору. Подгонка просто означает, что модель будет пытаться найти наилучшее линейное соответствие входной переменной (X_train), которая соответствует выходной переменной (y_train). На основе этой подгонки он будет предсказывать новые входные данные!

Введите следующий код:

Фрагмент кода:

lm.fit (X_train, y_train)

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

Фрагмент кода:

preds = lm.predict (X_test)

17. Теперь мы визуализируем, насколько наши прогнозы прогнозов отличаются от наших фактических результатов y_test. Введите следующий код:

Фрагмент кода:

plt.scatter = (пред., y_test)

18. Совсем неплохо… для нашей первой модели линейного прогнозирования !!. Чтобы просмотреть среднеквадратичную ошибку для типа модели, в следующем коде:

Фрагмент кода:

из sklearn.metrics import mean_squared_error

print (mean_squared_error (y_test, preds))

19. 92.89 !!! Неплохой результат. Поздравляем вас с самой первой прогнозной моделью !!

Автор: Вишал Берман

SRM университет

Аналитик данных в WisOpt