機械学習-KNN


◾KNN

  • KNN(K Nearest Neighber):分類または回帰のための非引数
  • 新しいデータがある場合、既存のデータのどのグループを分類するか
  • kは、表示するデータの数を決定する数値です.
  • kは結果を変更します.単位によって変えることもできます.(標準化が必要)
  • 距離計算:ユークリッド幾何学
  • Distance(A,B)=(xB−xA)2+(yB−yA)2Distance(A, B) =\sqrt{(x_{B}-x_{A})^2+(y_{B}-y_{A})^2}Distance(A,B)=(xB​−xA​)2+(yB​−yA​)2​
  • リアルタイム予測を学習する必要はないので、高速ですが、高次元データには適していません.
  • # iris 데이터
    from sklearn.datasets import load_iris
    
    iris = load_iris()
    from sklearn.model_selection import train_test_split
    
    X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=13, stratify=iris.target)
    # kNN 학습
    from sklearn.neighbors import KNeighborsClassifier
    
    knn = KNeighborsClassifier(n_neighbors=5)
    knn.fit(X_train, y_train)
    # 정확성 확인
    from sklearn.metrics import accuracy_score
    
    pred = knn.predict(X_test)
    accuracy_score(y_test, pred)

    from sklearn.metrics import classification_report, confusion_matrix
    
    print(confusion_matrix(y_test, pred))
    print('-'*53)
    print(classification_report(y_test, pred))