1. iris 품종 데이터를 사용하여 분류하기!
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
iris = load_iris()
# stratify -> 구성비율 맞추기
# 테스트 세트 훈련세트 나누기
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)
위와 같이 load_iris를 통해 iris 데이터를 불러왔습니다. 그리고 훈련세트와 테스트세트로 나눠 줬습니다.
2. KNeighborsClassifier 사용하고 정확도 확인해보기!
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(X_train, y_train)
pred = knn.predict(X_test)
print(accuracy_score(y_test, pred))
결과는 0. 966으로 높은 정확도가 나왔습니다. 하지만 predict를 할 때 시간이 매우 많이 걸릴 수 있습니다.
그 이유는 알고리즘은 모든 데이터와 새로운 데이터의 거리를 계산하고 가장 가까운 것을 찾기 때문입니다.
3. Classifier_report와 confusion_matrix를 사용하여 더 정확하게 모델 평가하기!
from sklearn.metrics import classification_report, confusion_matrix
print(confusion_matrix(y_test, pred))
print(classification_report(y_test, pred))
# recall값과 precision이 높은 것을 확인 할 수 있습니다.
위의 코드 결과 와 같이 꽤나 높은 정확도를 보여주고 있습니다.
그리고 classification_report의 결과에서 인덱스는 각각 0: setosa, 1: versicolor, 2: virginica 입니다.(iris.target_name으로 확인 가능!!)
보는 것과 같이 확실히 단순한 코드에서 분류하는 것은 높은 정확도를 보여주고 매우 간단한 것을 확인 할 수 있었습니다.
이상입니다
이 글은 제로베이스 데이터 분석 취업 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.
728x90
'Data Analyst > ML' 카테고리의 다른 글
[Zero-Base] 앙상블 기법 - 2 (1) | 2024.10.08 |
---|---|
[Zero-base] 앙상블 기법 - 1 (3) | 2024.10.08 |
[Zero-base] KNN(KNeighbors Classifier) - 1 (0) | 2024.10.07 |
[Zero-base] Precision and Recall (0) | 2024.10.07 |
[Zero-base] Cross Validation(교차 검증) - 2 (0) | 2024.10.04 |