기계 학습 - 다중 회귀
다중 회귀
다중 회귀는 선형 회귀 와 비슷하지만 둘 이상의 독립 값을 사용하므로 둘 이상의 변수를 기반으로 값을 예측하려고 합니다.
아래 데이터 세트를 살펴보면 자동차에 대한 몇 가지 정보가 포함되어 있습니다.
차 | 모델 | 용량 | 무게 | 이산화탄소 |
도요타 | 아이고 | 1000 | 790 | 99 |
미쓰비시 | 스페이스 스타 | 1200 | 1160 | 95 |
스코다 | 시티고 | 1000 | 929 | 95 |
명령 | 500 | 900 | 865 | 90 |
미니 | 쿠퍼 | 1500 | 1140 | 105 |
폭스바겐 | 위로! | 1000 | 929 | 105 |
스코다 | 파비아 | 1400 | 1109 | 90 |
메르세데스 | A급 | 1500 | 1365 | 92 |
포드 | 축제 | 1500 | 1112 | 98 |
아우디 | A1 | 1600 | 1150 | 99 |
현대 | I20 | 1100 | 980 | 99 |
스즈키 | 빠른 | 1300 | 990 | 101 |
포드 | 축제 | 1000 | 1112 | 99 |
혼다 | 시민 | 1600 | 1252 | 94 |
현대 | I30 | 1600 | 1326 | 97 |
오펠 | 아스트라 | 1600 | 1330 | 97 |
BMW | 1 | 1600 | 1365 | 99 |
마쓰다 | 삼 | 2200 | 1280 | 104 |
스코다 | 빠른 | 1600 | 1119 | 104 |
포드 | 집중하다 | 2000년 | 1328 | 105 |
포드 | 몬데오 | 1600 | 1584 | 94 |
오펠 | 휘장 | 2000년 | 1428 | 99 |
메르세데스 | C급 | 2100 | 1365 | 99 |
스코다 | 옥타비아 | 1600 | 1415 | 99 |
볼보 | S60 | 2000년 | 1415 | 99 |
메르세데스 | CLA | 1500 | 1465 | 102 |
아우디 | A4 | 2000년 | 1490 | 104 |
아우디 | A6 | 2000년 | 1725년 | 114 |
볼보 | V70 | 1600 | 1523 | 109 |
BMW | 5 | 2000년 | 1705년 | 114 |
메르세데스 | E클래스 | 2100 | 1605 | 115 |
볼보 | XC70 | 2000년 | 1746 | 117 |
포드 | 비맥스 | 1600 | 1235 | 104 |
BMW | 2 | 1600 | 1390 | 108 |
오펠 | 자피라 | 1600 | 1405 | 109 |
메르세데스 | SLK | 2500 | 1395년 | 120 |
엔진 크기를 기반으로 자동차의 CO2 배출량을 예측할 수 있지만 다중 회귀를 사용하면 자동차 무게와 같은 더 많은 변수를 입력하여 예측을 더 정확하게 할 수 있습니다.
어떻게 작동합니까?
파이썬에는 우리를 위해 일할 모듈이 있습니다. Pandas 모듈을 가져와 시작합니다.
import pandas
Pandas Tutorial 에서 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 값을 예측할 준비가 된 회귀 개체가 있습니다.
#predict the CO2 emission of a car where the weight
is 2300kg, and the volume is 1300cm3:
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)
#predict the CO2
emission of a car where the weight is 2300kg, and the volume is 1300cm3:
predictedCO2 = regr.predict([[2300, 1300]])
print(predictedCO2)
결과:
[107.2087328]
우리는 1.3리터 엔진과 2300kg의 무게를 가진 자동차가 주행하는 1km당 약 107g의 CO2를 방출할 것이라고 예측했습니다.
계수
계수는 알려지지 않은 변수와의 관계를 설명하는 요소입니다.
예: 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
이 값은 무게가 1kg 증가하면 CO2 배출량이 0.00755095g 증가한다는 것을 알려줍니다.
그리고 엔진 크기(볼륨)가 1cm 3 증가하면 CO2 배출량은 0.00780526g 증가합니다.
나는 그것이 정당한 추측이라고 생각하지만 그것을 테스트해보자!
1300cm 3 엔진이 장착 된 자동차의 무게가 2300kg 이면 CO2 배출량은 약 107g이 될 것이라고 이미 예측했습니다.
체중을 1000kg으로 늘리면?
예시
이전 예제를 복사하되 가중치를 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리터 엔진과 3300kg의 무게를 가진 자동차가 주행하는 1km당 약 115g의 CO2를 방출할 것으로 예측했습니다.
이는 0.00755095의 계수가 정확함을 보여줍니다.
107.2087328 + (1000 * 0.00755095) = 114.75968