#!/usr/bin/env python # coding: utf-8 # # 결정 트리 # # #
# 구글 코랩에서 실행하기 #
# ## 로지스틱 회귀로 와인 분류하기 # In[1]: import pandas as pd wine = pd.read_csv('https://bit.ly/wine_csv_data') # In[2]: wine.head() # In[3]: wine.info() # In[4]: wine.describe() # In[5]: data = wine[['alcohol', 'sugar', 'pH']].to_numpy() target = wine['class'].to_numpy() # In[6]: from sklearn.model_selection import train_test_split train_input, test_input, train_target, test_target = train_test_split( data, target, test_size=0.2, random_state=42) # In[7]: print(train_input.shape, test_input.shape) # In[8]: from sklearn.preprocessing import StandardScaler ss = StandardScaler() ss.fit(train_input) train_scaled = ss.transform(train_input) test_scaled = ss.transform(test_input) # In[9]: from sklearn.linear_model import LogisticRegression lr = LogisticRegression() lr.fit(train_scaled, train_target) print(lr.score(train_scaled, train_target)) print(lr.score(test_scaled, test_target)) # ### 설명하기 쉬운 모델과 어려운 모델 # In[10]: print(lr.coef_, lr.intercept_) # ## 결정 트리 # In[11]: from sklearn.tree import DecisionTreeClassifier dt = DecisionTreeClassifier(random_state=42) dt.fit(train_scaled, train_target) print(dt.score(train_scaled, train_target)) print(dt.score(test_scaled, test_target)) # In[12]: import matplotlib.pyplot as plt from sklearn.tree import plot_tree plt.figure(figsize=(10,7)) plot_tree(dt) plt.show() # In[13]: plt.figure(figsize=(10,7)) plot_tree(dt, max_depth=1, filled=True, feature_names=['alcohol', 'sugar', 'pH']) plt.show() # ### 가지치기 # In[14]: dt = DecisionTreeClassifier(max_depth=3, random_state=42) dt.fit(train_scaled, train_target) print(dt.score(train_scaled, train_target)) print(dt.score(test_scaled, test_target)) # In[15]: plt.figure(figsize=(20,15)) plot_tree(dt, filled=True, feature_names=['alcohol', 'sugar', 'pH']) plt.show() # In[16]: dt = DecisionTreeClassifier(max_depth=3, random_state=42) dt.fit(train_input, train_target) print(dt.score(train_input, train_target)) print(dt.score(test_input, test_target)) # In[17]: plt.figure(figsize=(20,15)) plot_tree(dt, filled=True, feature_names=['alcohol', 'sugar', 'pH']) plt.show() # In[18]: print(dt.feature_importances_) # ## 확인문제 # In[19]: dt = DecisionTreeClassifier(min_impurity_decrease=0.0005, random_state=42) dt.fit(train_input, train_target) print(dt.score(train_input, train_target)) print(dt.score(test_input, test_target)) # In[20]: plt.figure(figsize=(20,15)) plot_tree(dt, filled=True, feature_names=['alcohol', 'sugar', 'pH']) plt.show()