300x250

<이론>


<실습>

1. K-Nearest Neighbor Classifier Example

  • 필요한 라이브러리 입력
import numpy as np
from matplotlib import pyplot as plt
from sklearn.neighbors import KNeighborsClassifier
cs

        - sklearn.neighbors의 KNeighborsClassifier import!

 

  • features 입력
  • import pandas as pd
    import numpy as np
    from sklearn.neighbors import KNeighborsClassifier
    from sklearn.model_selection import train_test_split
    from sklearn.metrics import confusion_matrix
    from sklearn.metrics import accuracy_score
    from sklearn import preprocessing
    cs
 
# first class (blue)
x_blue = np.array([0.30.511.41.72])
y_blue = np.array([14.52.31.98.94.1])
 
# second class (red)
x_red = np.array([3.33.544.45.76])
y_red = np.array([71.56.31.92.97.1])
 
# features
= np.array([[0.31], [0.54.5], [12.3], [1.41.9], [1.78.9], [24.1], [3.37], [3.51.5], [46.3], [4.41.9], [5.72.9], [67.1]])
= np.array([000000111111]) # 0 : blue, 1 : red
cs

        - x_blue : 파란 점의 x좌표

        - y_blue : 파란 점의 y좌표

        - x_red : 빨간 점의 x좌표

        - y_red : 빨간 점의 y좌표

        - X : [x좌표, y좌표]

        - y : 파란색이면 0, 빨간색이면 1

 

    • plot
# plot
plt.plot(x_blue, y_blue, 'ro', color='blue')
plt.plot(x_red, y_red, 'ro', color='red')
plt.plot(35'ro', color='green', markersize=15)
plt.axis([-0.510-0.510])
plt.show()
cs

   - 결과

 

  • K-Nearest Neighbor Classifier
  • #KNclassifier
    classifier = KNeighborsClassifier(n_neighbors=3# concerns 3 neighbors
    classifier.fit(X, y)
     
    predict = classifier.predict(np.array([[55]]))
    print(predict)
     
    plt.show()
    cs

       - predict : [5, 5] 점 분류 (빨강 or 파랑)   - 결과
  •  
  •    - classifier : 3 개의 이웃한 점 고려

 

 

 

2. Credit_data.csv 분류

 

    • 필요한 라이브러리 입력
import pandas as pd
import numpy as np
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn import preprocessing
cs

    - train_test_split : train data와 test data를 구분해줌

    - preprocessing : 

 

    • data 불러오기
# Features
data = pd.read_csv("credit_data.csv")
 
features = data[["income""age""loan"]]
target = data.default
 
# Machine learning handle arrays not data-frames
= np.array(features).reshape(-13# 3개의 열로 나타내줌
= np.array(target)
 
print(X)
print(y)
cs

    - credit_data.csv 파일

credit_data.csv
0.15MB

    - print(X), print(y)의 결과

 

  • Normalization (Preprocessing)

 

    • Preprocessing and Data Splitting
# Preprocessing
= preprocessing.MinMaxScaler().fit_transform(X)
 
# train, test spliting
feature_train, feature_test, target_train, target_test = train_test_split(X, y, test_size=0.3)
 
# Classifier
model = KNeighborsClassifier(n_neighbors=20)
fitted_model = model.fit(feature_train, target_train) # train
predictions = fitted_model.predict(feature_test) # test
 
print(confusion_matrix(target_test, predictions))
print(accuracy_score(target_test, predictions))
cs

    - 결과

 

    • 정확도를 더 올리기 위해 Cross Validation 적용
from sklearn.model_selection import cross_val_score
cs
# Classifier
model = KNeighborsClassifier(n_neighbors=32)
fitted_model = model.fit(feature_train, target_train) # train
predictions = fitted_model.predict(feature_test) # test
 
cross_valid_scores = []
 
for k in range(1100):
    knn = KNeighborsClassifier(n_neighbors=k)
    scores = cross_val_score(knn, X, y, cv=10, scoring='accuracy'# ten values
    cross_valid_scores.append(scores.mean())
 
print("Optimal k with cross-validation: ", np.argmax(cross_valid_scores))
 
print(confusion_matrix(target_test, predictions))
print(accuracy_score(target_test, predictions))
cs
       -실행 후 optimal k 값(32)을 n_neighbors로 변경하였음.

        - 결과

        - 정확도 : 98.16%

        - Logistic Regression Model은 K-Nearest Neighbor Model보다 복잡하고, 정확성이 떨어짐을 알 수 있음.

728x90
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기