머신러닝 - 다중 회귀
다중회귀 (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
는 변수이며, 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
이 값들은, 중량이 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