บทความ

ไม่ว่าจะ ข่าวสาร บทสัมภาษณ์ และ Digital Skill บนสื่อ
มีให้คุณได้อ่านบทความดี ๆ มากมายแล้วที่นี่

Visualize โมเดล Tree ใน Scikit-Learn

Visualize โมเดล Tree ใน Scikit-Learn

เวลาที่เราสร้างโมเดลประเภท Tree อย่างเช่น Decision Tree จะมีข้อดีอย่างหนึ่งคือโมเดลพวกนี้สามารถนำมาวาดรูปให้คนอ่านรู้เรื่องได้ (จริงๆ โมเดลอื่นก็วาดรูปได้นะ แต่ไม่ user friendly เท่ากับโมเดลประเภท Tree) ถ้าเราใช้ Scikit-Learn แล้วเราอยากจะดูว่าโมเดลเราหน้าตาเป็นแบบไหน เราจะทำอย่างไร?

เริ่มด้วยการสร้างโมเดลแบบ Tree สักโมเดลหนึ่งมาก่อน ขอเป็น Decision Tree ละกันเนอะ เขียนโค้ดได้ตามนี้เลย

from sklearn import tree, datasets
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
iris = datasets.load_iris()
X, y = iris.data, iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)
clf = tree.DecisionTreeClassifier()
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
print(accuracy_score(y_test, y_pred))


ทีนี้ใน Module ที่ชื่อ tree ที่เรา import มาตอนแรกจะมีฟังก์ชั่นชื่อ export_graphviz ครับ เราจะใช้ฟังก์ชั่นนี้แหละสร้าง Graph ออกมา โดยฟังก์ชั่นนี้ใช้ Graphviz ครับ ซึ่งใช้ไฟล์ DOT language ในการอธิบายหน้าตาของ Graph

ให้เราเขียนโค้ดเพิ่มเพื่อเรียกใช้ export_graphviz ตามนี้

tree.export_graphviz(clf,
out_file=’tree.dot’,
feature_names=iris.feature_names,
class_names=iris.target_names,
filled=True,
rounded=True)


เราจะใส่โมเดลที่เราสอน (clf) เข้าไป ตั้งชื่อ output file ว่า tree.dot ในไฟล์นั้นจะมีชื่อ feature (feature_names=iris.feature_names) มีชื่อ class (class_names=iris.target_names) แต่ละโหนดจะมีสี (filled=True) แล้วก็แต่ละโหนดจะเป็นสี่เหลี่ยมมนๆ (rounded=True)

หลังจากรันโค้ดด้านบนเสร็จเราก็จะได้ไฟล์ tree.dot ออกมา หน้าตาเนื้อหาในไฟล์ก็จะประมาณนี้

รูปแสดงข้อมูลในไฟล์ tree.dot


อ่านไม่ค่อยรู้เรื่องเนอะ >_< เรามาทำให้เป็นรูปกันดีกว่า ให้เราติดตั้ง Graphviz ก่อนครับ ถ้าเป็นเครื่อง Mac ก็สั่ง

brew install graphviz

แต่ถ้าใช้เครื่องแบบอื่นลองตามไปดูวิธีที่หน้า Download ได้เลยครับผม พอติดตั้งเสร็จ เราสามารถแปลงเป็นไฟล์ PNG โดยใช้คำสั่ง

dot -Tpng tree.dot -o tree.png

เปิดรูปมาดูควรจะเห็นตามรูปด้านล่างนี้เลยครับ

รูปโมเดล Decision Tree กับข้อมูล Iris


ทีนี้ใครที่ทำโมเดลประเภทนี้ก็สามารถเอารูปนี้ไปช่วยเรื่อง communication ได้แล้ว~ เด็ด!

ถ้าใครอยากเห็นโค้ดเต็มๆ สามารถดูได้ที่ intro-to-machine-learning/tree.ipynb ครับ ;)

Kan Ouivirach | Machine Learning

02/05/2019