728x90
여러 입력 변수를 이용하여 선형 회귀를 하면 그것이 바로 다중 선형 회귀!!
- 다중 선회 회귀는 시각적으로 표현하기가 힘들다.
tip. 입력 변수 = 속성(feature)
- 각 속성 항목들의 표현 방식 정리
- 다중 선형 회귀에서의 가설 함수
- 다중 선형 회귀 데이터 준비하기
from sklearn.datasets import load_boston
import pandas as pd
boston_dataset = load_boston()
print(boston_dataset.DESCR)
:Attribute Information (in order):
- CRIM per capita crime rate by town
- ZN proportion of residential land zoned for lots over 25,000 sq.ft.
- INDUS proportion of non-retail business acres per town
- CHAS Charles River dummy variable (= 1 if tract bounds river; 0 otherwise)
- NOX nitric oxides concentration (parts per 10 million)
- RM average number of rooms per dwelling
- AGE proportion of owner-occupied units built prior to 1940
- DIS weighted distances to five Boston employment centres
- RAD index of accessibility to radial highways
- TAX full-value property-tax rate per $10,000
- PTRATIO pupil-teacher ratio by town
- B 1000(Bk - 0.63)^2 where Bk is the proportion of blacks by town
- LSTAT % lower status of the population
- MEDV Median value of owner-occupied homes in $1000 #목표변수
boston_dataset.feature_names
array(['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD',
'TAX', 'PTRATIO', 'B', 'LSTAT'], dtype='<U7')
boston_dataset.data
array([[6.3200e-03, 1.8000e+01, 2.3100e+00, ..., 1.5300e+01, 3.9690e+02,
4.9800e+00],
[2.7310e-02, 0.0000e+00, 7.0700e+00, ..., 1.7800e+01, 3.9690e+02,
9.1400e+00],
[2.7290e-02, 0.0000e+00, 7.0700e+00, ..., 1.7800e+01, 3.9283e+02,
4.0300e+00],
X = pd.DataFrame(boston_dataset.data, columns=boston_dataset.feature_names)
X
CRIM ZN INDUS CHAS NOX RM AGE DIS RAD TAX PTRATIO B LSTAT
0 0.00632 18.0 2.31 0.0 0.538 6.575 65.2 4.0900 1.0 296.0 15.3 396.90 4.98
1 0.02731 0.0 7.07 0.0 0.469 6.421 78.9 4.9671 2.0 242.0 17.8 396.90 9.14
2 0.02729 0.0 7.07 0.0 0.469 7.185 61.1 4.9671 2.0 242.0 17.8 392.83 4.03
3 0.03237 0.0 2.18 0.0 0.458 6.998 45.8 6.0622 3.0 222.0 18.7 394.63 2.94
4 0.06905 0.0 2.18 0.0 0.458 7.147 54.2 6.0622 3.0 222.0 18.7 396.90 5.33
boston_dataset.target #목표 변수
y= pd.DataFrame(boston_dataset.target, columns=['MEDV'])
y
MEDV
0 24.0
1 21.6
2 34.7
3 33.4
4 36.2
... ...
501 22.4
502 20.6
503 23.9
504 22.0
505 11.9
- 다중 선형 회귀를 이용한 집값 예측하기
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split #데이터를 트레이닝,테스트 셋 나누는 것
from sklearn.linear_model import LinearRegression #선형회기를 하기 위한
from sklearn.metrics import mean_squared_error #모델을 평가하기 위해 사용하는 평균 제곱 오차
import pandas as pd
boston_dataset = load_boston()
X = pd.DataFrame(boston_dataset.data, columns=boston_dataset.feature_names)
y= pd.DataFrame(boston_dataset.target, columns=['MEDV'])
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=5)
model = LinearRegression()
model.fit(X_train, y_train)
model.coef_ #이제 학습된 결과를 보고 싶을 때 각각 θ1, θ2, θ3 나타낸다.
model.intercept_ #θ0을 나타낸다. , 손실을 최대한 적게하는 θ 값들
y_test_prediction = model.predict(X_test)
y_test_prediction #예측 값들
mean_squared_error(y_test, y_test_prediction) ** 0.5
#예측값과 실제 y값과 비교 평균제곱근 오차를 구하는 공식 #약 4천5백 달라의 오차
4.5682920423031765
- scikit-learn으로 당뇨 수치 예측하기
# 필요한 라이브러리 import
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
import pandas as pd
# 당뇨병 데이터 갖고 오기
diabetes_dataset = datasets.load_diabetes()
# 입력 변수를 사용하기 편하게 pandas dataframe으로 변환
X = pd.DataFrame(diabetes_dataset.data, columns=diabetes_dataset.feature_names)
# 목표 변수를 사용하기 편하게 pandas dataframe으로 변환
y = pd.DataFrame(diabetes_dataset.target, columns=['diabetes'])
# train_test_split를 사용해서 주어진 데이터를 학습, 테스트 데이터로 나눈다
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state=5)
linear_regression_model = LinearRegression() # 선형 회귀 모델을 가지고 오고
linear_regression_model.fit(X_train, y_train) # 학습 데이터를 이용해서 모델을 학습 시킨다
y_test_predict = linear_regression_model.predict(X_test) # 학습시킨 모델로 예측
# 평균 제곱 오차의 루트를 통해서 테스트 데이터에서의 모델 성능 판단
mse = mean_squared_error(y_test, y_test_predict)
mse ** 0.5
코딩실습[코드잇] 파이썬 머신 러닝 강의를 들으면 공부내용을 적어봤습니다.
728x90
반응형
'Machine learning > Machine learning 강의' 카테고리의 다른 글
머신 러닝 다항 회귀(Polynomial Regression) #2 - sklearn으로 다중 회귀, 당뇨병 예측 학습 프로그램 만들기 (0) | 2021.02.08 |
---|---|
머신 러닝 다항 회귀(Polynomial Regression) #1 - 다항 회귀 (0) | 2021.02.08 |
머신 러닝 선형 회귀 (Linear Regression) #3 - scikit-learn 을 이용해 집 값 예측 프로그램 구현하기 (0) | 2021.02.02 |
머신 러닝 선형 회귀 (Linear Regression) #2 - 가설 함수, 평균 제곱 오차, 손실 함수 (0) | 2021.02.01 |
머신 러닝 선형 회귀 (Linear Regression) #1 - 개념, 용어, 표현법 (0) | 2021.02.01 |
댓글