반응형
from sklearn import datasets
irisData = datasets.load_iris()
x_total = irisData.data
y_total = irisData.target
# 데이터 분할
from sklearn.model_selection import train_test_split, cross_val_score
x_train, x_test, y_train, y_test = train_test_split(x_total, y_total, random_state=10)
# 모형 학습
from sklearn.neighbors import KNeighborsClassifier
kNN = KNeighborsClassifier()
kNN.fit(x_train, y_train)
# 학습 결과 및 성능 평가
predictedClass = kNN.predict(x_test)
print('훈련 집합의 정확도 : ', kNN.score(x_train, y_train))
print('테스트 집합의 정확도 : ', (predictedClass==y_test).mean())
# 가장 적절한 이웃의 개수는?
train_acc = []
test_acc = []
for n in range(1,50):
temp_kNN = KNeighborsClassifier(n_jobs=-1, n_neighbors=n)
temp_kNN.fit(x_train, y_train)
predictionResult = temp_kNN.predict(x_test)
train_acc.append(temp_kNN.score(x_train, y_train))
test_acc.append((predictionResult==y_test).mean())
# 시각화를 통한 결과 확인
import matplotlib.pyplot as plt
import numpy as np
plt.figure(figsize=(12,9))
plt.plot(range(1,50), train_acc, label='training dataset')
plt.plot(range(1,50), test_acc, label='test dataset')
plt.xlabel("# of neighbors")
plt.ylabel("Accuracy")
plt.xticks(np.arange(0,50,step=1))
plt.legend()
위 코드는 붓꽃 데이터를 이용하여 K-NN 알고리즘을 학습하고, 이웃의 개수가 변할 때 모델의 정확도 변화를 시각화한 코드입니다.
먼저 datasets.load_iris() 함수를 이용하여 붓꽃 데이터를 로드하고, train_test_split 함수를 이용하여 데이터를 분할합니다. 이후 KNeighborsClassifier 함수를 이용하여 K-NN 모델을 학습하고, score 함수를 이용하여 훈련 집합과 테스트 집합의 정확도를 출력합니다.
그 다음, 이웃의 개수를 변화시키면서 모델의 정확도를 시각화하기 위해, for loop를 이용하여 이웃의 개수를 1부터 50까지 변화시키면서 모델을 재학습하고, score 함수와 mean 함수를 이용하여 훈련 집합과 테스트 집합에서의 정확도를 각각 계산합니다. 이렇게 계산된 정확도 값을 train_acc와 test_acc 리스트에 저장합니다.
마지막으로 matplotlib 라이브러리를 이용하여 이웃의 개수가 변할 때 훈련 집합과 테스트 집합의 정확도를 시각화합니다. x축은 이웃의 개수를 나타내고, y축은 정확도를 나타냅니다. plot 함수를 이용하여 훈련 집합과 테스트 집합의 정확도를 각각 시각화하고, legend 함수를 이용하여 범례를 추가합니다.
반응형
'Data Science' 카테고리의 다른 글
SVM(Support Vector Machine)은 지도 학습 알고리즘 (0) | 2023.03.20 |
---|---|
[AI와빅데이터경영입문] 트리분석 graphviz (0) | 2023.03.09 |
[AI와빅데이터경영입문] 선형회귀분석 (0) | 2023.03.09 |
[AI와빅데이터경영입문] 나이브베이즈 (0) | 2023.03.09 |
[AI와빅데이터경영입문] 데이터시각화 (0) | 2023.03.09 |