반응형
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

bro's coding

sklearn.KNeighborsClassifier.basic 본문

[AI]/python.sklearn

sklearn.KNeighborsClassifier.basic

givemebro 2020. 4. 6. 19:58
반응형
import numpy as np
import matplotlib.pyplot as plt
iris=np.loadtxt('iris.csv',skiprows=1,delimiter=',',usecols=range(4))
iris=np.c_[iris,[0]*50+[1]*50+[2]*50]
iris
X=iris[:,:4]
y=iris[:,4]
더보기

array([[5.1, 3.5, 1.4, 0.2, 0. ], [4.9, 3. , 1.4, 0.2, 0. ], [4.7, 3.2, 1.3, 0.2, 0. ], [4.6, 3.1, 1.5, 0.2, 0. ], [5. , 3.6, 1.4, 0.2, 0. ], [5.4, 3.9, 1.7, 0.4, 0. ], [4.6, 3.4, 1.4, 0.3, 0. ], [5. , 3.4, 1.5, 0.2, 0. ], [4.4, 2.9, 1.4, 0.2, 0. ], [4.9, 3.1, 1.5, 0.1, 0. ], [5.4, 3.7, 1.5, 0.2, 0. ], [4.8, 3.4, 1.6, 0.2, 0. ], [4.8, 3. , 1.4, 0.1, 0. ], [4.3, 3. , 1.1, 0.1, 0. ], [5.8, 4. , 1.2, 0.2, 0. ], [5.7, 4.4, 1.5, 0.4, 0. ], [5.4, 3.9, 1.3, 0.4, 0. ], [5.1, 3.5, 1.4, 0.3, 0. ], [5.7, 3.8, 1.7, 0.3, 0. ], [5.1, 3.8, 1.5, 0.3, 0. ], [5.4, 3.4, 1.7, 0.2, 0. ], [5.1, 3.7, 1.5, 0.4, 0. ], [4.6, 3.6, 1. , 0.2, 0. ], [5.1, 3.3, 1.7, 0.5, 0. ], [4.8, 3.4, 1.9, 0.2, 0. ], [5. , 3. , 1.6, 0.2, 0. ], [5. , 3.4, 1.6, 0.4, 0. ], [5.2, 3.5, 1.5, 0.2, 0. ], [5.2, 3.4, 1.4, 0.2, 0. ], [4.7, 3.2, 1.6, 0.2, 0. ], [4.8, 3.1, 1.6, 0.2, 0. ], [5.4, 3.4, 1.5, 0.4, 0. ], [5.2, 4.1, 1.5, 0.1, 0. ], [5.5, 4.2, 1.4, 0.2, 0. ], [4.9, 3.1, 1.5, 0.1, 0. ], [5. , 3.2, 1.2, 0.2, 0. ], [5.5, 3.5, 1.3, 0.2, 0. ], [4.9, 3.1, 1.5, 0.1, 0. ], [4.4, 3. , 1.3, 0.2, 0. ], [5.1, 3.4, 1.5, 0.2, 0. ], [5. , 3.5, 1.3, 0.3, 0. ], [4.5, 2.3, 1.3, 0.3, 0. ], [4.4, 3.2, 1.3, 0.2, 0. ], [5. , 3.5, 1.6, 0.6, 0. ], [5.1, 3.8, 1.9, 0.4, 0. ], [4.8, 3. , 1.4, 0.3, 0. ], [5.1, 3.8, 1.6, 0.2, 0. ], [4.6, 3.2, 1.4, 0.2, 0. ], [5.3, 3.7, 1.5, 0.2, 0. ], [5. , 3.3, 1.4, 0.2, 0. ], [7. , 3.2, 4.7, 1.4, 1. ], [6.4, 3.2, 4.5, 1.5, 1. ], [6.9, 3.1, 4.9, 1.5, 1. ], [5.5, 2.3, 4. , 1.3, 1. ], [6.5, 2.8, 4.6, 1.5, 1. ], [5.7, 2.8, 4.5, 1.3, 1. ], [6.3, 3.3, 4.7, 1.6, 1. ], [4.9, 2.4, 3.3, 1. , 1. ], [6.6, 2.9, 4.6, 1.3, 1. ], [5.2, 2.7, 3.9, 1.4, 1. ], [5. , 2. , 3.5, 1. , 1. ], [5.9, 3. , 4.2, 1.5, 1. ], [6. , 2.2, 4. , 1. , 1. ], [6.1, 2.9, 4.7, 1.4, 1. ], [5.6, 2.9, 3.6, 1.3, 1. ], [6.7, 3.1, 4.4, 1.4, 1. ], [5.6, 3. , 4.5, 1.5, 1. ], [5.8, 2.7, 4.1, 1. , 1. ], [6.2, 2.2, 4.5, 1.5, 1. ], [5.6, 2.5, 3.9, 1.1, 1. ], [5.9, 3.2, 4.8, 1.8, 1. ], [6.1, 2.8, 4. , 1.3, 1. ], [6.3, 2.5, 4.9, 1.5, 1. ], [6.1, 2.8, 4.7, 1.2, 1. ], [6.4, 2.9, 4.3, 1.3, 1. ], [6.6, 3. , 4.4, 1.4, 1. ], [6.8, 2.8, 4.8, 1.4, 1. ], [6.7, 3. , 5. , 1.7, 1. ], [6. , 2.9, 4.5, 1.5, 1. ], [5.7, 2.6, 3.5, 1. , 1. ], [5.5, 2.4, 3.8, 1.1, 1. ], [5.5, 2.4, 3.7, 1. , 1. ], [5.8, 2.7, 3.9, 1.2, 1. ], [6. , 2.7, 5.1, 1.6, 1. ], [5.4, 3. , 4.5, 1.5, 1. ], [6. , 3.4, 4.5, 1.6, 1. ], [6.7, 3.1, 4.7, 1.5, 1. ], [6.3, 2.3, 4.4, 1.3, 1. ], [5.6, 3. , 4.1, 1.3, 1. ], [5.5, 2.5, 4. , 1.3, 1. ], [5.5, 2.6, 4.4, 1.2, 1. ], [6.1, 3. , 4.6, 1.4, 1. ], [5.8, 2.6, 4. , 1.2, 1. ], [5. , 2.3, 3.3, 1. , 1. ], [5.6, 2.7, 4.2, 1.3, 1. ], [5.7, 3. , 4.2, 1.2, 1. ], [5.7, 2.9, 4.2, 1.3, 1. ], [6.2, 2.9, 4.3, 1.3, 1. ], [5.1, 2.5, 3. , 1.1, 1. ], [5.7, 2.8, 4.1, 1.3, 1. ], [6.3, 3.3, 6. , 2.5, 2. ], [5.8, 2.7, 5.1, 1.9, 2. ], [7.1, 3. , 5.9, 2.1, 2. ], [6.3, 2.9, 5.6, 1.8, 2. ], [6.5, 3. , 5.8, 2.2, 2. ], [7.6, 3. , 6.6, 2.1, 2. ], [4.9, 2.5, 4.5, 1.7, 2. ], [7.3, 2.9, 6.3, 1.8, 2. ], [6.7, 2.5, 5.8, 1.8, 2. ], [7.2, 3.6, 6.1, 2.5, 2. ], [6.5, 3.2, 5.1, 2. , 2. ], [6.4, 2.7, 5.3, 1.9, 2. ], [6.8, 3. , 5.5, 2.1, 2. ], [5.7, 2.5, 5. , 2. , 2. ], [5.8, 2.8, 5.1, 2.4, 2. ], [6.4, 3.2, 5.3, 2.3, 2. ], [6.5, 3. , 5.5, 1.8, 2. ], [7.7, 3.8, 6.7, 2.2, 2. ], [7.7, 2.6, 6.9, 2.3, 2. ], [6. , 2.2, 5. , 1.5, 2. ], [6.9, 3.2, 5.7, 2.3, 2. ], [5.6, 2.8, 4.9, 2. , 2. ], [7.7, 2.8, 6.7, 2. , 2. ], [6.3, 2.7, 4.9, 1.8, 2. ], [6.7, 3.3, 5.7, 2.1, 2. ], [7.2, 3.2, 6. , 1.8, 2. ], [6.2, 2.8, 4.8, 1.8, 2. ], [6.1, 3. , 4.9, 1.8, 2. ], [6.4, 2.8, 5.6, 2.1, 2. ], [7.2, 3. , 5.8, 1.6, 2. ], [7.4, 2.8, 6.1, 1.9, 2. ], [7.9, 3.8, 6.4, 2. , 2. ], [6.4, 2.8, 5.6, 2.2, 2. ], [6.3, 2.8, 5.1, 1.5, 2. ], [6.1, 2.6, 5.6, 1.4, 2. ], [7.7, 3. , 6.1, 2.3, 2. ], [6.3, 3.4, 5.6, 2.4, 2. ], [6.4, 3.1, 5.5, 1.8, 2. ], [6. , 3. , 4.8, 1.8, 2. ], [6.9, 3.1, 5.4, 2.1, 2. ], [6.7, 3.1, 5.6, 2.4, 2. ], [6.9, 3.1, 5.1, 2.3, 2. ], [5.8, 2.7, 5.1, 1.9, 2. ], [6.8, 3.2, 5.9, 2.3, 2. ], [6.7, 3.3, 5.7, 2.5, 2. ], [6.7, 3. , 5.2, 2.3, 2. ], [6.3, 2.5, 5. , 1.9, 2. ], [6.5, 3. , 5.2, 2. , 2. ], [6.2, 3.4, 5.4, 2.3, 2. ], [5.9, 3. , 5.1, 1.8, 2. ]])

