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

اعثر على العناصر الشاذة

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

سؤال أخير: ما الصور الممسوحة ضوئيًا الشاذة؟ تمنح غابة العزل درجة لكل صورة ممسوحة ضوئيًا، وكلما انخفضت الدرجة، زادت غرابتها. أولًا، أعلى الدرجات، أي الصور الأكثر اعتيادية:

عشر صور ممسوحة ضوئيًا مرتبة بعناية لكتابة بخط اليد في صفين، وهي الأكثر اعتيادية في المجموعة: خمسة أصفار مستديرة، وثلاثة أرقام 9، ورقم 8 ورقم 2

iso = IsolationForest(contamination=0.02, random_state=0)
flags = iso.fit_predict(X_small)
scores = iso.score_samples(X_small)
typical = np.argsort(scores)[::-1][:10]

تسرد np.argsort أرقام الصفوف بدءًا من أقل درجة، لذا عند عكس الترتيب، تظهر الأكثر اعتياديةً أولًا. اعرضها من X: جميع البكسلات الـ64.

challenge icon

التحدي

متوسط

الختام. يحتوي الكود الابتدائي على كل ما سبق، وعلى guess، اسم المجموعة لكل مسح.

  1. درّب غابة عزل على X_small (contamination=0.02، random_state=0). اطبع عدد المسوح التي تصنّفها على أنها شاذة، والرقم الذي صُنّف على أنه شاذ في أغلب الأحيان، وعدد المسوح التي سمّاها اسم مجموعتها بشكل صحيح من بينها.
  2. ارسم أغرب 10 مسوح، بدءًا بالأغرب: معرضًا من صفين وخمسة أعمدة باستخدام gray_r، مع وضع أرقامها عناوين لها.

مع contamination=0.01:

Flagged as odd: 18 of 1797 scans
Most often odd: 7 (10 scans)
Named right by their cluster: 11 of 18 odd scans

سيبدو معرض أكثر الأرقام 7 اعتياديةً على النحو التالي:

عشرة أرقام 7 مكتوبة بخط اليد في معرض من صفين وخمسة أعمدة، عنوان كل منها 7، وكلها متشابهة: خط علوي، وخط عرضي قصير، وخط يمتد إلى الأسفل

سيعرض معرضك المسوح الأغرب. تُسمّي المجموعات 79.2% من جميع المسوح بشكل صحيح: كيف تقارن بها المسوح الشاذة؟ لقد استكشفت 1,797 مسحًا ولم تدرّب النموذج على أي تسمية.

جرّب بنفسك

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans
from sklearn.ensemble import IsolationForest

# من «انظر إلى الأرقام»: 1,797 صورة، كل منها مكوّنة من 64 بكسل، وتتراوح قيمة الحبر من 0 إلى 16
digits = load_digits()
X = digits.data
y = digits.target

# من «قلّص باستخدام PCA»: 80% من التباين في 13 قيمة لكل صورة
pca = PCA(n_components=0.8)
X_small = pca.fit_transform(X)

# من «جمّع الأرقام»: 10 مجموعات، حُدّدت دون تسميات
km = KMeans(n_clusters=10, n_init=10, random_state=0).fit(X_small)

# من «سمِّ المجموعات»: الرقم الذي سُمّيت به مجموعة كل صورة (79.2% تطابق y)
names = pd.crosstab(km.labels_, y).idxmax(axis=1)
guess = names.to_numpy()[km.labels_]

# اكتب الكود الخاص بك أدناه
quiz iconاختبر نفسك

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

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

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