인공지능/머신러닝

와인품질데이터 - 의사결정트리 / 랜덤 포레스트

해피밀세트 2020. 5. 27. 20:45

 

 

 

 

와인품질 데이터 컬럼 설명

 

fixed acidity : 고정 산도

volatile acidity : 휘발성 산도

citric acid : 시트르산

residual sugar : 잔류 설탕

chlorides : 염화물

free sulfur dioxide : 자유 이산화황

total sulfur dioxide : 이산화황

density : 밀도

pH : pH

sulphates : 황산염

alcohol : 알코올

quality : 품질   # 종속변수

 


 

1. 의사결정트리 (파이썬)

 

# 라이브러리 및 데이터 불러오기

import pandas as pd
wine = pd.read_csv("C:/data/whitewines.csv")
wine.info()

# 종속변수 / 입력변수 나누기

x = wine.iloc[:,0:11]

y = wine['quality']

# 모델 학습

from sklearn.tree import DecisionTreeClassifier
model = DecisionTreeClassifier(criterion="entropy",max_depth=3)
model.fit(x,y)

# 모델 예측

y_pred = model.predict(x)
y_pred

# 정확도 확인

from sklearn.metrics import accuracy_score
accuracy_score(y,y_pred)
model.classes_  
# 그래프 설정

dot_data = export_graphviz(model, out_file=None,
                           feature_names=x.columns,
                           class_names=['q3','q4','q5','q6','q7','q8','q9'],
                           filled=True, rounded=True,
                           special_characters=True)
 
# 그래프 그리기

graph = pydotplus.graph_from_dot_data(dot_data)
Image(graph.create_png())

 

 

 

2. 랜덤포레스트 (파이썬)

# 라이브러리 및 데이터 불러오기 

import pandas as pd
wine = pd.read_csv("C:/data/whitewines.csv")
wine.info()

# 종속변수 / 입력변수 나누기

x = wine.iloc[:,0:11]

y = wine['quality']

# 라이브러리 불러오기

from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
from sklearn.metrics import classification_report

 

# 출력할때 warning 안뜨게하기

import warnings

warnings.filterwarnings('ignore')

warnings.filterwarnings('default')

 

# 모델 학습

model = RandomForestClassifier(criterion='entropy',
                               n_estimators=3,oob_score=True)

model.fit(x,y)

# 모델 예측 및 정확도 확인

y_pred = model.predict(x)
print(classification_report(y,y_pred))
print("정답률=",accuracy_score(y,y_pred))

# 모델안에 몇번째거를 그릴건지를 넣어야한다.

estimator = model.estimators_[0]

dot_data = export_graphviz(estimator, out_file=None,

                           feature_names=x.columns,

                           class_names=['q3','q4','q5','q6','q7','q8','q9'],

                           filled=True, rounded=True,

                           special_characters=True)

 
# 그래프 그리기

graph = pydotplus.graph_from_dot_data(dot_data)
Image(graph.create_png())

 
반응형