https://www.w3schools.com/python/python_ml_multiple_regression.asp

 

Python Machine Learning Multiple Regression

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

Multiple Regression

다양한 차종에 대한 크기/무게/CO2 배출량입니다. 이를 바탕으로 크기와 무게가 주어진다면 CO2 배출량을 추정해 볼 수 있습니다. 크기와 무게 두가지 값을 통하여 Y값을 예측하는 것이기 때문에 다중 회귀(Multiple Regression)입니다.

 

import pandas

먼저 pandas 라이브러리를 불러옵니다. 실제 머신러닝, 빅데이터 분석 등등 pandas와 numpy는 거의 무조건 쓰인다고 보시면 됩니다. 굳이 구글의 정의를 살펴본다면, pandas는 데이터 조작 및 분석을 위한 Python 프로그래밍 언어 용으로 작성된 소프트웨어 라이브러리입니다. 특히 숫자 테이블과 시계열 을 조작하기 위한 데이터 구조 와 연산을 제공합니다.

 

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

이제 본격적으로 대용량의 데이터를 다루기 위하여 위 표가 저장된 csv 파일을 불러오는 것부터 시작합니다.

cars.csv
0.00MB

 

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

그다음 x값과 y값을 설정해줍니다. 위에 보시다시피 x값은 무게와 볼륨, 즉 크기로 두개의 x값을 리스트로 만들어 넣은것을 확인할 수 있습니다. df는 data frame을 줄임말로 통상적으로 저렇게 사용하는 듯 합니다.

그리고 여기서 w3schools에서는 Tip을 하나 알려주네요. 복수의 x값이 있는 경우 변수명을 대문자 X로 해준다고 합니다.😆 이러한 일반적인 것은 잘 숙지하면 좋은것 같습니다.

 

from sklearn import linear_model

또한 이제 pandas, numpy, scipy 등등 머신러닝의 초입에 필수적인 라이브러리를 지나 진짜 머신러닝 라이브러리인(모든것이 제 개인생각입니다...) sklearn 라이브러리를 불러오고 그안에서 linear_model 함수를 불러왔습니다.

linear_model.LinearRegression()함수를 사용할 예정이라고 합니다.

 

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

일단 함수를 변수로 만든다음 LinearRegression()의 fit()을 이용, 괄호 안의 arguments는 위에서 설정한  X와 y를 넣습니다.

fit은 학습한다는 의미로 쓰이는 듯 합니다.

 

predictedCO2 = regr.predict([[23001300]])

그리고 새 변수를 만든다음 predict()를 이용하여 예측하게 하면 예상 y값 즉 CO2 값이 나오게 됩니다.

predict() 의 괄호 안에는 리스트안에 x값들로 이루어진 리스트를 넣는군요.

 

전체 코드는 다음과 같습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import pandas
from sklearn import linear_model
 
df = pandas.read_csv("cars.csv")
 
= df[['Weight''Volume']]
= 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([[23001300]])
 
print(predictedCO2)
cs

Coefficient

y값에 영향을 주는 x값이 두개가 되었을 경우 의문점이 생깁니다. 실제 CO2에 대한 영향 차량의 크기와 차량의 무게가 각각 얼마만큼 영향을 미치고 있는지가 궁금합니다. 상대적으로 차량의 크기는 차량의 무게보다 상대적으로 더 작은 영향을 미칠 수 있고 그 반대일 수도 있기 때문입니다. 그리고 그 영향을 미치는 값을 계수, Coefficient라 부릅니다. 

계수를 알아보는 것은 위에서 regr.fit(X, y)로 학습 이후 간단히 regr.coef_ 를 하면 그 각각의 계수를 확인할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
import pandas
from sklearn import linear_model
 
df = pandas.read_csv("cars.csv")
 
= df[['Weight''Volume']]
= df['CO2']
 
regr = linear_model.LinearRegression()
regr.fit(X, y)
 
print(regr.coef_)
cs

결과값은 다음과 같습니다.

[0.00755095 0.00780526]

무게든 크기든 각 x값의 1당 y값에 반영되는 계수입니다. 즉 x 곱하기 계수는 y가 됩니다.

풀어 말하면,

1kg 당 CO2는 0.00755095g 배출되고, 1cm3 당 CO2는 0.00780526g 배출된다는 얘기입니다.

 

실제 위 값은 추정이지 실제 정답이라기 보다는 정답에 가장 가까운 답이라고 보면 됩니다.

차라리 정답을 찾아가는 방법이 정답이지 그 답이 꼭 정답일 필요는 없다(?)는 느낌입니다.😁

 

 

 

 

+ Recent posts