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

Так кто же читатели этой статьи?

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

Это также может быть актуально, если вы хотите совместить некоторые бизнес-аспекты с машинным обучением.

Чего мы ждем? Начнем !!

То, что я собираюсь упомянуть, может быть больше связано с теоретической стороной машинного обучения, но все же немного теоретических знаний также не повредит! : P
Перед тем, как приступить к построению модели линейной регрессии, есть определенные предположения, которые должны быть верными…
1) ЛИНЕЙНОСТЬ
2) ГОМОСРЕДАСТИЧНОСТЬ
3) МНОЖЕСТВЕННАЯ НОРМАЛЬНОСТЬ
4 ) НЕЗАВИСИМОСТЬ ОТ ОШИБОК
5) ОТСУТСТВИЕ МНОГОЛЛИНЕЙНОСТИ
Я не буду обсуждать все эти вещи, но если мы собираемся использовать линейную регрессию в качестве нашего алгоритма машинного обучения в будущем ... Мы должны попытаться сохранить отслеживание из них.
Заинтересованные могут сами исследовать их !!

Часть 1 - Предварительная обработка данных

Импорт библиотек…

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

Импорт набора данных

dataset = pd.read_csv('50_Startups.csv')

Итак, вот как выглядит набор данных ...

Набор данных содержит следующие характеристики (независимые переменные): -
…… ..1) Расходы на исследования и разработки - общая сумма денег, потраченных стартапом на исследования и разработки.
…… ..2) Администрирование- Общая сумма денег, потраченных стартапом на администрирование.
…… ..3) Расходы на маркетинг - общая сумма денег, потраченных стартапом на маркетинг.
…… ..4) Штат - штат или регион, в котором запускается или работает стартап.

Для хранения функций в X мы используем…

X = dataset.iloc[:, :-1].values

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

y = dataset.iloc[:, 4].values

Если мы посмотрим на наш набор данных, мы ясно увидим, что State - это переменная типа String, и, как мы уже обсуждали, мы не можем передавать переменные типа String в нашу модель машинного обучения, поскольку она может работать только с числами.Чтобы решить эту проблему, мы используем объект Label Encoder и создайте фиктивные переменные с помощью объекта OneHotEncoder…
Допустим, что если бы у нас было только 2 штата Нью-Йорк и Калифорния именно в нашем наборе данных, то наш OneHotEncoder будет только из 2 столбцов…
Аналогично для В n разных состояниях у него будет n столбцов, и каждое состояние будет представлено серией из 0 и 1, где все столбцы будут иметь 0
, кроме столбца для этого конкретного состояния.
Например: -
Если A, B, C - 3 состояния, тогда A = 100, B = 010, C = 001
Думаю, теперь вы можете понять мою точку зрения о том, как работает OneHotEncoder ...

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

Импорт класса кодировщика меток вместе с OneHotEncoder

from sklearn.preprocessing import LabelEncoder, OneHotEncoder

Создание объекта класса Label Encoder

labelencoder = LabelEncoder()

Поскольку ясно, что единственными категориальными данными является имя состояния, которое хранится в 3-м индексе в нашем наборе данных, поэтому мы кодируем этот столбец!

X[:, 3] = labelencoder.fit_transform(X[:, 3])
onehotencoder = OneHotEncoder(categorical_features = [3])
X = onehotencoder.fit_transform(X).toarray()

Как избежать ловушки фиктивной переменной

Уравнение линейной регрессии будет выглядеть так - ›y = b (0) + b (1) x (1) + b (2) x (2) + b (3) x (3) + b (4) D (1) ) + b (5) D (2) + b (6) D (3)… b (n + 3) D (m-1)
Здесь D (1)… D (m-1) - m фиктивных переменных, которые мы определили ранее в LabelEncoder и OneHotEncoder
Если вы достаточно внимательны, то могли заметить, что хотя есть m фиктивных переменных, мы исключили последнюю фиктивную переменную D (m)
Причиной тому является концепция под названием Ловушка фиктивной переменной в машинном обучении ... и чтобы избежать этого, мы всегда должны исключать последнюю фиктивную переменную
Если вас больше интересует, не стесняйтесь немного исследовать на ловушке фиктивной переменной !!

Удаление 1-го столбца из набора данных, который содержит одно из значений OneHotEncoded…

X = X[:, 1:]

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

Импорт библиотек и применение перекрестной проверки с 80% данных в качестве данных обучения и 20% в качестве данных тестирования.

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, random_state = 0)

Часть 2 - Подгонка нашей модели линейной регрессии

Подгонка множественной линейной регрессии к обучающей выборке

Уравнение линейной регрессии будет выглядеть так - - ›y = b (0) + b (1) x (1) + b (2) x (2) + b (3) x (3) + b (4) D ( 1) + b (5) D (2) + b (6) D (3)… b (n + 3) D (m-1)

Импорт класса линейной регрессии

from sklearn.linear_model import LinearRegression

Создание объекта класса линейной регрессии

regressor = LinearRegression()

Подгоняем созданный объект к нашему обучающему набору

regressor.fit(X_train, y_train)

Часть 3 - Прогнозирование результатов набора тестов

y_pred = regressor.predict(X_test)

Печать прогнозируемых значений

print(y_pred)

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

print(y_test)

Считаете ли вы, что это действительно оптимальная модель, которую мы только что построили?
Наша модель содержит все функции, некоторые из которых статистически не значимы для наших прогнозов. Что нам нужно сделать, так это найти команду всех независимых переменных, которые являются на самом деле полезен для наших прогнозов.
Для этого мы используем другой метод под названием Обратное исключение, чтобы построить оптимальную модель…
Но это уже другая история, и для этого потребуется отдельная статья : P Так что следите за обновлениями !!

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

Надеюсь, вам понравился мой учебник! Я прикрепляю ссылки github (теперь Gitlab: P) к коду и набору данных.



Кто знает, что ваша модель могла просто помочь профинансировать следующий Google; P

Литература - курс машинного обучения Кирилла Еременко и Хаделина де Понтевеса