본문 바로가기
백엔드/파이썬

[Python] 3주차: AI를 향한 첫걸음

by AI읽어주는남자 2025. 11. 21.
반응형

3주차: AI를 향한 첫걸음

기본기를 다졌으니, 이제부터 진짜 AI의 세계로 한 걸음 내디딜 시간입니다. 3주차 목표는 다른 개발자들이 만들어 둔 강력한 'AI 도구(라이브러리)'를 내 파이썬 코드에 가져와 사용하는 방법을 배우는 것입니다.

1. 라이브러리(Library)와 pip

  • 라이브러리/패키지: 특정 기능들을 미리 만들어 둔 코드 모음입니다. 우리는 이걸 가져와서 복잡한 기능을 쉽게 구현할 수 있습니다. AI 개발은 이런 라이브러리 없이는 거의 불가능합니다.
  • pip: 파이썬의 공식 패키지 관리자입니다. 필요한 라이브러리를 설치, 업그레이드, 삭제할 때 사용하는 명령어입니다.

pip 사용법 (명령 프롬프트 cmd에서 실행):

# 특정 라이브러리 설치하기
pip install 라이브러리이름

# 설치된 라이브러리 목록 보기
pip list

# 라이브러리 삭제하기
pip uninstall 라이브러리이름

2. 첫 AI 라이브러리: Scikit-Learn

  • Scikit-Learn (사이킷런): 가장 대표적인 머신러닝 라이브러리 중 하나입니다. 분류, 회귀, 클러스터링 등 수많은 머신러닝 알고리즘과 학습용 데이터셋을 제공하여 AI/머신러닝 입문용으로 가장 좋습니다.

Scikit-learn 설치하기:

pip install scikit-learn

3. 내 생애 첫 머신러닝 코드: 붓꽃 품종 분류하기

Scikit-learn에 내장된 '붓꽃(Iris)' 데이터를 이용해, 꽃잎과 꽃받침의 크기를 보고 어떤 품종의 붓꽃인지 예측하는 간단한 AI 모델을 만들어 보겠습니다.

  • 분류(Classification): AI의 대표적인 작업 중 하나로, 주어진 데이터를 정해진 카테고리(품종 A, B, C 등) 중 하나로 구분하는 문제입니다.
# 1. 필요한 라이브러리와 도구들을 가져옵니다.
from sklearn.datasets import load_iris # 붓꽃 데이터셋
from sklearn.tree import DecisionTreeClassifier # 결정 트리 분류기 모델
from sklearn.model_selection import train_test_split # 학습/테스트 데이터 분리 도구
from sklearn.metrics import accuracy_score # 정확도 측정 도구

# 2. 데이터 준비하기
iris_data = load_iris()
X = iris_data.data # 문제지 (꽃의 특징 데이터)
y = iris_data.target # 정답지 (꽃의 품종)

# 3. 학습용 데이터와 테스트용 데이터로 분리하기
# AI를 평가하려면, 공부한 문제(학습용)가 아닌 새로운 문제(테스트용)로 시험을 봐야 합니다.
# 80%는 학습에 쓰고, 20%는 나중에 모델을 평가하는 데 사용합니다.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 4. AI 모델(결정 트리) 생성 및 학습시키기
# DecisionTreeClassifier는 "만약 A가 B보다 크면 C 그룹이다" 와 같은 질문(규칙)들을
# 스스로 만들어나가는 똑똑한 모델입니다.
model = DecisionTreeClassifier()

# .fit() 메소드는 모델에게 문제지(X_train)와 정답지(y_train)를 주고 학습(fit)을 시키는 과정입니다.
model.fit(X_train, y_train)
print("AI 모델 학습 완료!")

# 5. 학습된 모델로 새로운 문제(테스트 데이터)를 풀어보게 하기
# .predict() 메소드는 학습이 끝난 모델에게 새로운 문제(X_test)를 주고 예측(predict)을 시키는 과정입니다.
y_pred = model.predict(X_test)

# 6. AI 모델의 성능 평가하기
# 모델의 예측(y_pred)과 실제 정답(y_test)이 얼마나 일치하는지 '정확도'를 계산합니다.
accuracy = accuracy_score(y_test, y_pred)
print(f"모델 예측 정확도: {accuracy * 100:.2f}%")

# 7. 진짜 새로운 데이터로 예측해보기
# 예를 들어, 꽃받침 길이 5.0, 폭 3.5, 꽃잎 길이 1.5, 폭 0.2 인 새로운 붓꽃이 있다면?
# 모델은 이 붓꽃이 어떤 품종일지 예측할 수 있습니다.
# 참고: 데이터는 항상 2D 배열 형태로 넣어주어야 합니다. [[...]]
new_flower = [[5.0, 3.5, 1.5, 0.2]]
prediction = model.predict(new_flower)

predicted_species = iris_data.target_names[prediction[0]]
print(f"새로운 붓꽃의 예측 품종은 '{predicted_species}' 입니다.")

위 코드를 iris_ai.py로 저장하고 실행해보세요. 모델이 꽤 높은 정확도로 붓꽃 품종을 맞추는 것을 볼 수 있습니다. 이것이 바로 머신러닝의 기본 원리입니다!


3주차 과제

  • 와인 종류 예측하기:
    1. 붓꽃 데이터(load_iris) 대신, 와인 데이터(load_wine)를 사용해보세요.
      • from sklearn.datasets import load_wine
      • wine_data = load_wine()
    2. 붓꽃 예제 코드의 iris_data 부분을 wine_data로 바꾸면 거의 동일하게 작동합니다.
    3. 와인 데이터는 어떤 특징(X)들을 가지고 있는지, 와인의 종류(y)는 몇 가지가 있는지 print() 문으로 탐색해보세요. (print(wine_data['DESCR']) 을 사용하면 데이터 설명을 볼 수 있습니다.)
    4. 최종적으로 와인 종류를 예측하는 모델의 정확도는 몇 %가 나오는지 확인해보세요.
반응형