지난번엔 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 차이로 별로 큰 차이는 없는 것 같다.
'DAFIT > 906 - 머신러닝으로 당뇨병 예측' 카테고리의 다른 글
<DAFIT> 06 머신러닝을 통한 당뇨병 예측 - 07 Feature Importance (0) | 2019.11.26 |
---|---|
<DAFIT> 06 머신러닝을 통한 당뇨병 예측 - 05 Decision Tree를 이용한 당뇨병 예측 (0) | 2019.11.26 |
<DAFIT> 06 머신러닝을 통한 당뇨병 예측 - 04 데이터 분할 (0) | 2019.11.24 |
<DAFIT> 06 머신러닝을 통한 당뇨병 예측 - 03 데이터 시각화 (0) | 2019.11.24 |
<DAFIT> 06 머신러닝을 통한 당뇨병 예측 - 02 NaN값,NULL 값 처리하기 (+ 삽질연속, 실망스러운 결과..) (0) | 2019.11.23 |