본문 바로가기
빅파이

Decision Tree2 실습( Mushroom 데이터)

by 박완밥 2020. 7. 14.
728x90

0. 필요한 기능 import

 

1. 데이터 불러오기

2. 전체 행/여려 수 확인

3. 결측치 확인

 

- 결측치는 없다.

4. 문제/답 나누기

- loc 사용하여 컬럼명으로 문제와 답 나눠줌

- 전체 23개 컬럼 중 22개가 문제로 들어갔고 1개가 답으로 들어간 걸 확인할 수 있다!

5. 기술통계

6. 라벨의 분포

- describe() : 기술통계 확인하는 함수

- 답이(y) 고르게 분포되어있는지 확인 => 고르게 분포해야 잘 예측할 수 있음

- value_counts() : 시리즈의 라벨 개수 확인하는 함수


<인코딩>

- 글자데이터는 학습시킬 수 X

- 숫자데이터로 인코딩(라벨/원핫) 필요!!

- 순서X 범주형: 혈액형, 성별

- 순서O 범주형: 성적(학점), 설문조사 선택지(좋음, 보통, 나쁘다)

라벨인코딩 순서가 있거나 순서를 부여하고 싶을 때 (순서를 부여하는 효과가 있음)

- S는 0, C는1, Q는 2로 인코딩

원핫인코딩 : 순서가 없을 때

- 표현하고자 하는 값만 1, 나머지는 0

- 한개의 컬럼이 여러개의 컬럼으로 나누어짐

- int 타입은 원핫인코딩 X 

   ex) Pclass의 1,2,3등급

** 원핫 인코딩 _get.dummies()

- pandas 함수 get.dummies() 사용

- 22개였던 X의 컬럼 개수가 117개로 늘어난 걸 확인

** 라벨 인코딩 _딕셔너리 사용하여 만들기

- {key:value} : key값에 컬럼 이름(바꾸고자하는 컬럼), value값에 숫자를 넣어줌

- 위의 경우는 버섯모자의 색을 의미가 있다고 생각하는 순서대로 추측해서 번호를 부여했는데

  실제 분석할 때는 추측이 아닌 어느정도 조사하여 관련이 있게 부여해야함 (번호의 높고 낮음)

- 라벨인코딩은 순서와 상관이 있다!!

- 딕셔너리를 인코딩 방법은 '간장치킨', '양념치킨'. '후라이드치킨', '매운양념치킨' 을 '치킨'으로

   (하나의 값) 바꾸는데도 사용된다!!! 프로젝트할 때 유용하게 사용할 수 있다고 하니 기억해두자!! 


<학습하기> _metrics.accuracy_score(pre, y_test)/model.score(X_test, y_test)

- 학습된 모델 자체에 내장된 score함수를 사용할 수도 있다


<환경변수 설정하기> (시각화하기 전)

- bin 폴더의 경로 복사!!

- dot 용용프로그램을 사용해야 함

- C드라이브 우클릭 -> 속성 ->고급시스템설정->환경변수

- 사용자변수와 시스템변수의 path 에 아까 복사한 bin 폴더 경로 붙여넣기

- 필요한 기능 import

Decision Tree.png

- 하이퍼파라미터튜닝을 하지 않았기 때문에 리프노드는 전부 순수노드이다.

** Graphviz save as png

import graphviz
with open('tree.dot', encoding="utf-8") as f:
    dot_graph = f.read()
display(graphviz.Source(dot_graph))

dot=graphviz.Source(dot_graph)
dot.format='png'
dot.render(filename='tree.png')

- graphviz.Source(dot_graph)) 는 주피터에 보여주는 기능이고

- 밑에 코드 세줄은 png 파일로 저장하는 코드 (구글링함)


<Decision Tree를 이용하여 특성의 중요도 확인>

- feature_importances_ 사용하여 중요도 확인!! 

- 중요도의 총합은 1, 0으로 표기된 것은 무의미하다고 봐도 됨

- 좀 더 컬럼별로 보기 쉽게 데이터프레임으로 만들어 보았다.

- df = pd.DataFrame(fi, index=X_one_hot.columns)

- index=X_one_hot.columns => 행에는 X_one_hot.columns 넣겠다.

728x90
반응형

'빅파이' 카테고리의 다른 글

유튜브 크롤링하기(제목, 주소, 조회수)  (2) 2020.06.01

댓글