اعثر على العناصر الشاذة
جزء من قسم التعلّم غير الخاضع للإشراف في رحلة Machine Learning على Coddy. الدرس 47 من 51.
سؤال أخير: ما الصور الممسوحة ضوئيًا الشاذة؟ تمنح غابة العزل درجة لكل صورة ممسوحة ضوئيًا، وكلما انخفضت الدرجة، زادت غرابتها. أولًا، أعلى الدرجات، أي الصور الأكثر اعتيادية:
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.
التحدي
متوسطالختام. يحتوي الكود الابتدائي على كل ما سبق، وعلى guess، اسم المجموعة لكل مسح.
- درّب غابة عزل على
X_small(contamination=0.02،random_state=0). اطبع عدد المسوح التي تصنّفها على أنها شاذة، والرقم الذي صُنّف على أنه شاذ في أغلب الأحيان، وعدد المسوح التي سمّاها اسم مجموعتها بشكل صحيح من بينها. - ارسم أغرب 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 اعتياديةً على النحو التالي:
سيعرض معرضك المسوح الأغرب. تُسمّي المجموعات 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_]
# اكتب الكود الخاص بك أدناه
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس التعلّم غير الخاضع للإشراف
1اكتشاف المجموعات
التعلّم دون تسمياتقياس التشابهتنفيذ K-Means يدويًااستخدام K-Means في scikit-learnمراجعة: أعضاء النادي الرياضي7تحليل PCA عمليًا
رؤية 64 بُعدًاالمكوّنات بوصفها أنماطًاالضغط وإعادة البناءPCA قبل تدريب النموذجمراجعة: ماسح الوجوه10مشروع: مستكشف الأرقام
ألقِ نظرة على الأرقاماختزل باستخدام PCAجمّع الأرقامأطلق أسماء على المجموعاتاعثر على العناصر الشاذةتدرّب بنفسك: مترجم Python عبر الإنترنت