from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
import pandas as pd
#붓꽃 데이터 세트를 로딩하자
iris = load_iris()
#iris.data는 데이터 세트에서 피처(feature)만으로 된 데이터 numpy로 가지고 있다.
iris_data = iris.data
#iris.target은 붓꽃 데이터 세트에서 레이블 데이터를 numpy로 가지고 있습니다.
iris_label = iris.target
print('iris target 값 ', iris_label)
print('iris target 명' , iris.target_names)
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']
#붓꽅 데이터 세트를 자세히 보기 위해 DataFrame으로 변환합니다.
iris_df = pd.DataFrame(data=iris_data, columns=iris.feature_names)
iris_df['label'] = iris.target
iris_df.head(3)
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,
test_size = 0.2, random_state=11)
#1번째 iris_data세트
#2번째는 레이블 데이터 세트
#3번째 파라미터는 테스트 사이즈의 크기
#4번째 random_state는 수행할 떄마다 동일한 데이터 세트로 분리하기 위해 일정한 값으로 부여한다
#숫자 자체는 어떤 값을 지정해도 상관없다
#학습용 피처데이터 세트를 X_train 으로 테스트용 피처데이트용으로 X_test
#학습용 레이블은 y_train , 학습용 테스트용 y_test로 반환합니다.
#DecisionTreeClassifiersms 사일런킷으 의사 결정 트리 클래스 객체를 생성한다.
#fir()메서드에 학습용 피처데이터속성과 결정값 데이터 세트를 입력해 호출하며 학습을 수행합니다.
#DecisionTreeClassifier 객체를 생성하자
df_clf = DecisionTreeClassifier(random_state = 11)
df_clf.fit(X_train, y_train)
#학습을 수행함 피처데이터 세트와 학습용 결정 레이블 돌아감
DecisionTreeClassifier(random_state=11)
#학습완료!
#학습이 완료된 DecisionTreeClassifier 객체에서 테스트 데이터 세트로 예측을 수행하자
pred = df_clf.predict(X_test)
#예측 성능평가해보자
#평가방법은 많으나 예측결과가 얼마나 맞는지 평가하는 지표입니다.
from sklearn.metrics import accuracy_score
#accuracy_score() 첫번쨰 파라미터로 실제 레이블 데이터 세트 두번째로 예측 레이블 세트를 입력하면 된다.
print('예측 정확도:{0:4f}'.format(accuracy_score(y_test, pred)))
예측 정확도:0.933333
#데이터 세트를 분리한다
#모델을 학습
#예측수행
#평가
#사이킷런은 분류(Classification)과 회귀(Regression)의 다양한 알고리즘을 구현함
# Classification + Regression = Estimator이라 부른다.
# fit()과 predict() 내부에서 구현한다.
# cross_val_score()같운 evaluation함수 GridSearchCV.fit() 함수 내에서 이 Estimatordml fit()과 predict()를
# 호출해서 평가 하거나 하이퍼 파라미터를 튜닝한다.