학습시키기 위한 데이터셋을 만들 필요 없이(웹크롤링이나 로컬 이미지 업로드 없이...)
라이브러리에 내장된 데이터셋을 사용해서 학습결과의 정확도(Accuracy) 를 측정하는 내용이다.
파이썬 venv 터미널에서 bash
pip install scikit-learn
전처리후
아래 파이썬 소스코드 스크립트 이다.
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
# 1. 데이터 로드
iris = load_iris()
X = iris.data
y = iris.target
# 2. 데이터 분리
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 3. 모델 학습
model = RandomForestClassifier(random_state=42)
model.fit(X_train, y_train)
# 4. 예측 및 평가
y_pred = model.predict(X_test)
print(f"Accuracy: {accuracy_score(y_test, y_pred):.2f}")
아래 개발툴 실행 결과
iris 는 붓꽃을 의미한다.
위에서 언급한 Accuracy 즉 정확도는
모델의 성능을 측정하는 지표 중 하나로, 전체 샘플 중 올바르게 분류된 샘플의 비율을 나타낸다.
공식이다.
Accuracy = 올바르게 예측된 샘플 수/ 전체 샘플 수(소스코드에서 사용한 데이터 셋)
정확도가 1이라는 결과의 다른 근거는
제공된 iris 데이터셋 클래스 간의 분포와 특징(꽃잎, 꽃받침 길이/너비)이 명확히 구분되므로 분류가 쉽고,
소스에 있는
train_test_split에서 데이터의 20%만 테스트 데이터로 사용했기 때문에, 테스트 샘플의 수가 적어서 쉽게 높은 성능을 달성할 가능성이 있다.(데이터가 많으면 학습결과 는 오류치가 증가하므로 데이터가 굉장히 중요하다.)
머신러닝의 지도학습은 분류(Classification)와 회귀(Regression)일때
- 분류: 정답이 카테고리(예: 위에서 사용한 Iris 품종)
- 회귀: 정답이 연속적인 값(예: 집값 예측)
이것이 머신러닝 지도학습의 분류를 하기위한
데이터셋과 이름을 정해주는 라벨이 필요한 이유이다.
'AI' 카테고리의 다른 글
딥러닝 데이터셋 : MNIST (0) | 2024.11.20 |
---|---|
딥러닝: TensorFlow를 사용한 간단한 MNIST 분류 (1) | 2024.11.20 |