앎을 경계하기

DAFIT/906 - 머신러닝으로 당뇨병 예측

<DAFIT> 06 머신러닝을 통한 당뇨병 예측 - 06 Random Forest를 이용한 당뇨병 예측

양갱맨 2019. 11. 26. 01:39

 

 

지난번엔 Decision Tree였다면 이번에는 Random Forest이다.

랜덤 포레스트는 앙상블 방법 중 하나로 여러개의 의사결정트리가 모여서 classification이나 regression 문제를 푼다.

sklearn.ensemble 내 RandomForestClassifier를 제공하고있다.

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
import pandas as pd
data = pd.read_csv("/content/drive/My Drive/다핏문제/906/dataset_37_diabetes.csv")
data

 

#데이터 결측치 처리와 feature 분리

presd = data.replace({'pres':0},{'pres':None})
presd1 = presd.dropna()
presd = data.replace({'pres':0}, {'pres':None})
presd = presd.fillna(presd1.pres.median())

massd = presd.replace({'mass':0.0},{'mass':None})
massd1 = massd.dropna()
massd = data.replace({'mass':0.0},{'mass':None})
massd = massd.fillna(massd1.mass.median())

plasd = massd.replace({'plas':0}, {'plas':None})
plasd1 = plasd.dropna()
data = plasd.fillna(plasd1.plas.median())

col = list(map(str, data.columns))
x = data[col[:-1]]
y = data[col[-1]]
print(x, y)

dataset 분리해준다.

x_train, x_test, y_train, y_test = train_test_split(x,y,test_size=0.4)

x_test, x_val, y_test, y_val = train_test_split(x_test,y_test, test_size=0.5)

 

 

이제 랜덤포레스트를 사용해보자.

n_estimators는 생성할 트리의 수라고 생각하면된다.

fit()을 사용해서 학습을 한다.

rf = RandomForestClassifier(n_estimators=100, random_state=0).fit(x_train,y_train)
print("train score : {}".format(rf.score(x_train, y_train)))
print("val score : {}".format(rf.score(x_val, y_val)))

#print("test score : {}".format(dTree.score(x_test,y_test)))
predict_y = rf.predict(x_test)

from sklearn.metrics import classification_report
print(classification_report(y_test, rf.predict(x_test)))
print("test score : {}".format(rf.score(x_test, y_test)))

지난번 Decision tree와 test 결과는 0.01 차이로 별로 큰 차이는 없는 것 같다.

 

 

 

http://www.dafit.me/question/?q=YToxOntzOjEyOiJrZXl3b3JkX3R5cGUiO3M6MzoiYWxsIjt9&bmode=view&idx=2682894&t=board

 

[DF906] 머신러닝을 통한 당뇨병 예측 : 다핏, 데이터사이언스 연습문제

🔥 문제 설명당뇨병에 영향을 주는 8가지 특징을 바탕으로, 머신러닝 기법을 통해 당뇨병을 예측해보는 문제입니다. 🔥 추천 대상머신러닝에 많이 활용되는 SciKit-Learn을 활용하여 머신러닝 입문을 해보고 싶은 자.캐글의 타이타닉 생존자 예측 문제 수준을, 새로운 문제로 스스로 해결해보고 싶은 자.이진 분류데이터(True / False)를 활용하여 기초적인 데이터 분석과 머신러닝 기법을 체험해보고 싶은 사람.🔥 학습 목표머신러닝의 세부적인 모델링 또는

www.dafit.me