![](https://blog.kakaocdn.net/dn/b57Jd8/btr16kcpRPa/CN88ugvBGKbEiFUMgMZpRk/img.png)
k-최근접 이웃 회귀(KNN)
기본적으로 분류이지만 회귀도 가능하다
데이터 가 주어졌을 때, X에 가장 가까운 K개의 A와 B 중에서 근처에 더 많은 갯수의 Class(A or B)로 판단하는 것
![](https://blog.kakaocdn.net/dn/ut4EW/btr2tnrGK8X/Y05ND34cjE0DIdoTUXbGpk/img.png)
지도학습
홀수로 하는 것이 좋다
데이터 X가 주어졌을 때, X에 가장 가까운 K개의 데이터 값을 평균내서 값을 예측하는 것
데이터 범위 밖의 새로운 데이터는 예측이 불가능
![](https://blog.kakaocdn.net/dn/ebU63h/btr2rEAIdur/d9xuSu4sZDwAKd5X56Iwd0/img.png)
(10+9+8)/3의 결과값인 9로 예측
from sklearn.datasets import load_iris
from sklearn.neighbors import KNeighborsClassifier
iris_df = load_iris()
x = iris_df['data']
y = iris_df['target']
x_train, x_test, y_train, y_test = train_test_split(x,y,test_size=0.3, random_state=123)
pd.DataFrame(x_train).head()
model = KNeighborsClassifier()
model.fit(x_train,y_train)
x_pred = np.array([[7,3.2,5.3,1.6]])
y_pred = model.predict(x_pred)
iris_df['target_names'][y_pred]
array(['versicolor'], dtype='<U10')
y_pred = model.predict(x_test)
for i in range(0, len(y_pred)):
y_pred2 = y_pred[i]
print(f'{x_test[i]}:{iris_df["target_names"][y_pred2]}')
[6.3 2.5 4.9 1.5]:virginica
[6.8 3. 5.5 2.1]:virginica
[6.4 2.8 5.6 2.2]:virginica
[5.6 3. 4.1 1.3]:versicolor
[4.9 3.6 1.4 0.1]:setosa
[6. 3. 4.8 1.8]:virginica
[6.3 2.3 4.4 1.3]:versicolor
[4.4 3.2 1.3 0.2]:setosa
[4.4 2.9 1.4 0.2]:setosa
[5.5 2.6 4.4 1.2]:versicolor
[6.9 3.1 5.1 2.3]:virginica
[5.5 4.2 1.4 0.2]:setosa
[5.2 2.7 3.9 1.4]:versicolor
[6.5 3. 5.5 1.8]:virginica
[7.7 3. 6.1 2.3]:virginica
[6.5 3. 5.8 2.2]:virginica
[5.5 3.5 1.3 0.2]:setosa
[4.3 3. 1.1 0.1]:setosa
[6.1 2.9 4.7 1.4]:versicolor
[4.8 3. 1.4 0.3]:setosa
[5.2 3.4 1.4 0.2]:setosa
[6.3 2.8 5.1 1.5]:virginica
[4.8 3.4 1.9 0.2]:setosa
[6.1 3. 4.9 1.8]:virginica
[5.1 3.8 1.6 0.2]:setosa
[5.4 3.4 1.7 0.2]:setosa
[5.4 3.4 1.5 0.4]:setosa
[5.6 2.8 4.9 2. ]:virginica
[7.7 3.8 6.7 2.2]:virginica
[5. 3.6 1.4 0.2]:setosa
[7.4 2.8 6.1 1.9]:virginica
[6. 2.2 5. 1.5]:virginica
[4.7 3.2 1.6 0.2]:setosa
[5.1 3.5 1.4 0.2]:setosa
[6. 2.2 4. 1. ]:versicolor
[5. 2.3 3.3 1. ]:versicolor
[7.9 3.8 6.4 2. ]:virginica
[5.4 3.9 1.7 0.4]:setosa
[5.4 3.9 1.3 0.4]:setosa
[5.8 2.7 3.9 1.2]:versicolor
[5. 2. 3.5 1. ]:versicolor
[5. 3.2 1.2 0.2]:setosa
[6.8 3.2 5.9 2.3]:virginica
[6.7 3. 5.2 2.3]:virginica
[5.8 2.7 5.1 1.9]:virginica
model.score(x_test,y_test)
0.9777777777777777
'Colab > 머신러닝' 카테고리의 다른 글
08. 결정 트리 (Decision Tree) 02 (0) | 2023.03.08 |
---|---|
07. 결정 트리 (Decision Tree) 01 (0) | 2023.03.08 |
05. 로지스틱 회귀분석 Logistic Regression (0) | 2023.03.03 |
04. 선형회귀(linear regression) - 학습, 테스트 (0) | 2023.03.02 |
03. 선형회귀(linear regression) (0) | 2023.02.28 |