의사결정 트리 만들기(파이썬)

허선우·2021년 6월 29일
0

인공지능/딥러닝

목록 보기
3/4
post-thumbnail

오늘은 지난 시간에 이어서 파이썬에서 의사결정 트리를 구현하는 법을 알아보겠다.

사용 데이터 : iris

1. 이상치 구하여 평균으로 치환하는 함수 만들기

#이상치 구하여 평균으로 치환 후 성공적으로 마치면 '성공했습니다'라는 문장이 나오는 함수 만들기 


def outlier_value(data):
    a = data.describe().columns
    cnt = 0
    for i in range(len(a)):
        col = data[a[i]]
        Q1 = col.quantile(0.25)
        Q3 = col.quantile(0.75)
        IQR = Q3-Q1
        print(a[i],col[(col<Q1-1.5*IQR)|(col>Q3+1.5*IQR)].count(),'개')
        col[(col<Q1-1.5*IQR)|(col>Q3+1.5*IQR)] = col.mean()
        
        if col[(col<Q1-1.5*IQR)|(col>Q3+1.5*IQR)].count() == 0:
            cnt+=1
    if cnt == len(a):
        print('성공적으로 바꿨습니다. ')

2. 의사결정 트리 만들기


import  pandas  as  pd
iris = pd.read_csv("c:\\data\\iris2.csv")

#2. 결측치 확인
iris.isnull().sum()

#3. 이상치 확인 
outlier_value(iris)
#4. 명목형 --> 숫자형
#명목형 데이터 없음 
#5. 훈련과 테스트로 데이터를 분리 
x = iris.iloc[ : , :-1 ].to_numpy()   # 정답을 뺀 전체 데이터를 numpy arrary 로 변환
y = iris.iloc[ : , -1 ].to_numpy()    # 정답을 numpy  array 로 변환 

from  sklearn.model_selection  import  train_test_split 
x_train, x_test, y_train, y_test =  train_test_split( x, y, test_size=0.2, random_state=40)

print(x_train.shape)  #(120, 4)
print(x_test.shape) #(30, 4)
print(y_train.shape) #(120,)
print(y_test.shape) #(30,)

#6. 훈련 데이터 정규화
from  sklearn.preprocessing  import  MinMaxScaler
scaler = MinMaxScaler()
scaler.fit(x_train)
x_train2 = scaler.transform(x_train)

#7. 테스트 데이터 정규화
scaler = MinMaxScaler()
scaler.fit(x_test)
x_test2=scaler.transform(x_test)  
# 계산된 내용으로 데이터를 변환해서 x_train2 에 담는다.

#8. 모델 생성
from  sklearn.tree  import  DecisionTreeClassifier
model =  DecisionTreeClassifier(criterion='entropy', max_depth=5)

#9. 모델 훈련
model.fit( x_train2, y_train)

#10. 모델 예측
result = model.predict( x_test2 )

#11. 모델평가
sum( y_test == result ) / len(y_test)
#random_state = 1이면 정확도 99.65
#random_state =40이면 정확도 100

0개의 댓글