article thumbnail image
Published 2021. 8. 25. 19:58

예측 프로세스

 

1. 데이터 셋 분리

(train data, test data로 분리)

2. 모델 학습

(train data 기반 ML 알고리즘을 적용해 모델을 학습)

3. 예측 수행

(학습된 ML 모델로 test data 예측)

4. 평가

(예측된 test data의 결과와 실제 test data의 결과 비교 후 성능 평가)

 

 

 


Skitlearn

  1. Estimator
    1. fit() : 학습 
    2. predict() : 예측
  2. Classifier (분류)
    1. DecisionTreeClassifier
    2. RandomForestClassifier
    3. GradientBoostingClassifier
    4. GaussianNB
    5. SVC
  3. Regressor (회귀)
    1. LinearRegression
    2. Ridge
    3. Lasso
    4. RandomForestRegressor
    5. GradientBoostingRegressor

1. 데이터 셋

from sklearn.datasets import load_iris

iris_data = load_iris()
keys = iris_data.keys()
print('붓꽃 데이터 세트의 키들:', keys)

>>
붓꽃 데이터 세트의 키들: dict_keys(['data', 'target', 'target_names', 'DESCR', 'feature_names', 'filename'])

 

키는 보통 data, target, target_names, feature_names, DESCR로 구성돼 있습니다. 개별 키가 가리키는 의미는 다음과 같습니다.

  • data는 피처의 데이터 세트를 가리킵니다.
  • target은 분류 시 레이블 값, 회귀일 때는 숫자 결과값 데이터 세트입니다.
  • target_names는 개별 레이블의 이름을 나타냅니다.
  • feature_names는 피처의 이름을 나타냅니다.
  • DESCR은 데이터 세트에 대한 설명과 각 피처의 설명을 나타냅니다.

 


2. train_test_split() : train data, test data 분리

test_size : 전체 데이터에서 테스트 데이터 세트 크기를 얼마로 샘플링할 것인가? (디폴트는 0.25)

train_size : 전체 데이터에서 학습용 데이터 세트 크기를 얼마로 샘플링할 것인가? (잘 사용 하지 않음, test_size 이용하기 떄문에)

shuffle : 데이터를 분리하기 전에 섞을지 말지 결정한다. 데이터 분산시켜서 효율적인 학습이 되게 하기 위해서.(디폴트는 True)

random_state : 동일한 학습/테스트용 데이터 세트를 생성하기 위한 난수 값.

train_test_split()은 호출 시 무작위로 데이터를 분리하므로 random_state를 지정하지 않으면 수행할 때마다 다른 train/test 데이터를 생성한다.

 


2.1. ndarray(넘파이) 데이터 셋 분리

from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

dt_clf = DecisionTreeClassifier( )
iris_data = load_iris()

# 1. 분리
X_train, X_test,y_train, y_test= train_test_split(iris_data.data, iris_data.target, 
                                                    test_size=0.3, random_state=121)
                                                    
# 2. 학습
dt_clf.fit(X_train, y_train)

# 3. 예측
pred = dt_clf.predict(X_test)

# 4. 평가
print('예측 정확도: {0:.4f}'.format(accuracy_score(y_test,pred)))

 


2.2. DataFrame(판다스) 데이터 셋 분리

import pandas as pd

iris_df = pd.DataFrame(iris_data.data, columns=iris_data.feature_names)
iris_df['target']=iris_data.target
iris_df.head()

 

ftr_df = iris_df.iloc[:, :-1] # 피쳐 데이터 추출 [:(전체행),:-1(맨오른쪽하나 빼고)]
tgt_df = iris_df.iloc[:, -1] # 타겟 데이터 추출 [:, -1(맨오른쪽만)]

# 1. 분리
X_train, X_test, y_train, y_test = train_test_split(ftr_df, tgt_df, 
                                                    test_size=0.3, random_state=121)

# 2. 학습
dt_clf = DecisionTreeClassifier( )
dt_clf.fit(X_train, y_train)

# 3. 예측
pred = dt_clf.predict(X_test)

# 4. 평가 
print('예측 정확도: {0:.4f}'.format(accuracy_score(y_test,pred)))

 

'💡 AI > ML' 카테고리의 다른 글

ML - 레이블 인코딩, 원핫 인코딩  (0) 2021.09.15
ML - 교차 검증  (0) 2021.08.26
ML - pandas 기본  (0) 2021.08.24
ML - 머신러닝과 numpy 기본  (0) 2021.08.23
기계학습기초2 정리  (0) 2021.06.16
복사했습니다!