k-최근접 이웃 알고리즘(k-NN)
k-NN이란 무엇입니까?
통계에서
k-nearest neighbors algorithm (k-NN)
는 Evelyn Fix
및 Joseph Hodges
에 의해 1951
에서 개발되고 나중에 Thomas Cover
에 의해 확장된 비모수적 분류 방법입니다. 분류 및 회귀에 사용됩니다. 두 경우 모두 입력에는 데이터 세트에 가까운 학습 모델이 포함됩니다. 출력은 k-NN이 분류 또는 회귀에 사용되는지 여부에 따라 달라집니다.k = 1
이면 가장 가까운 이웃의 클래스에 개체가 제공됩니다. k
입니다. 데이터 세트
모델에 사용된 데이터 세트는
“Fish.csv”
입니다. 데이터 세트는 159 rows
및 7 columns
로 구성됩니다.데이터 세트 설명
데이터 세트에 사용되는 속성은 다음과 같습니다.
독립 속성
데이터세트의 독립 속성은 다음과 같습니다.
종속 속성
데이터세트의 종속 속성은 다음과 같습니다.
대상 속성
데이터세트의 대상 속성은 다음과 같습니다.
모델을 훈련시키기 위해 다른 속성을 사용하여 물고기의 무게를 예측할 것입니다.
데이터 세트 헤드
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt
from math import sqrt
from sklearn import neighbors
from sklearn.model_selection import train_test_split
import pandas as pd
df = pd.read_csv('/content/Fish.csv')
df.head()
다음은 모델에 사용된 데이터 세트의 헤드입니다.
데이터세트 전처리
물고기의 무게를 예측하기 위해 속성
Species
이 필요하지 않기 때문입니다. 따라서 Species
속성을 삭제합니다.df.drop(['Species'], axis=1, inplace=True)
df = pd.get_dummies(df)
df
최종 데이터 세트는 다음과 같습니다.
모델 교육 및 테스트
데이터 세트를 전처리한 후 모델 훈련을 위해 전처리된 데이터를 사용했습니다. 이를 위해 데이터를 분할하고 테스트용 데이터
30%
와 모델 교육용 데이터70%
를 선택합니다. k up to 20
에 대한 모델을 테스트하여 최소값Root Mean Square Error (RMSE)
을 얻습니다.# Model Training
train, test = train_test_split(df, test_size=0.3)
x_train = train.drop('Weight', axis=1)
y_train = train['Weight']
x_test = test.drop('Weight', axis=1)
y_test = test['Weight']
%matplotlib inline
# Model Testing
rmse_val = []
for K in range(20):
K = K+1
model = neighbors.KNeighborsRegressor(n_neighbors=K)
# Model Fitting
model.fit(x_train, y_train)
pred = model.predict(x_test)
error = sqrt(mean_squared_error(y_test, pred))
rmse_val.append(error)
print('RMSE value for K = ', K, 'is:', error)
# Plotting RMSE values against value of K
curve = pd.DataFrame(rmse_val)
curve.plot()
서로 다른 k 값에 대한
RMSE
는 다음과 같습니다.RMSE가
k = 3
에 대해 최소라는 것은 위의 그림에서 알 수 있습니다.RMSE value for k = 3 is: 47.21824893415052
예측 결과
그래서 우리는 물고기의 무게 예측에
k = 3
를 사용했습니다. 대략 47
인 3에서 최소 RMSE를 얻습니다.# Model Fitting Minimum RMSE
model = neighbors.KNeighborsRegressor(n_neighbors=3)
model.fit(x_train, y_train)
pred = model.predict(x_test)
error = sqrt(mean_squared_error(y_test, pred))
rmse_val.append(error) # store rmse values
print('RMSE value for K = ', 3, 'is:', error)
# Prediction Results
test['predicted weights'] = pred
test
예측 결과는 아래와 같습니다.
참조
Reference
이 문제에 관하여(k-최근접 이웃 알고리즘(k-NN)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/umairshabbir_83/k-nearest-neighbors-algorithm-k-nn-46ml텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)