Многоэтачная регрессия в машинном обучении
- Предыдущая страница Многочленная регрессия
- Следующая страница Масштабирование
Многофакторный регрессионный анализ (Multiple Regression)
Многофакторный регрессионный анализ подобен линейному регрессионному анализу, но имеет несколько независимых значений, что означает, что мы пытаемся предсказать значение на основе двух или более переменных.
Пожалуйста, посмотрите данные в таблице, в которых содержится информация о автомобилях.
Car | Model | Volume | Weight | CO2 |
---|---|---|---|---|
Toyota | Aygo | 1000 | 790 | 99 |
Mitsubishi | Space Star | 1200 | 1160 | 95 |
Skoda | Citigo | 1000 | 929 | 95 |
Fiat | 500 | 900 | 865 | 90 |
Mini | Cooper | 1500 | 1140 | 105 |
VW | Up! | 1000 | 929 | 105 |
Skoda | Fabia | 1400 | 1109 | 90 |
Mercedes | A-Class | 1500 | 1365 | 92 |
Ford | Fiesta | 1500 | 1112 | 98 |
Audi | A1 | 1600 | 1150 | 99 |
Hyundai | I20 | 1100 | 980 | 99 |
Suzuki | Swift | 1300 | 990 | 101 |
Ford | Fiesta | 1000 | 1112 | 99 |
Honda | Civic | 1600 | 1252 | 94 |
Hundai | I30 | 1600 | 1326 | 97 |
Opel | Astra | 1600 | 1330 | 97 |
BMW | 1 | 1600 | 1365 | 99 |
Mazda | 3 | 2200 | 1280 | 104 |
Skoda | Rapid | 1600 | 1119 | 104 |
Ford | Focus | 2000 | 1328 | 105 |
Ford | Mondeo | 1600 | 1584 | 94 |
Opel | Insignia | 2000 | 1428 | 99 |
Mercedes | C-Class | 2100 | 1365 | 99 |
Skoda | Octavia | 1600 | 1415 | 99 |
Volvo | S60 | 2000 | 1415 | 99 |
Mercedes | CLA | 1500 | 1465 | 102 |
Audi | A4 | 2000 | 1490 | 104 |
Audi | A6 | 2000 | 1725 | 114 |
Volvo | V70 | 1600 | 1523 | 109 |
BMW | 5 | 2000 | 1705 | 114 |
Mercedes | E-Class | 2100 | 1605 | 115 |
Volvo | XC70 | 2000 | 1746 | 117 |
Ford | B-Max | 1600 | 1235 | 104 |
BMW | 2 | 1600 | 1390 | 108 |
Opel | Zafira | 1600 | 1405 | 109 |
Mercedes | SLK | 2500 | 1395 | 120 |
我们可以根据发动机排量的大小预测汽车的二氧化碳排放量,但是通过多元回归,我们可以引入更多变量,例如汽车的重量,以使预测更加准确。
Мы можем предсказывать выброс диоксида углерода автомобиля на основе объема двигателя, но с помощью многофакторной регрессии мы можем добавить больше переменных, таких как вес автомобиля, чтобы сделать прогноз более точным.
Механизм работы
import pandas
В Python у нас есть модули, которые могут выполнить эту работу. Сначала импортируем модуль Pandas:
Модуль Pandas позволяет нам читать файлы csv и возвращать объект DataFrame.Этот файл предназначен только для тестирования, вы можете загрузить его здесь:
df = pandas.read_csv("cars.csv")
cars.csv
Затем перечислите независимые значения и назовите эту переменную X.
X = df[['Weight', 'Volume']] y = df['CO2']
Положите связанные значения в переменную под названием y.Совет: Обычно, имена списков независимых значений называют прописными
X Имена списков связанных значений называют строчными
y
.
from sklearn import linear_model
Мы будем использовать некоторые методы модуля sklearn, поэтому также необходимо импортировать этот модуль: В модуле sklearn мы будем использовать
LinearRegression()
Этот объект имеет метод fit()
метод, который принимает независимые и зависимые значения в качестве параметров и заполняет объект регрессии данными, описывающими это отношение:
regr = linear_model.LinearRegression() regr.fit(X, y)
Теперь у нас есть объект регрессии, который может предсказывать значения CO2 на основе веса и объема автомобиля:
# Прогноз выброса диоксида углерода для автомобиля с весом 2300 кг и объемом 1300 ccm: predictedCO2 = regr.predict([[2300, 1300]])
Пример
Пожалуйста, посмотрите на полный пример:
import pandas from sklearn import linear_model df = pandas.read_csv("cars.csv") X = df[['Weight', 'Volume']] y = df['CO2'] regr = linear_model.LinearRegression() regr.fit(X, y) # Прогноз выброса диоксида углерода для автомобиля с весом 2300 кг и объемом 1300 ccm: predictedCO2 = regr.predict([[2300, 1300]]) print(predictedCO2)
Результат:
[107.2087328]
Мы прогнозируем, что автомобиль с двигателем объемом 1.3 литра и весом 2300 килограммов выбросит около 107 граммов диоксида углерода при езде на 1 километр.
Коэффициенты
Коэффициенты описывают фактор, связывающий неизвестные переменные.
Например: если x
Это переменная, то есть 2x
Это x
в два раза.x
Это переменная, число 2
Это коэффициенты.
В этом случае мы можем запросить коэффициенты веса по отношению к CO2, а также объема по отношению к CO2. Полученные ответы告诉我们, что произойдет, если мы увеличим или уменьшим один из независимых значений.
Пример
Печать коэффициентов объекта регрессии:
import pandas from sklearn import linear_model df = pandas.read_csv("cars.csv") X = df[['Weight', 'Volume']] y = df['CO2'] regr = linear_model.LinearRegression() regr.fit(X, y) print(regr.coef_)
Результат:
[0.00755095 0.00780526]
Интерпретация результатов
Результатный массив представляет собой коэффициенты веса и объема.
Вес: 0.00755095 Объем: 0.00780526
Эти значения告诉我们, что если вес увеличится на 1 г, то выброс CO2 увеличится на 0.00755095 г.
Если размер двигателя (объем) увеличится на 1 ccm, то выброс CO2 увеличится на 0.00780526 г.
Я считаю, что это разумное предположение, но все же, пожалуйста, проведите тестирование!
Мы уже предсказали, что если автомобиль с двигателем объемом 1300ccm весит 2300 килограммов, то выброс диоксида углерода составит около 107 граммов.
Что если бы мы добавили 1000 граммов веса?
Пример
Скопируйте предыдущий пример, но измените вес с 2300 на 3300:
import pandas from sklearn import linear_model df = pandas.read_csv("cars.csv") X = df[['Weight', 'Volume']] y = df['CO2'] regr = linear_model.LinearRegression() regr.fit(X, y) predictedCO2 = regr.predict([[3300, 1300]]) print(predictedCO2)
Результат:
[114.75968007]
Мы предсказали, что автомобиль с двигателем объемом 1.3 литра и весом 3.3 тонны будет выбрасывать около 115 граммов диоксида углерода на каждый километр пробега.
Это означает, что коэффициент 0.00755095 правильный:
107.2087328 + (1000 * 0.00755095) = 114.75968
- Предыдущая страница Многочленная регрессия
- Следующая страница Масштабирование