쉽게 배우는 파이썬 데이터 분석 - 6

esc247·2022년 6월 28일
0

Data Analysis

목록 보기
9/10
post-thumbnail

머신러닝 모델 = 함수 만들기

  • 값을 입력하면 정해진 규칙에 따라 계산한 예측값 출력, 다른 점은 컴퓨터가 패턴을 찾아 스스로 규칙 정한다.
  • 예측변수 (predictor variable)

    : 예측하는 데 활용하는 변수 또는 모델에 입력하는 값.
  • 타겟변수 (target variable)

    : 예측하고자 하는 변수 또는 모델이 출력하는 값

의사결정나무 모델_Decision Tree

  • 순서대로 주어진 질문에 y/n로 답하면 마지막에 결론 얻음.

원리

  1. 타겟 변수를 가장 잘 분리하는 예측 변수 선택
  2. 첫번째 질문의 잡변에 따라 데이터를 두 노드로 분할.
  3. 각 노드에서 타겟 변수를 가장 잘 분리하는 예측 변수 선택.
  4. 노드가 완벽하겍 분리될 때까지 반복.

특징

  • 노드마다 분활 횟수가 다르다
    : 모두 같은 회수로 질문X, 앞의 질문에 어떻게 답변했는지에 따라 서로 다른 횟수로 질문하게 된다.
  • 노드마다 선택되는 예측 변수가 다르다.
  • 어떤 예측 변수는 모델에서 탈락한다.

ex_ 소득 예측 모델

- 데이터 전처리

# 타겟 변수 전처리
df['income'] = np.where(df['income'] == '>50K', 'high','low')
df['income'].value_counts(normalize=True)
#
low     0.760718
high    0.239282
Name: income, dtype: float64
#불필요한 변수 제거
df = df.drop(columns = 'fnlwgt') 
# 문자 타입 변수를 숫자 타입으로 바꾸기 
#모든 문자 타입 변수를 원핫 인코딩
target = df['income']
df=df.drop(columns='income')
df=pd.get_dummies(df)
df['income'] =target

- 데이터 분할하기
- 모든 데이터를 사용하면 성능 평가 점수 신뢰할 수 없다.
- Cross Validation_교차검증 : 신뢰할 수 있는 성능평가점수 얻는 방법
Training set, Test set 로 데이터 분할.
scikit-learn 사용

from sklearn.model_selection import train_test_split
df_train,df_test =train_test_split(df,
                                  test_size = 0.3,
                                  stratify = df['income'],
                                  random_state=1234)
  • test_size : 테스트 세트의 비율.
  • stratify : 범주별 비율을 통일할 변수. 타겟 변수를 입력하면 트레이닝,테스트 세트에 범주별 비율 비슷하게 맞춰준다.
    그러지 않으면 데이터 세트마다 달라지므로 평가 결과 신뢰X.
  • random_state : 난수 초깃값. 난수 고정하면 코드 반복 실행 시 같은 데이터 추출.
  • 모델 만들기
from sklearn import tree
clf= tree.DecisionTreeClassifier(random_state = 1234, #난수고정
                                max_depth = 3) # 트리 깊이
train_x = df_train.drop(columns = 'income') # 예측변수 추출
train_y = df_train['income'] # 타겟 변수 추출
model = clf.fit(X=train_x, y=train_y)
profile
막상 하면 모르니까 일단 하자.

0개의 댓글