728x90
반응형

사이킷런을 이용하여 붓꽃(Iris) 데이터 품종 예측하기

피처feature는 데이터 세트의 일반 속성(attribute) 머신러닝은 2차원이상의 다차원 데이터에서도 많이 사용되므로 넓은, 범용의 타겟값을 제외한 나머지 속성을 모두 피처로 지칭

target(value), decision(value) - 지도학습시 학습위한 정답데이터 label, class은 지도학습 중 분류의 경우 결정 값을 레이블 또는 클래스로 지칭

분류(classfication)는 다양한 피처와 결정값, 레이블을 모델로 학습한뒤, 별도의 테스트 데이터 세트에서 미지의 레이블 예측 // 학습데이터 세트 & 테스트 데이터세트(성능평가용)

1) 데이터 세트분리 - 학습, 테스트 데이터 분리

2) 모델학습 - 학습 데이터 기반 학습

3) 예측수행 - 학습된 모델을 이용해 테스트 데이터의 분류(붓꽃 종류) 예측 4) 평가 - 예측된 결과값, 테스트 데이터의 실제 결과값 비교해 평가

# 사이킷런 버전 확인
import sklearn
print(sklearn.__version__)

# 0.23.2

 

** 붓꽃 예측을 위한 사이킷런 필요 모듈 로딩 **

from sklearn.datasets import load_iris # 내장 데이터 셋 불러오기
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split # 테스트데이터 분리 함수

 

데이터 세트를 로딩

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 target값: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2
 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 2 2]
iris target명: ['setosa' 'versicolor' 'virginica']
sepal length (cm)	sepal width (cm)	petal length (cm)	petal width (cm)	label
0	5.1	3.5	1.4	0.2	0
1	4.9	3.0	1.4	0.2	0
2	4.7	3.2	1.3	0.2	0

 

** 학습 데이터와 테스트 데이터 세트로 분리 **

X_train, X_test, y_train, y_test = train_test_split(iris_data, iris_label,  # X 피처, Y 타겟 test, train분리
                                                    test_size=0.2, random_state=11)

 

** 학습 데이터 세트로 학습(Train) 수행 **

# DecisionTreeClassifier 객체 생성 
dt_clf = DecisionTreeClassifier(random_state=11)

# 학습 수행 
dt_clf.fit(X_train, y_train)
# DecisionTreeClassifier(random_state=11)

 

** 테스트 데이터 세트로 예측(Predict) 수행 ** 별도의 데이터로 수행

# 학습이 완료된 DecisionTreeClassifier 객체에서 테스트 데이터 세트로 예측 수행. 
pred = dt_clf.predict(X_test)

 

pred

# array([2, 2, 1, 1, 2, 0, 1, 0, 0, 1, 1, 1, 1, 2, 2, 0, 2, 1, 2, 2, 1, 0,
       0, 1, 0, 0, 2, 1, 0, 1])

 

** 예측 정확도 평가 **

from sklearn.metrics import accuracy_score
print('예측 정확도: {0:.4f}'.format(accuracy_score(y_test,pred)))

# 예측 정확도: 0.9333

 

반응형

'Data_Science > ML_Perfect_Guide' 카테고리의 다른 글

2-3. model selection || sklearn  (0) 2021.12.22
2-2. sklearn 내장 데이터 || iris  (0) 2021.12.22
1-3. Pandas 2  (0) 2021.12.22
1-2. Pandas  (0) 2021.12.22
1-1. Numpy  (0) 2021.12.22

+ Recent posts