รูปภาพโดยบรรณาธิการ
Scikit-learn เป็นหนึ่งในไลบรารี่แมชชีนเลิร์นนิงที่ใช้กันมากที่สุดซึ่งสร้างด้วยไพธอน ความนิยมนั้นมาจากโครงสร้างโค้ดที่ง่ายและสอดคล้องกันซึ่งเป็นมิตรกับนักพัฒนามือใหม่ นอกจากนี้ยังมีการสนับสนุนระดับสูงพร้อมกับความยืดหยุ่นในการรวมฟังก์ชันของบุคคลที่สามซึ่งทำให้ห้องสมุดมีความแข็งแกร่งและเหมาะสำหรับการผลิต ไลบรารีประกอบด้วยโมเดลแมชชีนเลิร์นนิงหลายรูปแบบสำหรับการจำแนก การถดถอย และการจัดกลุ่ม ในบทช่วยสอนนี้ เราจะสำรวจปัญหาของการจำแนกหลายคลาสผ่านอัลกอริทึมต่างๆ มาดำดิ่งลงไปในนั้นและสร้างแบบจำลอง scikit-learn ของเรา
pip install scikit-learn
เราจะใช้ชุดข้อมูล "ไวน์" ที่มีอยู่ในโมดูลชุดข้อมูลของ scikit-learn ชุดข้อมูลนี้ประกอบด้วย 178 ตัวอย่างและทั้งหมด 3 คลาส ชุดข้อมูลได้รับการประมวลผลล่วงหน้าแล้วและแปลงเป็นเวกเตอร์คุณลักษณะ เราจึงสามารถใช้ชุดข้อมูลนี้โดยตรงเพื่อฝึกโมเดลของเรา
from sklearn.datasets import load_wine X, y = load_wine(return_X_y=True)
เราจะเก็บข้อมูล 67% สำหรับการฝึกอบรมและ 33% ที่เหลือสำหรับการทดสอบ
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.33, random_state=42
)
ตอนนี้ เราจะทำการทดลองกับแบบจำลอง 5 แบบที่มีความซับซ้อนต่างกัน และประเมินผลลัพธ์ในชุดข้อมูลของเรา
model_lr = LogisticRegression()
model_lr.fit(X_train, y_train)
y_pred_lr = model_lr.predict(X_test) print("Accuracy Score: ", accuracy_score(y_pred_lr, y_test))
print(classification_report(y_pred_lr, y_test))
เอาท์พุต
Accuracy Score: 0.9830508474576272 precision recall f1-score support 0 1.00 0.95 0.98 21 1 0.96 1.00 0.98 23 2 1.00 1.00 1.00 15 accuracy 0.98 59 macro avg 0.99 0.98 0.98 59
weighted avg 0.98 0.98 0.98 59
model_knn = KNeighborsClassifier(n_neighbors=1)
model_knn.fit(X_train, y_train)
y_pred_knn = model_knn.predict(X_test) print("Accuracy Score:", accuracy_score(y_pred_knn, y_test))
print(classification_report(y_pred_knn, y_test))
เอาท์พุต
Accuracy Score: 0.7796610169491526 precision recall f1-score support 0 0.90 0.78 0.84 23 1 0.75 0.82 0.78 22 2 0.67 0.71 0.69 14 accuracy 0.78 59 macro avg 0.77 0.77 0.77 59
weighted avg 0.79 0.78 0.78 59
เมื่อเปลี่ยนพารามิเตอร์ 'n_neighbors=2' เราสังเกตว่าค่าความแม่นยำลดลง ดังนั้นจึงแสดงให้เห็นว่าข้อมูลนั้นง่ายเพียงพอและช่วยให้เกิดการเรียนรู้ที่ดีขึ้นโดยมีเพื่อนบ้านรายเดียวที่ต้องพิจารณา
เอาท์พุต
Accuracy Score: 0.6949152542372882 precision recall f1-score support 0 0.90 0.72 0.80 25 1 0.75 0.69 0.72 26 2 0.33 0.62 0.43 8 accuracy 0.69 59 macro avg 0.66 0.68 0.65 59
weighted avg 0.76 0.69 0.72 59
from sklearn.naive_bayes import GaussianNB model_nb = GaussianNB()
model_nb.fit(X_train, y_train)
y_pred_nb = model_nb.predict(X_test) print("Accuracy Score:", accuracy_score(y_pred_nb, y_test))
print(classification_report(y_pred_nb, y_test))
เอาท์พุต
Accuracy Score: 1.0 precision recall f1-score support 0 1.00 1.00 1.00 20 1 1.00 1.00 1.00 24 2 1.00 1.00 1.00 15 accuracy 1.00 59 macro avg 1.00 1.00 1.00 59
weighted avg 1.00 1.00 1.00 59
from sklearn.tree import DecisionTreeClassifier model_dtclassifier = DecisionTreeClassifier()
model_dtclassifier.fit(X_train, y_train)
y_pred_dtclassifier = model_dtclassifier.predict(X_test) print("Accuracy Score:", accuracy_score(y_pred_dtclassifier, y_test))
print(classification_report(y_pred_dtclassifier, y_test))
เอาท์พุต
Accuracy Score: 0.9661016949152542 precision recall f1-score support 0 0.95 0.95 0.95 20 1 1.00 0.96 0.98 25 2 0.93 1.00 0.97 14 accuracy 0.97 59 macro avg 0.96 0.97 0.97 59
weighted avg 0.97 0.97 0.97 59
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import RandomizedSearchCV def get_best_parameters(): params = { "n_estimators": [10, 50, 100], "max_features": ["auto", "sqrt", "log2"], "max_depth": [5, 10, 20, 50], "min_samples_split": [2, 4, 6], "min_samples_leaf": [2, 4, 6], "bootstrap": [True, False], } model_rfclassifier = RandomForestClassifier(random_state=42) rf_randomsearch = RandomizedSearchCV( estimator=model_rfclassifier, param_distributions=params, n_iter=5, cv=3, verbose=2, random_state=42, ) rf_randomsearch.fit(X_train, y_train) best_parameters = rf_randomsearch.best_params_ print("Best Parameters:", best_parameters) return best_parameters parameters_rfclassifier = get_best_parameters() model_rfclassifier = RandomForestClassifier( **parameters_rfclassifier, random_state=42
) model_rfclassifier.fit(X_train, y_train) y_pred_rfclassifier = model_rfclassifier.predict(X_test) print("Accuracy Score:", accuracy_score(y_pred_rfclassifier, y_test))
print(classification_report(y_pred_rfclassifier, y_test))
เอาท์พุต
Best Parameters: {'n_estimators': 100, 'min_samples_split': 6, 'min_samples_leaf': 4, 'max_features': 'log2', 'max_depth': 5, 'bootstrap': True}
Accuracy Score: 0.9830508474576272 precision recall f1-score support 0 1.00 0.95 0.98 21 1 0.96 1.00 0.98 23 2 1.00 1.00 1.00 15 accuracy 0.98 59 macro avg 0.99 0.98 0.98 59
weighted avg 0.98 0.98 0.98 59
ในอัลกอริทึมนี้ เราทำการปรับไฮเปอร์พารามิเตอร์เพื่อให้ได้ความแม่นยำที่ดีที่สุด เราได้กำหนดตารางพารามิเตอร์ซึ่งประกอบด้วยค่าหลายค่าให้เลือกสำหรับแต่ละพารามิเตอร์ นอกจากนี้ เราใช้อัลกอริทึม Randomized Search CV เพื่อค้นหาพื้นที่พารามิเตอร์ที่ดีที่สุดสำหรับโมเดล ในที่สุดเราก็ป้อนพารามิเตอร์ที่ได้รับไปยังตัวแยกประเภทและฝึกโมเดล
Models | ความถูกต้อง | ข้อสังเกต |
การถดถอยโลจิสติก | 98.30% | บรรลุความแม่นยำที่ยอดเยี่ยม แบบจำลองสามารถสรุปได้ดีในชุดข้อมูลทดสอบ |
K-เพื่อนบ้านที่ใกล้ที่สุด | 77.96% | อัลกอริทึมไม่สามารถเรียนรู้การแสดงข้อมูลได้ดี |
ไร้เดียงสา Bayes | 100% | โมเดลมีความซับซ้อนน้อยกว่า ดังนั้นจึงทำให้ข้อมูลมีความพอดีมากเกินไปเพื่อให้ได้ความแม่นยำอย่างแท้จริง |
ตัวแยกประเภทการตัดสินใจ | 96.61% | บรรลุความแม่นยำที่เหมาะสม |
ลักษณนามสุ่มป่า | 98.30% | เป็นแนวทางที่ใช้ทั้งมวลซึ่งทำงานได้ดีกว่า Decision Tree การปรับไฮเปอร์พารามิเตอร์ทำให้มีความแม่นยำใกล้เคียงกับการถดถอยโลจิสติก |
ในบทช่วยสอนนี้ เราได้เรียนรู้วิธีเริ่มต้นสร้างและฝึกโมเดลแมชชีนเลิร์นนิงใน scikit-learn เราปรับใช้และประเมินอัลกอริทึมบางอย่างเพื่อให้ได้แนวคิดพื้นฐานเกี่ยวกับประสิทธิภาพ เราสามารถใช้กลยุทธ์ขั้นสูงสำหรับวิศวกรรมฟีเจอร์ การปรับไฮเปอร์พารามิเตอร์ หรือการฝึกอบรมเพื่อปรับปรุงประสิทธิภาพได้เสมอ หากต้องการอ่านเพิ่มเติมเกี่ยวกับฟังก์ชันที่ scikit-learn นำเสนอ ให้ไปที่เอกสารอย่างเป็นทางการ - บทนำเกี่ยวกับการเรียนรู้ของเครื่องด้วย scikit-learn, การเรียนรู้ของเครื่องใน Python ด้วย scikit-learn.
เยชา ศาสตรี เป็นนักพัฒนาและนักเขียน AI ที่หลงใหลในการใฝ่หาปริญญาโทด้านการเรียนรู้ของเครื่องจากUniversité de Montréal Yesha รู้สึกทึ่งที่จะสำรวจเทคนิค AI ที่รับผิดชอบเพื่อแก้ปัญหาความท้าทายที่เป็นประโยชน์ต่อสังคมและแบ่งปันการเรียนรู้ของเธอกับชุมชน
- เนื้อหาที่ขับเคลื่อนด้วย SEO และการเผยแพร่ประชาสัมพันธ์ รับการขยายวันนี้
- เพลโตบล็อคเชน Web3 Metaverse ข่าวกรอง ขยายความรู้. เข้าถึงได้ที่นี่.
- ที่มา: https://www.kdnuggets.com/getting-started-with-scikit-learn-for-classification-in-machine-learning.html?utm_source=rss&utm_medium=rss&utm_campaign=getting-started-with-scikit-learn-for-classification-in-machine-learning
- 1
- 10
- 100
- 67
- 77
- 84
- 9
- 98
- a
- สามารถ
- เกี่ยวกับเรา
- แน่นอน
- ความถูกต้อง
- บรรลุ
- นำมาใช้
- สูง
- AI
- ขั้นตอนวิธี
- อัลกอริทึม
- แล้ว
- เสมอ
- และ
- เข้าใกล้
- รถยนต์
- ใช้ได้
- ขั้นพื้นฐาน
- ประโยชน์
- ที่ดีที่สุด
- ดีกว่า
- บูต
- สร้าง
- สร้าง
- ความท้าทาย
- เปลี่ยนแปลง
- Choose
- ชั้นเรียน
- การจัดหมวดหมู่
- การจัดกลุ่ม
- รหัส
- อย่างธรรมดา
- ชุมชน
- ซับซ้อน
- ความซับซ้อน
- พิจารณา
- คงเส้นคงวา
- ประกอบด้วย
- มี
- แปลง
- ข้อมูล
- ชุดข้อมูล
- การตัดสินใจ
- ลดลง
- ผู้พัฒนา
- นักพัฒนา
- ต่าง
- แตกต่าง
- โดยตรง
- เอกสาร
- แต่ละ
- ชั้นเยี่ยม
- พอ
- อีเธอร์ (ETH)
- ประเมินค่า
- ประเมิน
- การทดลอง
- สำรวจ
- ลักษณะ
- สองสาม
- ในที่สุด
- ความยืดหยุ่น
- ป่า
- เป็นมิตร
- ราคาเริ่มต้นที่
- ฟังก์ชันการทำงาน
- ต่อไป
- ได้รับ
- ได้รับ
- ยิ่งใหญ่
- ตะแกรง
- หัว
- จุดสูง
- สรุป ความน่าเชื่อถือของ Olymp Trade?
- ทำอย่างไร
- HTML
- HTTPS
- การปรับแต่งไฮเปอร์พารามิเตอร์
- ความคิด
- การดำเนินการ
- นำเข้า
- ปรับปรุง
- in
- ติดตั้ง
- รวบรวม
- IT
- เก็บ
- เรียนรู้
- ได้เรียนรู้
- การเรียนรู้
- ชั้น
- ห้องสมุด
- ห้องสมุด
- เครื่อง
- เรียนรู้เครื่อง
- แมโคร
- ทำให้
- ปริญญาโท
- แบบ
- โมเดล
- โมดูล
- ข้อมูลเพิ่มเติม
- มากที่สุด
- หลาย
- สังเกต
- ที่ได้รับ
- เสนอ
- เป็นทางการ
- ONE
- พารามิเตอร์
- พารามิเตอร์
- หลงใหล
- การปฏิบัติ
- ที่มีประสิทธิภาพ
- ดำเนินการ
- เพลโต
- เพลโตดาต้าอินเทลลิเจนซ์
- เพลโตดาต้า
- ความนิยม
- ความแม่นยำ
- ปัญหา
- การผลิต
- หลาม
- สุ่ม
- อ่าน
- การแสดง
- รับผิดชอบ
- REST
- ผลสอบ
- กลับ
- แข็งแรง
- scikit เรียนรู้
- ค้นหา
- Share
- แสดงให้เห็นว่า
- คล้ายคลึงกัน
- ง่าย
- เดียว
- สังคม
- แก้
- บาง
- ช่องว่าง
- ข้อความที่เริ่ม
- กลยุทธ์
- โครงสร้าง
- เหมาะสม
- สนับสนุน
- เทคนิค
- ทดสอบ
- การทดสอบ
- พื้นที่
- ของพวกเขา
- ของบุคคลที่สาม
- ตลอด
- ไปยัง
- รวม
- รถไฟ
- การฝึกอบรม
- จริง
- เกี่ยวกับการสอน
- ใช้
- ความคุ้มค่า
- ความคุ้มค่า
- ต่างๆ
- ที่
- จะ
- นักเขียน
- X
- ลมทะเล