درجة F1
جزء من قسم التعلّم الخاضع للإشراف في رحلة Machine Learning على Coddy. الدرس 23 من 58.
يمكن للنموذج تحقيق أقصى دقة أو استدعاء بالتخلي عن الآخر. يجمع مقياس F1 بينهما، ويظل منخفضًا ما لم تكن كلتاهما مرتفعتين:
مع اعتبار P للدقة وR للاسترجاع، فإن F1 تساوي 2 * P * R / (P + R). لنموذج الطقس:
from sklearn.metrics import f1_score, classification_report
y_test = ["sun", "sun", "rain", "rain", "snow", "sun", "rain", "snow"]
pred = ["sun", "rain", "rain", "rain", "snow", "sun", "sun", "rain"]
print(f1_score(y_test, pred, average=None)) # واحدة لكل فئة، مرتبة
print(classification_report(y_test, pred))يطبع هذا:
[0.57142857 0.66666667 0.66666667]
precision recall f1-score support
rain 0.50 0.67 0.57 3
snow 1.00 0.50 0.67 2
sun 0.67 0.67 0.67 3
accuracy 0.62 8
macro avg 0.72 0.61 0.63 8
weighted avg 0.69 0.62 0.63 8يقيّم التقرير كل فئة؛ ويحسب support صفوف الاختبار الخاصة بها. ويخبرك أضعف صف فيها بما يجب إصلاحه أولًا.
التحدي
متوسطترتّب كاميرا مصنع لإعادة التدوير العناصر في حاويات الزجاج والمعادن والورق والبلاستيك. يقرأ البرنامج k، ويُدرّب الكود التمهيدي نموذج k-NN للكاميرا، ويملأ pred ويسرد bins.
- اطبع تقرير التصنيف.
- اعثر على الحاوية ذات أدنى قيمة F1 واطبعها، ثم جانبها الأضعف، وهو الدقة أو الاستدعاء، كما هو موضح أدناه (3 منازل عشرية).
بعد التقرير، لمصنع آخر:
Weakest bin: metal, F1 0.667
Its weaker side: recall 0.571جرّب بنفسك
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import classification_report, f1_score, precision_score, recall_score
k = int(input())
# صف واحد لكل عنصر على السير، مع الحاوية التي ينتمي إليها
items = pd.read_csv("recycling.csv")
features = ["weight_g", "shine", "see_through", "bend"]
X_train, X_test, y_train, y_test = train_test_split(items[features], items["material"], test_size=0.25, random_state=0)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# نموذج الكاميرا
model = KNeighborsClassifier(n_neighbors=k)
model.fit(X_train, y_train)
pred = model.predict(X_test)
# الحاويات، بالترتيب الذي تظهر به الدرجات لكل فئة
bins = model.classes_
# اكتب شيفرتك أدناه
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس التعلّم الخاضع للإشراف
تدرّب بنفسك: مترجم Python عبر الإنترنت