العناقيد كسمات
جزء من قسم التعلّم غير الخاضع للإشراف في رحلة Machine Learning على Coddy. الدرس 40 من 51.
لا يمكن للنموذج ذي الخط المستقيم أن ينحني. تضعف إشارة الهاتف في ثلاث قرى مع الابتعاد عن برج كل قرية، وهو نمط لا يكشفه الموقع وحده:
تحدّد خوارزمية k-means القرى. تعطي km.transform مسافة كل صف إلى كل مركز، ويُبقي .min(axis=1) على الأقرب:
km = KMeans(n_clusters=3, n_init=10, random_state=0).fit(X_train)
near_train = km.transform(X_train).min(axis=1)
near_test = km.transform(X_test).min(axis=1)
X_train2 = np.column_stack([X_train, near_train])
X_test2 = np.column_stack([X_test, near_test])بإضافة ذلك العمود الإضافي، يرتفع معامل التحديد R² للنموذج الخطي في الاختبار من 0.000 إلى 0.886.
قم بملاءمة خوارزمية k-means على صفوف التدريب فقط، كما تفعل مع أداة التحجيم، ثم حوِّل كلا المجموعتين.
التحدي
متوسطيريد فريق الصوت في مهرجان أن يعرف مدى ارتفاع الصوت في الأماكن التي يقف فيها الناس. يقسم الملف المبدئي البيانات في crowd.csv، ويقرأ k، ويطبع النتيجة اعتمادًا على الموقع وحده.
- طبّق خوارزمية k-means باستخدام
kعناقيد على مواقع بيانات التدريب. - أضف مسافة كل صف إلى أقرب مركز بوصفها عمودًا ثالثًا، في كلتا المجموعتين.
- اطبع معامل R تربيع الجديد للاختبار ومقدار التحسّن، إلى 3 منازل عشرية.
في مهرجان آخر وعندما تكون k = 4:
Position only: R squared 0.097
With the nearest of 4 centers: R squared 0.734
Gain: 0.637جرّب بنفسك
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.cluster import KMeans
# 250 من روّاد المهرجان: أماكن وقوفهم (m) ومستوى الصوت هناك (dB)
crowd = pd.read_csv("crowd.csv")
X = crowd[["x_m", "y_m"]].to_numpy()
y = crowd["sound_db"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
k = int(input())
# يلائم نموذج انحدار خطي باستخدام أعمدة التدريب، ويُرجع قيمة R squared على أعمدة الاختبار
def test_r2(A_train, A_test):
model = LinearRegression().fit(A_train, y_train)
return model.score(A_test, y_test)
before = test_r2(X_train, X_test)
print(f"Position only: R squared {before:.3f}")
# اكتب شيفرتك أدناه
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس التعلّم غير الخاضع للإشراف
1اكتشاف المجموعات
التعلّم دون تسمياتقياس التشابهتنفيذ K-Means يدويًااستخدام K-Means في scikit-learnمراجعة: أعضاء النادي الرياضيتدرّب بنفسك: مترجم Python عبر الإنترنت