안 쓰던 블로그

사이킷런 - 붓꽃 품종 분류하기 본문

머신러닝/머신러닝

사이킷런 - 붓꽃 품종 분류하기

proqk 2020. 12. 2. 15:51
반응형

용어 정리

피처 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)))

얼마나 정확하게 예측했는지, 정확도를 구할 때 사용하는 함수

인자로 실제 타겟값과 예측한 타겟값을 넣는다

반응형
Comments