안 쓰던 블로그
사이킷런 - 붓꽃 품종 분류하기 본문
용어 정리
피처 Feature : 데이터 세트의 일반 속성
레이블, 클래스, 타겟(값), 결정(값) : 데이터의 학습을 위해 주어지는 정답 데이터. 분류의 경우 레이블 또는 클래스로 지칭
지도학습 - 분류(Classification): 명확한 정답이 주어진 데이터를 먼저 학습한 뒤 미지의 정답을 예측한다
붓꽃 데이터 분류하기
사용 라이브러리: 사이킷런(sklearn)
주어지는 붓꽃 데이터 피처(Feature) : 꽃잎의 길이와 너비, 꽃바침의 길이와 너비
결과로 도출하는 붓꽃 데이터 품종(레이블) : Setosa, Vesicolor, Virginica
예측 프로세스
데이터 세트 분리: 데이터를 학습 데이터와 테스트 데이터(미지 데이터)로 분리
모델 학습: 학습 데이터 기반으로 ML 알고리즘 적용하여 모델 학습
예측 수행: 학습된 ML 모델을 이용해 테스트 데이터의 분류(즉, 붓꽃 종류) 예측
평가: 예측된 결괏값과 데이터 데이터의 실제 결괏값을 비교해 ML 모델 성능을 평가
0. 데이터 세트 로딩
import pandas as pd
# 붓꽃 데이터 세트를 로딩합니다.
iris = load_iris()
# iris.data는 Iris 데이터 세트에서 피처(feature)만으로 된 데이터를 numpy로 가지고 있습니다.
iris_data = iris.data
# iris.target은 붓꽃 데이터 세트에서 레이블(결정 값) 데이터를 numpy로 가지고 있습니다.
iris_label = iris.target
print('iris target값:', iris_label)
print('iris target명:', iris.target_names)
# 붓꽃 데이터 세트를 자세히 보기 위해 DataFrame으로 변환합니다.
iris_df = pd.DataFrame(data=iris_data, columns=iris.feature_names)
iris_df['label'] = iris.target
iris_df.head(3)
iris.data: 피처 데이터
iris.target: 레이블
-iris_label: 레이블의 정수형(0, 1, 2..)
-iris_target_name: 레이블의 문자열 이름
iris_df: 데이터 세트
-데이터: iris 데이터
-colums: iris 데이터 중에서 feature_names
-label: 레이블의 정수형(타겟값)
1. 학습 데이터와 테스트 데이터 세트로 분리
X_train, X_test, y_train, y_test = train_test_split(iris_data, iris_label, test_size=0.2, random_state=11)
x_train: 학습용 피처 세트
x_test: 테스트용 피처 세트
y_train: 학습용 타겟 세트
y_test: 테스트용 타겟 세트
test_size 0.2: 테스트는 전체 데이터 세트의 20%
2. 학습 데이터 세트로 학습(Train) 수행
# DecisionTreeClassifier 객체 생성
dt_clf = DecisionTreeClassifier(random_state=11)
# 학습 수행
dt_clf.fit(X_train, y_train)
DecisionTreeClassifier: 결정 트리 분류기
학습용 피처 데이터 세트 X_train에 대하여 학습용 결정 데이터 세트는 y_train 이라고 맵핑한다
3. 데이터 세트로 예측(Predict) 수행
# 학습이 완료된 DecisionTreeClassifier 객체에서 테스트 데이터 세트로 예측 수행.
pred = dt_clf.predict(X_test)
0: setosa
1: versicolor
2: virginica
4. 예측 정확도 평가
from sklearn.metrics import accuracy_score
print('예측 정확도: {0:.4f}'.format(accuracy_score(y_test,pred)))
얼마나 정확하게 예측했는지, 정확도를 구할 때 사용하는 함수
인자로 실제 타겟값과 예측한 타겟값을 넣는다
'머신러닝 > 머신러닝' 카테고리의 다른 글
Object Detection_1. 개념 (0) | 2021.01.10 |
---|---|
구글 코랩colab 사용, 구글 드라이브에 연동 2021기준 (0) | 2021.01.10 |
사이킷런 - 타이타닉 생존자 ML 예측 구현하기 (0) | 2020.12.07 |
Pandas DataFrame 삭제 drop()에서 헷갈리기 쉬운 부분 (0) | 2020.11.11 |
Numpy argsort()로 key-value 형태 데이터 정렬하기 (0) | 2020.11.11 |