Custom function transformers ใน pipeline
มีข้อมูลว่าเซ็นเซอร์อาจทำงานได้ไม่ดีนักสำหรับผู้ที่มีภาวะโรคอ้วน ก่อนหน้านี้เราจัดการปัญหานี้ด้วยการกำหนดน้ำหนัก แต่ตอนนี้คุณคิดว่าข้อมูลนี้อาจเป็นประโยชน์สำหรับการทำ feature engineering ด้วย จึงตัดสินใจแทนที่ค่าน้ำหนักที่บันทึกไว้ของแต่ละบุคคลด้วยตัวบ่งชี้ว่าพวกเขามีภาวะโรคอ้วนหรือไม่ โดยจะดำเนินการนี้ผ่าน pipeline มี numpy พร้อมใช้งานในชื่อ np, RandomForestClassifier(), FunctionTransformer() และ GridSearchCV()
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การออกแบบ Machine Learning Workflows ด้วย Python
คำแนะนำการฝึกหัด
- กำหนด feature extractor แบบกำหนดเอง ซึ่งเป็นฟังก์ชันที่จะส่งออกสำเนาที่ปรับแต่งแล้วของ input
- แทนที่ค่าแต่ละค่าในคอลัมน์แรกด้วยตัวบ่งชี้ว่าค่านั้นสูงกว่าค่า threshold ที่กำหนดโดยการคูณค่าเฉลี่ยของคอลัมน์ด้วยตัวคูณที่กำหนดหรือไม่
- แปลง feature extractor ข้างต้นให้เป็น transformer และนำไปรวมใน pipeline ร่วมกับ random forest classifier
- ใช้ grid search CV เพื่อทดสอบค่า 1, 2 และ 3 สำหรับค่าคงที่การคูณ
multiplierใน feature extractor ของคุณ
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Define a feature extractor to flag very large values
def more_than_average(X, multiplier=1.0):
Z = ____
Z[:,1] = ____ > multiplier*np.mean(Z[:,1])
return Z
# Convert your function so that it can be used in a pipeline
pipe = Pipeline([
('ft', ____(____)),
('clf', RandomForestClassifier(random_state=2))])
# Optimize the parameter multiplier using GridSearchCV
params = ____
grid_search = GridSearchCV(pipe, param_grid=params)