처음 시작하는 AI: Python으로 아이리스 꽃 분류하기
카테고리
데이터 과학/AI
서브카테고리
인공지능
대상자
- 초보자: 머신러닝과 AI에 관심 있는 초보 개발자, 데이터 과학 입문자
- 난이도: 기초 수준 (Python과 scikit-learn 기초 지식 필요)
핵심 요약
- Iris 데이터셋은 150개 샘플로 구성된 3개 종(0: Iris setosa, 1: Iris versicolor, 2: Iris virginica)의 꽃을 분류하는 "머신러닝 hello world"
- KNeighborsClassifier(k=3)를 사용해 모델을 학습하고 accuracy_score, classification_report로 평가
- 테스트 세트(20%)를 통해 모델의 일반화 성능을 측정하고, 예측을 통해 새로운 데이터에 적용 가능
섹션별 세부 요약
1. 데이터셋 로딩 및 구조 확인
load_iris()
를 통해 4개의 특성(sepal length, sepal width, petal length, petal width)과 3개 종의 라벨 데이터 로딩X.shape = (150,4)
,y.shape = (150,)
확인iris.feature_names
,iris.target_names
을 통해 특성명과 종 라벨명 확인
2. 데이터 시각화 및 탐색
seaborn
을 사용해 'petal length' vs 'petal width' 산점도 생성- Iris setosa는 다른 종과 구분이 명확하지만, versicolor와 virginica는 겹침 확인
- 시각화로 모델 선택 및 데이터 특성 이해에 도움
3. 학습/테스트 데이터 분할
train_test_split
으로 테스트 세트 크기(test_size=0.2
) 설정random_state=42
로 분할 재현성 확보- 학습 세트(80%)와 테스트 세트(20%)로 분리
4. KNN 모델 학습
KNeighborsClassifier(n_neighbors=3)
생성 후fit()
으로 학습- KNN 알고리즘은 이웃 수(k)에 따라 분류 결정
knn.predict()
로 예측 수행
5. 모델 평가 및 예측
accuracy_score(y_test, y_pred)
로 정확도 계산 (예: 1.00)classification_report
로 precision, recall, F1-score 계산- 새로운 꽃의 측정값
[[5.0, 3.3, 1.5, 0.2]]
을 입력해 Iris setosa 예측
결론
- scikit-learn을 사용해 KNN 모델을 구현하고 평가
test_size
,n_neighbors
조정으로 성능 최적화 가능DecisionTreeClassifier
,SVC
등 다른 알고리즘도 시도해보기- scikit-learn 1.2.2 버전 기준으로 작성됨