처음 시작하는 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 버전 기준으로 작성됨