Knn codes

8 minute read

Data import

from sklearn import datasets
from sklearn.model_selection import train_test_split as data_split
from sklearn.preprocessing import MinMaxScaler
cancer = datasets.load_breast_cancer()
X = cancer.data
y = cancer.target
#normalization
transformer = MinMaxScaler()
X = transformer.fit_transform(X)
X.shape
(569, 30)
X_train,X_test,y_train,y_test = data_split(X,y,test_size=0.2,random_state=1004)

KNN Algorithm

from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import confusion_matrix
from sklearn import metrics
# define dict to search lowest K & highest Accuracy
acc_dict = {}
def knn(k):
    al = KNeighborsClassifier(k)
    al.fit(X_train, y_train)
    y_pred = al.predict(X_test)
    acc = metrics.accuracy_score(y_test, y_pred)
    acc_dict[k] = acc
    print("K : ",k)
    print("Accuracy : " , acc)
    print("Confusion Matrix \n ----------\n" , confusion_matrix(y_test, y_pred))
    return acc_dict
for i in range(1,100):
    acc_dict = knn(i)
K :  1
Accuracy :  0.9473684210526315
Confusion Matrix 
 ----------
 [[46  5]
 [ 1 62]]
K :  2
Accuracy :  0.9473684210526315
Confusion Matrix 
 ----------
 [[48  3]
 [ 3 60]]
K :  3
Accuracy :  0.9473684210526315
Confusion Matrix 
 ----------
 [[45  6]
 [ 0 63]]
K :  4
Accuracy :  0.9649122807017544
Confusion Matrix 
 ----------
 [[47  4]
 [ 0 63]]
K :  5
Accuracy :  0.9385964912280702
Confusion Matrix 
 ----------
 [[44  7]
 [ 0 63]]
K :  6
Accuracy :  0.9649122807017544
Confusion Matrix 
 ----------
 [[47  4]
 [ 0 63]]
K :  7
Accuracy :  0.9385964912280702
Confusion Matrix 
 ----------
 [[44  7]
 [ 0 63]]
K :  8
Accuracy :  0.9649122807017544
Confusion Matrix 
 ----------
 [[47  4]
 [ 0 63]]
K :  9
Accuracy :  0.956140350877193
Confusion Matrix 
 ----------
 [[46  5]
 [ 0 63]]
K :  10
Accuracy :  0.9649122807017544
Confusion Matrix 
 ----------
 [[47  4]
 [ 0 63]]
K :  11
Accuracy :  0.9385964912280702
Confusion Matrix 
 ----------
 [[44  7]
 [ 0 63]]
K :  12
Accuracy :  0.9385964912280702
Confusion Matrix 
 ----------
 [[44  7]
 [ 0 63]]
K :  13
Accuracy :  0.9385964912280702
Confusion Matrix 
 ----------
 [[44  7]
 [ 0 63]]
K :  14
Accuracy :  0.9473684210526315
Confusion Matrix 
 ----------
 [[45  6]
 [ 0 63]]
K :  15
Accuracy :  0.9385964912280702
Confusion Matrix 
 ----------
 [[44  7]
 [ 0 63]]
K :  16
Accuracy :  0.9473684210526315
Confusion Matrix 
 ----------
 [[45  6]
 [ 0 63]]
K :  17
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  18
Accuracy :  0.9385964912280702
Confusion Matrix 
 ----------
 [[44  7]
 [ 0 63]]
K :  19
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  20
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  21
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  22
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  23
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  24
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  25
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  26
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  27
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  28
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  29
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  30
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  31
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  32
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  33
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  34
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  35
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  36
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  37
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  38
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  39
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  40
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  41
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  42
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  43
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  44
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  45
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  46
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  47
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  48
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  49
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  50
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  51
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  52
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  53
Accuracy :  0.9210526315789473
Confusion Matrix 
 ----------
 [[42  9]
 [ 0 63]]
K :  54
Accuracy :  0.9210526315789473
Confusion Matrix 
 ----------
 [[42  9]
 [ 0 63]]
K :  55
Accuracy :  0.9210526315789473
Confusion Matrix 
 ----------
 [[42  9]
 [ 0 63]]
K :  56
Accuracy :  0.9210526315789473
Confusion Matrix 
 ----------
 [[42  9]
 [ 0 63]]
K :  57
Accuracy :  0.9210526315789473
Confusion Matrix 
 ----------
 [[42  9]
 [ 0 63]]
