-
간단한 LinearRegression 으로 Boston_price 예측머신러닝(MACHINE LEARNING)/간단하게 이론(Theory...) 2021. 4. 22. 15:04반응형
간단한 LinearRegression 으로 Boston_price 예측을 해보자.
1. 먼저 load boston 모델 load
In [1]:from sklearn.datasets import load_boston import matplotlib.pyplot as plt import numpy as np
In [2]:boston = load_boston() boston["data"]
Out[2]: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], ..., [6.0760e-02, 0.0000e+00, 1.1930e+01, ..., 2.1000e+01, 3.9690e+02, 5.6400e+00], [1.0959e-01, 0.0000e+00, 1.1930e+01, ..., 2.1000e+01, 3.9345e+02, 6.4800e+00], [4.7410e-02, 0.0000e+00, 1.1930e+01, ..., 2.1000e+01, 3.9690e+02, 7.8800e+00]])
In [3]:x_data = boston["data"] y_data = boston.target.reshape(boston.target.size,1)
In [4]:y_data.shape
Out[4]:(506, 1)
2.MinMaxScaler 로 데이터 Preprocessing
MinMaxScaler 을 통하여 데이터를 0 과 1 사이로 반환하는데, feature_range=(0,5)을 주어서 Range 값을 변형시켜주었음.In [5]:# MinMaxScaler 를 이용하여 , 데이터를 0과 1사이의 값으로 변환한다. 음수 값이 있으면 -1에서 1사이의 값으로 변환 # feature range 를 사용하여 0,5의 값 사이로 변환하였음. from sklearn import preprocessing minmax_scale = preprocessing.MinMaxScaler(feature_range=(0,5)).fit(x_data) X_scaled_data = minmax_scale.transform(x_data) X_scaled_data[:3]
Out[5]:array([[0.00000000e+00, 9.00000000e-01, 3.39076246e-01, 0.00000000e+00, 1.57407407e+00, 2.88752635e+00, 3.20803296e+00, 1.34601570e+00, 0.00000000e+00, 1.04007634e+00, 1.43617021e+00, 5.00000000e+00, 4.48399558e-01], [1.17961270e-03, 0.00000000e+00, 1.21151026e+00, 0.00000000e+00, 8.64197531e-01, 2.73998850e+00, 3.91349125e+00, 1.74480990e+00, 2.17391304e-01, 5.24809160e-01, 2.76595745e+00, 5.00000000e+00, 1.02235099e+00], [1.17848872e-03, 0.00000000e+00, 1.21151026e+00, 0.00000000e+00, 8.64197531e-01, 3.47192949e+00, 2.99691040e+00, 1.74480990e+00, 2.17391304e-01, 5.24809160e-01, 2.76595745e+00, 4.94868627e+00, 3.17328918e-01]])
3. Sklearn 의 train_test_split
In [6]:from sklearn.model_selection import train_test_split X_train,X_test,Y_train,Y_test = train_test_split(X_scaled_data, y_data, test_size = 0.33) X_train.shape,X_test.shape
Out[6]:((339, 13), (167, 13))
4. Sklearn 의 LinearRegression 대입
- fit_intercept : 상수값을 사용할 지 안할지 default =True 값이다.
- normalize 는 표준화 시킬 건지 안 할건지를 말해준다. 우리는 위에서 MinMaxScaler 를 통해 이미 해주었다.
- copy_X : 데이터를 복사하여 사용할 것인지를 말해주는 값 , default = True
- n_jobs : 사용하는 컴퓨터 코어의 갯수
In [7]:from sklearn import linear_model regr = linear_model.LinearRegression(fit_intercept = True, normalize = False, copy_X = True, n_jobs = True) regr.fit(X_train,Y_train) regr
Out[7]:LinearRegression(n_jobs=True)
In [8]:# 13 개의 feature 값을 가지고 있으므로, coef_는 13개의 값이 나온다. # intercept 값은 bias 와 같은 편향 값 regr.coef_, regr.intercept_
Out[8]:(array([[-2.14403402e+00, 1.04493810e+00, 4.38430349e-04, 7.60821781e-01, -1.97678170e+00, 3.36614653e+00, -5.43610608e-02, -4.04834721e+00, 1.63336487e+00, -1.42865641e+00, -1.70991370e+00, 5.51660891e-01, -4.27325797e+00]]), array([31.1616873]))
4. Sklearn 의 metrics 평가모델 대입
r2_score, MAE, MSE 를 import
In [9]:# Sklearn 의 평가 지표에서 여러 평가 지표 모델들을 import 시켜준다. from sklearn.metrics import r2_score from sklearn.metrics import mean_absolute_error from sklearn.metrics import mean_squared_error y_true = Y_test y_hat = regr.predict(X_test) # 각각의 Test 값으로 에러값 산출해보자 r2_score(y_true, y_hat), mean_absolute_error(y_true, y_hat), mean_squared_error(y_true, y_hat)
Out[9]:(0.7744988006094623, 3.126720895587081, 16.37698057927466)
In [10]:# Train 값에 대한 에러값 산출 y_true = Y_train y_hat = regr.predict(X_train) r2_score(y_true, y_hat), mean_absolute_error(y_true, y_hat), mean_squared_error(y_true, y_hat)
Out[10]:(0.7198484618206282, 3.5411068726371457, 25.22421662434745)
반응형'머신러닝(MACHINE LEARNING) > 간단하게 이론(Theory...)' 카테고리의 다른 글
ID3 모델 구현_Python (2) 2021.04.26 Decision Tree 에서의 ID3 알고리즘 (0) 2021.04.25 Gradient_descent 으로 구현한 Linear_Regression (0) 2021.04.22 Train_Test_Split & Holdout Sampling (0) 2021.04.22 Gradient_descent(경사 하강법) (0) 2021.04.22