PCA
جزء من قسم التعلّم غير الخاضع للإشراف في رحلة Machine Learning على Coddy. الدرس 26 من 51.
يجد PCA الاتجاه الذي يكون فيه أكبر انتشار، ثم أفضل اتجاه متعامد معه، وهكذا: المكونات. على توأمي النبيذ:
تُصبح إسقاطات كل صف على المكوّنات القليلة الأولى ميزاته الجديدة:
from sklearn.decomposition import PCA
scaled = StandardScaler().fit_transform(X)
points = PCA(n_components=2).fit_transform(scaled)
print(X.shape, points.shape)بالنسبة إلى قياسات النبيذ الـ13 جميعها، يطبع هذا (178, 13) (178, 2).
قم بالتحجيم أولًا. تتبع PCA مدى الانتشار، لذا فإن الميزة بوحدات كبيرة، مثل البرولين الذي تُقاس قيمته بالمئات، تتفوق لمجرد حجمها:
التحدي
متوسطيختبر مختبر مياه زجاجات من ثلاثة ينابيع، مع 8 قياسات لكل زجاجة. هل يمكن لخريطة ثنائية الأبعاد أن تميّز بين الينابيع؟ تلوّن draw_springs(ax, points) أي نقاط ثنائية الأبعاد حسب النبع.
- قِس
X، ثم اختزلها إلى مكوّنين باستخدام PCA، واحفظ الناتج فيpoints. - اطبع عدد السمات قبل الاختزال وبعده.
- ارسم النقاط باستخدام
draw_springsواعرضها.
في مختبر آخر، مع 6 قياسات:
From 6 features to 2يصف Coddy خريطتك.
جرّب بنفسك
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
# مختبر للمياه: 8 قياسات لكل زجاجة من أصل 120 زجاجة من ثلاثة ينابيع
waters = pd.read_csv("waters.csv")
X = waters.drop(columns="spring")
# يعرض نقاطًا ثنائية الأبعاد في مخطط مبعثر، بمجموعة لكل ينبوع، مع مفتاح توضيحي
def draw_springs(ax, points):
for spring in ["alpine", "volcanic", "coastal"]:
rows = (waters["spring"] == spring).to_numpy()
ax.scatter(points[rows, 0], points[rows, 1], s=16, label=spring)
ax.legend()
fig, ax = plt.subplots()
ax.set_title("Spring Waters in 2D")
ax.set_xlabel("First component")
ax.set_ylabel("Second component")
# اكتب الكود الخاص بك أدناه
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس التعلّم غير الخاضع للإشراف
1اكتشاف المجموعات
التعلّم دون تسمياتقياس التشابهتنفيذ K-Means يدويًااستخدام K-Means في scikit-learnمراجعة: أعضاء النادي الرياضيتدرّب بنفسك: مترجم Python عبر الإنترنت