K :  58
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  59
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  60
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  61
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  62
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  63
Accuracy :  0.9210526315789473
Confusion Matrix 
 ----------
 [[42  9]
 [ 0 63]]
K :  64
Accuracy :  0.9210526315789473
Confusion Matrix 
 ----------
 [[42  9]
 [ 0 63]]
K :  65
Accuracy :  0.9122807017543859
Confusion Matrix 
 ----------
 [[41 10]
 [ 0 63]]
K :  66
Accuracy :  0.9210526315789473
Confusion Matrix 
 ----------
 [[42  9]
 [ 0 63]]
K :  67
Accuracy :  0.9210526315789473
Confusion Matrix 
 ----------
 [[42  9]
 [ 0 63]]
K :  68
Accuracy :  0.9298245614035088
Confusion Matrix 
 ----------
 [[43  8]
 [ 0 63]]
K :  69
Accuracy :  0.9122807017543859
Confusion Matrix 
 ----------
 [[41 10]
 [ 0 63]]
K :  70
Accuracy :  0.9122807017543859
Confusion Matrix 
 ----------
 [[41 10]
 [ 0 63]]
K :  71
Accuracy :  0.9122807017543859
Confusion Matrix 
 ----------
 [[41 10]
 [ 0 63]]
K :  72
Accuracy :  0.9122807017543859
Confusion Matrix 
 ----------
 [[41 10]
 [ 0 63]]
K :  73
Accuracy :  0.9122807017543859
Confusion Matrix 
 ----------
 [[41 10]
 [ 0 63]]
K :  74
Accuracy :  0.9035087719298246
Confusion Matrix 
 ----------
 [[41 10]
 [ 1 62]]
K :  75
Accuracy :  0.9035087719298246
Confusion Matrix 
 ----------
 [[41 10]
 [ 1 62]]
K :  76
Accuracy :  0.9035087719298246
Confusion Matrix 
 ----------
 [[41 10]
 [ 1 62]]
K :  77
Accuracy :  0.9035087719298246
Confusion Matrix 
 ----------
 [[41 10]
 [ 1 62]]
K :  78
Accuracy :  0.9035087719298246
Confusion Matrix 
 ----------
 [[41 10]
 [ 1 62]]
K :  79
Accuracy :  0.9035087719298246
Confusion Matrix 
 ----------
 [[41 10]
 [ 1 62]]
K :  80
Accuracy :  0.9035087719298246
Confusion Matrix 
 ----------
 [[41 10]
 [ 1 62]]
K :  81
Accuracy :  0.9035087719298246
Confusion Matrix 
 ----------
 [[41 10]
 [ 1 62]]
K :  82
Accuracy :  0.9035087719298246
Confusion Matrix 
 ----------
 [[41 10]
 [ 1 62]]
K :  83
Accuracy :  0.9035087719298246
Confusion Matrix 
 ----------
 [[41 10]
 [ 1 62]]
K :  84
Accuracy :  0.9035087719298246
Confusion Matrix 
 ----------
 [[41 10]
 [ 1 62]]
K :  85
Accuracy :  0.9035087719298246
Confusion Matrix 
 ----------
 [[41 10]
 [ 1 62]]
K :  86
Accuracy :  0.9035087719298246
Confusion Matrix 
 ----------
 [[41 10]
 [ 1 62]]
K :  87
Accuracy :  0.8947368421052632
Confusion Matrix 
 ----------
 [[40 11]
 [ 1 62]]
K :  88
Accuracy :  0.9035087719298246
Confusion Matrix 
 ----------
 [[41 10]
 [ 1 62]]
K :  89
Accuracy :  0.9035087719298246
Confusion Matrix 
 ----------
 [[41 10]
 [ 1 62]]
K :  90
Accuracy :  0.9035087719298246
Confusion Matrix 
 ----------
 [[41 10]
 [ 1 62]]
K :  91
Accuracy :  0.8947368421052632
Confusion Matrix 
 ----------
 [[40 11]
 [ 1 62]]
K :  92
Accuracy :  0.8947368421052632
Confusion Matrix 
 ----------
 [[40 11]
 [ 1 62]]
K :  93
Accuracy :  0.9035087719298246
Confusion Matrix 
 ----------
 [[40 11]
 [ 0 63]]
K :  94
Accuracy :  0.8947368421052632
Confusion Matrix 
 ----------
 [[40 11]
 [ 1 62]]
