Liz's Blog

Python學習筆記#15:機器學習之決策樹、隨機森林實作篇

| Comments

決策樹(decision tree)的運作和名稱還蠻相像的,依照特定變數去區分最後要不要執行,在許多商業分析中,也算常見。只是用在機器學習中,有不同方式讓判讀更為精準。為了精進判讀的準確性,可利用隨機森林(Random Forests)來加強,其運作的方式隨機選取某棵樹的任一變數作為分岔的決策點。可參考這篇〈隨機森林Random Forest〉。

Udemy
課程名稱:Python for Data Science and Machine Learning Bootcamp
講師:Jose Portilla

1.載入套件

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

2.匯入資料(使用駝背資料集來練習,和之前學R決策樹的練習相同)

df = pd.read_csv('kyphosis.csv')
df.head()
df.info()

3.探索資料

#以seaborn pairplot快速掃瞄數字型資料有沒有什麼趨勢 
sns.pairplot(df,hue='Kyphosis')

4.將資料分成訓練組及測試組

from sklearn.model_selection import train_test_split

#因為Kyphosis是之後要預測的變數,所以X軸捨棄不用
X = df.drop('Kyphosis',axis=1)
y = df['Kyphosis']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30,random_state=101)

5.使用決策樹演算法

from sklearn.tree import DecisionTreeClassifier
dtree = DecisionTreeClassifier()
dtree.fit(X_train,y_train)

6.評估決策樹模型好壞

predictions = dtree.predict(X_test)
from sklearn.metrics import classification_report,confusion_matrix
print(classification_report(y_test,predictions))
print(confusion_matrix(y_test,predictions))

7.使用隨機森林與決策樹做比較

from sklearn.ensemble import RandomForestClassifier

#n_estimators代表要使用多少CART樹(CART樹為使用GINI算法的決策樹)
rfc = RandomForestClassifier(n_estimators=100)

#從訓練組資料中建立隨機森林模型
rfc.fit(X_train, y_train)

#預測測試組的駝背是否發生
rfc_pred = rfc.predict(X_test)

#利用confusion_matrix來看實際及預測的差異
print(confusion_matrix(y_test,rfc_pred))

#利用classification_report來看precision、recall、f1-score、support
print(classification_report(y_test,rfc_pred))

Comments

comments powered by Disqus