머신러닝 - 다중 회귀

다중회귀 (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

엔진 용적의 크기에 따라 자동차의二氧化碳 배출량을 예측할 수 있지만, 다중 귀환을 사용하면 자동차의 중량과 같은 더 많은 변수를 도입하여 예측을 더 정확하게 할 수 있습니다.

작동 원리

Python에서 이 작업을 수행할 수 있는 모듈을 가지고 있습니다. 먼저 Pandas 모듈을 임포트합니다:

import pandas

Pandas 모듈은 csv 파일을 읽고 DataFrame 객체를 반환할 수 있습니다.

이 파일은 테스트 목적으로만 사용되며, 여기서 다운로드할 수 있습니다:cars.csv

df = pandas.read_csv("cars.csv")

그런 다음 독립 변수를 나열하고, 이 변수를 X라는 이름으로命名합니다.

관련 값을 y라는 변수에 넣습니다.

X = df[['Weight', 'Volume']]
y = df['CO2']

힌트:대체로 독립 변수 목록의 이름을 대문자로命名합니다 X를 관련 값 목록의 이름으로 소문자로命名합니다 y

sklearn 모듈의 일부 메서드를 사용할 것이므로, 이 모듈을 임포트해야 합니다:

from sklearn import linear_model

sklearn 모듈에서, 우리는 LinearRegression() 메서드를 사용하여 선형 귀환 대상을 생성합니다.

이 대상은 fit() 의 방법을 사용하여, 독립 변수와 종속 변수를 매개변수로 하여 이 관계를 설명하는 데이터로 귀환 대상을 채웁니다:

regr = linear_model.LinearRegression()
regr.fit(X, y)

지금, 우리는 자동차의 중량과 용적을 기반으로 CO2 값을 예측할 수 있는 귀환 대상을 가지고 있습니다:

# 중량이 2300kg, 용적이 1300ccm인 자동차의二氧化碳 배출량을 예측합니다:
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)
# 중량이 2300kg, 용적이 1300ccm인 자동차의二氧化碳 배출량을 예측합니다:
predictedCO2 = regr.predict([[2300, 1300]])
print(predictedCO2)

결과:

[107.2087328]

예제 실행

우리는 1.3 리터 엔진, 중량 2300kg의 자동차가 1km를 달리면 약 107g의二氧化碳를 방출한다고 예측합니다.

계수

계수는未知변수와의 관계를 설명하는 계수입니다.

예를 들어: 만약 x 는 변수이며, 2xx 의 두 배입니다.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

이 값들은, 중량이 1g 증가하면 CO2 배출량이 0.00755095g 증가한다는 것을 알려줍니다.

엔진 크기(용적)가 1 ccm 증가하면 CO2 배출량이 0.00780526g 증가합니다.

저는 이것이 합리적인 추측이라고 생각하지만, 여전히 테스트를 해 주세요!

우리는 1300ccm 엔진을 가진 2300kg 중량의 자동차의 탄소 배출량이 약 107g일 것으로 예측했습니다.

1000g의 중량을 추가하면 어떻게 될까요?

예제

이전 예제를 그대로 사용하되, 차량 중량을 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 톤 중량의 자동차가 1km를 달리면 약 115g의 탄소 di오キ실드를 배출할 것으로 예측했습니다.

이는 0.00755095의 계수가 올바른 것을 보여줍니다:

107.2087328 + (1000 * 0.00755095) = 114.75968