K :  95
Accuracy :  0.9035087719298246
Confusion Matrix 
 ----------
 [[40 11]
 [ 0 63]]
K :  96
Accuracy :  0.9035087719298246
Confusion Matrix 
 ----------
 [[40 11]
 [ 0 63]]
K :  97
Accuracy :  0.9035087719298246
Confusion Matrix 
 ----------
 [[40 11]
 [ 0 63]]
K :  98
Accuracy :  0.8947368421052632
Confusion Matrix 
 ----------
 [[40 11]
 [ 1 62]]
K :  99
Accuracy :  0.9035087719298246
Confusion Matrix 
 ----------
 [[40 11]
 [ 0 63]]
#Search highest Score and lowest K
optimized_k = max(acc_dict,key=acc_dict.get)

Result

#최적화된 k의 값, score, confusion matrix를 출력
knn(optimized_k)
K :  4
Accuracy :  0.9649122807017544
Confusion Matrix 
 ----------
 [[47  4]
 [ 0 63]]





{1: 0.9473684210526315,
 2: 0.9473684210526315,
 3: 0.9473684210526315,
 4: 0.9649122807017544,
 5: 0.9385964912280702,
 6: 0.9649122807017544,
 7: 0.9385964912280702,
 8: 0.9649122807017544,
 9: 0.956140350877193,
 10: 0.9649122807017544,
 11: 0.9385964912280702,
 12: 0.9385964912280702,
 13: 0.9385964912280702,
 14: 0.9473684210526315,
 15: 0.9385964912280702,
 16: 0.9473684210526315,
 17: 0.9298245614035088,
 18: 0.9385964912280702,
 19: 0.9298245614035088,
 20: 0.9298245614035088,
 21: 0.9298245614035088,
 22: 0.9298245614035088,
 23: 0.9298245614035088,
 24: 0.9298245614035088,
 25: 0.9298245614035088,
 26: 0.9298245614035088,
 27: 0.9298245614035088,
 28: 0.9298245614035088,
 29: 0.9298245614035088,
 30: 0.9298245614035088,
 31: 0.9298245614035088,
 32: 0.9298245614035088,
 33: 0.9298245614035088,
 34: 0.9298245614035088,
 35: 0.9298245614035088,
 36: 0.9298245614035088,
 37: 0.9298245614035088,
 38: 0.9298245614035088,
 39: 0.9298245614035088,
 40: 0.9298245614035088,
 41: 0.9298245614035088,
 42: 0.9298245614035088,
 43: 0.9298245614035088,
 44: 0.9298245614035088,
 45: 0.9298245614035088,
 46: 0.9298245614035088,
 47: 0.9298245614035088,
 48: 0.9298245614035088,
 49: 0.9298245614035088,
 50: 0.9298245614035088,
 51: 0.9298245614035088,
 52: 0.9298245614035088,
 53: 0.9210526315789473,
 54: 0.9210526315789473,
 55: 0.9210526315789473,
 56: 0.9210526315789473,
 57: 0.9210526315789473,
 58: 0.9298245614035088,
 59: 0.9298245614035088,
 60: 0.9298245614035088,
 61: 0.9298245614035088,
 62: 0.9298245614035088,
 63: 0.9210526315789473,
 64: 0.9210526315789473,
 65: 0.9122807017543859,
 66: 0.9210526315789473,
 67: 0.9210526315789473,
 68: 0.9298245614035088,
 69: 0.9122807017543859,
 70: 0.9122807017543859,
 71: 0.9122807017543859,
 72: 0.9122807017543859,
 73: 0.9122807017543859,
 74: 0.9035087719298246,
 75: 0.9035087719298246,
 76: 0.9035087719298246,
 77: 0.9035087719298246,
 78: 0.9035087719298246,
 79: 0.9035087719298246,
 80: 0.9035087719298246,
 81: 0.9035087719298246,
 82: 0.9035087719298246,
 83: 0.9035087719298246,
 84: 0.9035087719298246,
 85: 0.9035087719298246,
 86: 0.9035087719298246,
 87: 0.8947368421052632,
 88: 0.9035087719298246,
 89: 0.9035087719298246,
 90: 0.9035087719298246,
 91: 0.8947368421052632,
 92: 0.8947368421052632,
 93: 0.9035087719298246,
 94: 0.8947368421052632,
 95: 0.9035087719298246,
 96: 0.9035087719298246,
 97: 0.9035087719298246,
 98: 0.8947368421052632,
 99: 0.9035087719298246}

Updated: