오답노트
[ML] KNN - KNeighborsRegressor 본문
KNeighborsRegressor
KNN 회귀 알고리즘이다. 수치데이터를 예측할 수 있다
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsRegressor
from sklearn.metrics import *
path = 'boston.csv'
data = pd.read_csv(path)
data.drop(['black'], axis = 1, inplace = True)
target = 'medv'
x = data.drop(target,axis=1)
y = data[target]
x_train, x_val, y_train, y_val = train_test_split(x,y,test_size= .3, random_state= 2022)
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
x_train_s1 = scaler.fit_transform(x_train)
x_val_s1 = scaler.transform(x_val)
from sklearn.preprocessing import StandardScaler
scaler2 = StandardScaler()
x_train_s2 = scaler2.fit_transform(x_train)
x_val_s2 = scaler2.transform(x_val)
model = KNeighborsRegressor()
model.fit(x_train_s1,y_train)
pred = model.predict(x_val_s1)
print(mean_absolute_error(y_val,pred))
print(mean_absolute_percentage_error(y_val,pred))
print(mean_squared_error(y_val,pred,squared=False))
'''
3.035
0.16339021011462934
4.227564933050456
'''
KNN을 사용하기 위해선 데이터가 스케일링이 되어 있어야 한다.
19~27 줄을 확인해보면 Nomalize 방식과 Standard 방식으로 스케일링을 하였다.
29~31 줄에서 KNN 객체를 생성하여 스케일링한 데이터로 모델링 후, 예측한다.
33~35 줄에서 모델의 성능을 평가한다.
Hyper Parameter
k 값이나 거리 계산법을 사용자가 직접 지정하여 사용할 수 있다.
k 는 데이터 개수의 제곱근
거리 계산법은 유클리디안 거리법과 맨해튼 거리법을 사용했다
k = int(x_train.shape[0] ** (1/2))
model2 = KNeighborsRegressor(n_neighbors=k,metric='manhattan')
model2.fit(x_train_s2,y_train)
pred2 = model2.predict(x_val_s2)
print(mean_absolute_error(y_val,pred2))
print(mean_absolute_percentage_error(y_val,pred2))
print(mean_squared_error(y_val,pred2,squared=False))
'''
3.1344298245614026
0.17818090956683844
4.475827476030737
'''
model3 = KNeighborsRegressor(n_neighbors=k,metric='euclidean')
model3.fit(x_train_s1,y_train)
pred3 = model3.predict(x_val_s1)
print(mean_absolute_error(y_val,pred3))
print(mean_absolute_percentage_error(y_val,pred3))
print(mean_squared_error(y_val,pred3,squared=False))
'''
3.4578947368421056
0.19219441055469952
4.873803855187795
'''
KNeighborsRegressor에서
n_neighbors 옵션은 k 값을 의미한다 default 값은 5이다.
metric 옵션은 거리법을 선택할 수 있다. 기본은 minkowski이다.
'Python > ML' 카테고리의 다른 글
[ML] 범주형 데이터 모델 평가 방법 (0) | 2022.08.23 |
---|---|
[ML] 로지스틱 회귀(Logistic Regression) (0) | 2022.08.23 |
[ML] KNN (K-Nearest Neighbors) (0) | 2022.08.23 |
[ML] 선형회귀 (Linear Regression) (0) | 2022.08.22 |
[ML] 모델링 개요 (0) | 2022.08.22 |