Научитесь реализовывать множественную линейную регрессию с помощью программирования на Python.

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

Обзор

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

Анализ проблемы

В этих данных у нас есть четыре независимых переменных, а именно: Расходы на НИОКР, Администрирование, Маркетинговые расходы и Состояние. Есть одна независимая переменная, то есть Прибыль. Итак, наша задача - обучить модель машинного обучения с этими данными, чтобы понять корреляцию между каждой из четырех функций (или независимых переменных) и спрогнозировать прибыль для другой новой компании со всеми этими данными.

Шаг 1. Импорт библиотек

На этом первом этапе мы будем импортировать библиотеки, необходимые для построения модели машинного обучения. Библиотека NumPy и matplotlib импортируются. Кроме того, мы импортировали библиотеку Pandas для анализа данных.

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

Шаг 2: Импорт набора данных

На следующем шаге мы будем использовать pandas для хранения данных, полученных из моего репозитория github, и сохранить их как Pandas DataFrame с именем «набор данных» с помощью функции « pd.read_csv ».

Мы просматриваем наш набор данных и назначаем независимую переменную (x) первым четырем столбцам нашего набора данных, а именно: Расходы на НИОКР (индекс = 0), Администрирование (индекс = 1), Расходы на маркетинг (индекс = 2) и Состояние (индекс = 3).

dataset = pd.read_csv('https://raw.githubusercontent.com/mk-gurucharan/Regression/master/Startups_Data.csv')
X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, -1].values
dataset.head(5)
>>
R&D Spend  Administration  Marketing Spend   State      Profit
165349.20  136897.80       471784.10         New York   192261.83
162597.70  151377.59       443898.53         California 191792.06
153441.51  101145.55       407934.54         Florida    191050.39
144372.41  118671.85       383199.62         New York   182901.99
142107.34  91391.77        366168.42         Florida    166187.94

Мы используем соответствующую функцию .iloc, чтобы нарезать DataFrame, чтобы присвоить эти индексы X. Здесь мы используем [:,: -1], который можно интерпретировать как [включить все строки, включить все столбцы до -1 (исключая -1)]. В этом случае -1 относится к первому столбцу из последнего. Таким образом, мы назначаем 0-й, 1-й, 2-й и 3-й столбцы как X.

Мы присваиваем последний столбец (-1) зависимой переменной y. Мы печатаем DataFrame, чтобы увидеть, есть ли у нас правильные столбцы для наших обучающих данных.

Шаг 3. Кодирование категориальных данных

Пока в наборе данных есть числа, мы можем легко применять математические вычисления к набору данных и создавать модели прогнозирования. В этом наборе данных мы встречаем нечисловую переменную «State». Это также называется категориальными данными.

Мы кодируем эти категориальные данные с помощью другой важной библиотеки, которая называется sklearn. Здесь мы импортируем ColumnTransformer и OneHotEncoder. ColumnTransformer позволяет преобразовывать отдельный столбец DataFrame отдельно. В нашем случае мы используем OneHotEncoder для преобразования нашего столбца «Состояние» (индекс = 3) в числовые данные.

После кодирования категориальных данных мы печатаем наш DataFrame X и видим изменения. Мы видим, что в начале было добавлено три новых столбца. Каждый столбец представляет одно из «Состояния». Например, в первой строке третий столбец представляет «Нью-Йорк» и, следовательно, значение «1» в третьем столбце.

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [3])], remainder='passthrough')
X = np.array(ct.fit_transform(X))

Шаг 4. Разделение набора данных на обучающий набор и тестовый набор.

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

Мы используем функцию train_test_split для разделения наших данных. Здесь мы указываем «test_size = 0,2», что означает, что 20% данных являются тестовым набором. В нашем случае 10 случайных данных запуска будут выбраны в качестве тестового набора, а оставшиеся 40 данных запуска будут выбраны для обучающего набора.

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2)

Шаг 5. Обучение модели множественной линейной регрессии на обучающем наборе

На следующем этапе мы импортируем класс «LinearRegression», который будет применяться к нашему обучающему набору. Мы назначаем переменную «regressor» классу LinearRegression. Затем мы используем «regressor.fit», чтобы подогнать набор обучающих данных (X_train и y_train) к этому классу LinearRegression, чтобы процесс обучения происходил.

from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train, y_train)

Шаг 6: Прогнозирование результатов набора тестов

На следующем шаге мы собираемся спрогнозировать прибыль тестового набора, используя обученную модель, а именно «регрессор». Реальные значения (прибыль) данных тестового набора (X_test) хранятся в переменной y_test.

Затем мы используем функцию «regressor.predict», чтобы предсказать значения для наших тестовых данных X_test. Мы назначаем предсказанные значения как y_pred. Теперь у нас есть два данных: y_test (реальные значения) и y_pred (предсказанные значения).

y_pred = regressor.predict(X_test)

Шаг 7: Сравнение набора тестов с прогнозируемыми значениями

На этом этапе мы напечатаем оба значения y_test как Реальные значения и значения y_pred как Прогнозируемые значения из каждый X_test в кадре данных Pandas. Таким образом мы получаем значения для всех 10 данных X_test.

df = pd.DataFrame({'Real Values':y_test, 'Predicted Values':y_pred})
df
>>
Real Values Predicted Values
78239.91    74963.602167
182901.99   173144.548525
64926.08    45804.248438
105733.54   108530.843936
141585.52   127674.466487
108552.04   111471.421444
146121.95   133618.038644
105008.31   114655.651664
96778.92    96466.443219
97483.56    96007.236281

В первой строке действительные значения имеют значение 78239.91, а прогнозные значения имеют значение 74963,60. Мы видим, что модель точно предсказала это значение, и, следовательно, мы можем сказать, что наша модель имеет хорошую точность.

Поздравляю! Теперь вы расширили свои знания от построения модели простой линейной регрессии до модели множественной линейной регрессии. Я прилагаю ссылку на свой репозиторий Github, где вы можете найти записную книжку Python и файлы данных для справки.



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

Вы также можете найти объяснение программы для других моделей регрессии ниже:

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