บทความ

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

ปรับ Parameters ของโมเดล ML ด้วย GridSearchCV ใน Scikit-Learn

ปรับ Parameters ของโมเดล ML ด้วย GridSearchCV ใน Scikit-Learn

ปกติเวลาที่เราอยากจะปรับโมเดล หรือหา Parameters ที่ดีที่สุดของโมเดลที่เหมาะสมกับข้อมูลที่เรานำมาสอน เราจะใช้วิธี Cross Validation และกำหนดว่าเราจะ Vary ค่าต่างๆ ของ Parameters ของเราอย่างไร หน้าตาโค้ดของเราก็จะประมาณนี้

from sklearn import datasets
from sklearn.model_selection import cross_val_score
from sklearn.neighbors import KNeighborsClassifier
iris = datasets.load_iris()
X = iris.data
y = iris.target
knn = KNeighborsClassifier(n_neighbors=5)
scores = cross_val_score(knn, X, y, cv=10, scoring='accuracy')
print(scores)

แล้วถ้าเราต้องการที่จะ Vary ค่าต่างๆ เราอาจจะใช้ Loop ได้ประมาณนี้

from sklearn import datasets
from sklearn.model_selection import cross_val_score
from sklearn.neighbors import KNeighborsClassifier
iris = datasets.load_iris()
X = iris.data
y = iris.target
n_neighbors = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
weights = ['uniform', 'distance']
algorithms = ['auto', 'kd_tree']
score_collection = []
for n in n_neighbors:
for w in weights:
for a in algorithms:
knn = KNeighborsClassifier(n_neighbors=n, weights=w, algorithm=a)
scores = cross_val_score(knn, X, y, cv=10, scoring='accuracy')
score_collection.append(scores)

print(score_collection)

แล้วถ้าเราอยากรู้ว่าค่า Parameters ชุดไหนที่ทำให้โมเดลเราได้ผลที่ดีที่สุด เราก็อาจจะต้องเก็บ Index ของแต่ละรอบไว้ และเขียนโค้ดเพื่อหาว่ารอบไหนที่ให้ผลที่ดีที่สุดให้ผลดีที่สุด แต่ถ้าเราใช้ GridSearchCV ก็จะได้ประมาณนี้

Kan Ouivirach | Machine Learning

04/05/2019