Machine Learning/분류모델

Decision Tree 분류 실습 [ 변수.value_counts( ) 와 np.bincount(변수) / One-hot Encoding과 Label Encoding / graphviz를 이용한 시각화 ] [버섯 데이터]

leehii 2022. 8. 4. 14:18

데이터 확인 (데이터 타입, 데이터 크기, 결측치 등)

 

데이터 정리 (문제와 답으로 분리 / 훈련 셋과 테스트 셋 분리등)

 

데이터 분석 (시각화등)

 

모델링 (모델객체 생성 -> 하이퍼 파라미터 조정 / 모델 학습 / 모델 예측 / 모델 성능 평가)

 

훈련셋과 테스트셋의 비율을 나눠주는 도구 train_test_split

분류를 위한 DecisionTreeClassifier

 

... 이 뜨므로 모든 컬럼이 뜨게 

 

pd.set_option('display.max_columns', None)

으로 설정을 바꿔준다

 

 

23개의 column으로 이루어진 데이터

 

 

null 값 확인을 통해 결측치를 확인

 

인덱싱/슬라이싱으로 문제와 답을 분리함

 

확인할값.value_counts() : 값이 몇개 있는지 세어주는 함수 -->> pandas에서 사용하는 함수(Series, DataFrame) //

배열 형태의 데이터는 numpy의 np.bincount(확인할 값)를 사용해야 함!

 

 

기존 데이터

 

 

 

값의 크기에 의미가 있을때 (랭킹등)는 레이블 인코딩으로 숫자를 매핑해주고

아닐때는 온핫 인코딩으로 인코딩해준다

 

나눠줄 값 들 여러가지 = train_test_split(문제, 답, test_size=?, random_state=아무숫자나)

X는 인코딩안된 상태의 문제이므로  인코딩된 문제인 X_oh를 넣어준다

 

 

 

 

DecisionTreeClassifier()를 통해 모델객체를 만들어준다

KNN모델에서는 KneighborsClassifier(n_neighbors=k)

 

 

 

모델의 성능을 평가하는 cross_val_score(모델명, X, y, cv=교차검증시킬 횟수)

 

 


학습 : 모델.fit(훈련용 문제, 훈련용 답)

예측 : 모델.predict(테스트 문제)

평가 : accuracy_score(테스트용 답, 예측값)

 

 

이런식으로 출력됨

 

 

새로운 모델에 DecisionTreeClassifier() 안에 값으로

max_depth =3으로

하이퍼 파라미터를 조정하고 다시 출력해보면 

 

 

 

이런식으로 깊이가 3까지만 진행된 것을 확인 가능하다