Menu
CoddyTech
flag Ar iconالعربيةdown icon

درجة F1

جزء من قسم التعلّم الخاضع للإشراف في رحلة Machine Learning على Coddy. الدرس 23 من 58.

يمكن للنموذج تحقيق أقصى دقة أو استدعاء بالتخلي عن الآخر. يجمع مقياس F1 بينهما، ويظل منخفضًا ما لم تكن كلتاهما مرتفعتين:

أعمدة لنموذجين. غير متوازن: الدقة 1، والاستدعاء 0.1، والمتوسط العادي 0.55، ومقياس F1 هو 0.18 فقط. متوازن: الدقة 0.8، والاستدعاء 0.7، والمتوسط العادي 0.75، ومقياس F1 هو 0.75

مع اعتبار 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 صفوف الاختبار الخاصة بها. ويخبرك أضعف صف فيها بما يجب إصلاحه أولًا.

challenge icon

التحدي

متوسط

ترتّب كاميرا مصنع لإعادة التدوير العناصر في حاويات الزجاج والمعادن والورق والبلاستيك. يقرأ البرنامج k، ويُدرّب الكود التمهيدي نموذج k-NN للكاميرا، ويملأ pred ويسرد bins.

  1. اطبع تقرير التصنيف.
  2. اعثر على الحاوية ذات أدنى قيمة 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_

# اكتب شيفرتك أدناه
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس التعلّم الخاضع للإشراف

تدرّب بنفسك: مترجم Python عبر الإنترنت