ML
머신러닝 2_3 ModelSelection
haribodang
2022. 4. 22. 10:11
반응형
학습/테스트 데이터 셋 분리 – train_test_split()
- X_train, X_test, y_train,y_test = train_test_split(’피쳐데이터세트’, ‘레이블데이터세트’,
test_size=’전체데이터세트중테스트데이터비율’, random_state=’호출할때마다 같은 학습//테스트용 데이트 세트를 생성하기위해 주어지는 난수 발생값
’)
- train_test_split 는 무작위로 데이터 분리 하므로 random_state를 지정하지 않으면 수행할때마다 다른 학습 / 테스트용 데이터를 만들수 있다. 따라서 동일 데이터세트로 분리하기위해 random_state 를 일정 숫자값으로 부여, 숫자값은 어떤값으로 시정해도 상관없음 )
- X_train: 학습용 피처 데이터 세트
- X_test: 테스트용 피처 데이터 세트
- y_train: 학습용 레이블 데이터 세트
- y_test: 테스트용 레이블 데이터 세트
- test-size : 디폴트 (0.25)
- shuffle : 데이터를 분리하기저에 미리 섞을지 결정, 디폴트 true
- fit() 메서드를 학습용 피처 데이터속성과 결정값 데이터 세트를 입력 해서 호출 하면 학습 수행
- fit(X_train, y_train)
- predict() 에 테스트 용 피처 데이터 세트를 입력해서 호출 하면 학습된 모델 데이터 기반테스트 데이터 세트에 대한 예측값 반환
- pred = predict(X_test)
- 머신러닝모델의 성능 평가 방법 - 정확도 측정(정확도 : 실제레이블값과 예측결과가 얼마나 정확하게 맞는지 평가하는 지표)
- 사이킷 런에서 accuracy_ score() 함수를 제공
- accuracy_ score(실제레이블 데이터세트, 예측 레이블 데이터세트)
dt_clf = DecisionTreeClassifier( )
iris_data = load_iris()
X_train, X_test,y_train, y_test= train_test_split(iris_data.data, iris_data.target,
test_size=0.3, random_state=11)
dt_clf.fit(X_train, y_train)
pred = dt_clf.predict(X_test)
print('예측 정확도: {0:.4f}'.format(accuracy_score(y_test,pred))) #예측 정확도는 데이터 양이 많지않아 이를 통해 알고리즘 예측성능을 판단하기에는 적절하지않다.
넘파이 ndarray 뿐만 아니라 판다스 DataFrame/Series도 train_test_split(
)으로 분할 가능
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]#피쳐
tgt_df = iris_df.iloc[:, -1]#타겟
X_train, X_test, y_train, y_test = train_test_split(ftr_df, tgt_df,
test_size=0.3, random_state=11)
print(type(X_train), type(X_test), type(y_train), type(y_test))
dt_clf = DecisionTreeClassifier( )
dt_clf.fit(X_train, y_train)
pred = dt_clf.predict(X_test)
print('예측 정확도: {0:.4f}'.format(accuracy_score(y_test,pred)))
반응형