from sklearn.neighbors import KNeighborsClassifier
#K:측정값에 관한 것(줄여서 KNN)
knn=KNeighborsClassifier(n_neighbors=5)
knn.fit(X,y) # 150개를 보여준다 : fit(data를 보여줘서 모델을 확장시킴)
knn.score(X,y)# 맞춘 확률(잘 하나 안 하나 겁증하는 것)
# 위 예제는 교육 시킨 데이터를 확인 데이터에 그대로 넣었기 때문에 확률이 높게 나온다.
더보기

0.9666666666666667

pred_y=knn.predict(X)
display(y,pred_y)
abs(y-pred_y).sum()
더보기

array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2.])

array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 2., 1., 2., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 2., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 2., 2., 2., 2., 2., 2., 1., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 1., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2.])

5.0

(y==pred_y).mean()
#score와 같은 값
더보기

0.9666666666666667

X[y!=pred_y]
더보기

array([[5.9, 3.2, 4.8, 1.8], [6.3, 2.5, 4.9, 1.5], [6. , 2.7, 5.1, 1.6], [4.9, 2.5, 4.5, 1.7], [6. , 2.2, 5. , 1.5]])

np.where(pred_y!=y)
#위치를 알아내고자 한다면 np.where을 써라!!!![index]->결과는 tuple

np.where(pred_y!=y)[0]
# 사용 할때 인덱스 써줘야하는 거 실수 많이 함 (because of tuple)
plt.figure(figsize=[12,8])

bad=X[np.where(pred_y!=y)[0]]
plt.scatter(bad[:,2],bad[:,3],marker='*',c='r',s=300)
plt.scatter(X[:,2],X[:,3],c=y)

반응형
Comments