جارٍ تحميل الدرس...
في نافذة الطباعة اختر «حفظ كملف PDF» كوجهة.
معمل تعلم الآلة - المعمل 3
Pandasمن إطارات البيانات الخام إلى مقارنة بين K-Means وSOM على مجموعة بيانات Iris
pandasDataFrame)K-Means وSOM على بيانات حقيقية بعد التحضير المناسبDataFrame)DataFrameSQL.sample_data = {'Name': ['Ahmed','Fatima'], 'Age': [22,21], 'Grade': [85,92]}
df = pd.DataFrame(sample_data)
df.shape # (rows, columns)
df.columns.tolist()
df.dtypesIris3 أنواع (setosa، versicolor، virginica)، و4 ميزات (Features)sklearn.datasets.load_iris() أو pd.read_csv()iris = load_iris()
df_iris = pd.DataFrame(data=iris.data, columns=iris.feature_names)
df_iris['species'] = iris.target
df_iris['species_name'] = df_iris['species'].map(
{0: 'setosa', 1: 'versicolor', 2: 'virginica'})150 صفا × 6 أعمدةdf.describe() - العدد، المتوسط، الانحراف المعياري، القيم الدنيا/العليا، والأرباعيات لكل عمودdf.dtypes وdf.isnull().sum() - التحقق من الأنواع والقيم المفقودةdf['species_name'].value_counts() - 50 عينة لكل نوع، توازن تامdf[['sepal length (cm)', 'sepal width (cm)']]df[df['species_name'] == 'setosa']&filtered = df_iris[(df_iris['species_name'] == 'setosa') &
(df_iris['sepal length (cm)'] > 5.0)]Feature Normalization)4 إلى 8 cm مقابل عرض البتلة 0.1 إلى 2.5 cm)scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)Kk من 2 إلى 10، ورصد WCSS (القصور الذاتي) ومقياس السيلويت في كل خطوةfor k in range(2, 11):
km = KMeans(n_clusters=k, init='k-means++', n_init=10, random_state=42)
km.fit(X_scaled)
wcss.append(km.inertia_)
silhouette_scores.append(silhouette_score(X_scaled, km.labels_))k = 3 (تطابق العدد الحقيقي للأنواع)K-Meanskmeans_final = KMeans(n_clusters=3, init='k-means++', n_init=10, random_state=42)
df_iris['kmeans_cluster'] = kmeans_final.fit_predict(X_scaled)[53, 50, 47]، مقياس السيلويت = 0.459Self-Organizing Map)sklearn_som.SOM: تطبيق لخريطة SOM متوافق مع scikit-learn3×1 لثلاث مجموعات مستهدفة، وأربعة أبعاد إدخالsom_model = SOM(m=3, n=1, dim=4, lr=0.5, max_iter=1000, random_state=42)
som_model.fit(X_scaled)
df_iris['som_cluster'] = som_model.predict(X_scaled)[70, 30, 50]، مقياس السيلويت = 0.412K-Means مقابل SOM: الجدول التقاطعي (Cross-Tabulation)pd.crosstab(species_name, cluster) يظهر مدى تطابق المجموعات مع الأنواع الحقيقيةK-Means| النوع | 0 | 1 | 2 |
|---|---|---|---|
| setosa | 0 | 50 | 0 |
| versicolor | 39 | 0 | 11 |
| virginica | 14 | 0 | 36 |
SOM| النوع | 0 | 1 | 2 |
|---|---|---|---|
| setosa | 0 | 0 | 50 |
| versicolor | 21 | 29 | 0 |
| virginica | 49 | 1 | 0 |
K-Means: عزل تام لنوع setosa (50/50)؛ بعض التداخل بين versicolor وvirginicaSOM: يعزل setosa أيضا، لكن بتداخل أكبر بين versicolor وvirginica0.459 مقابل 0.412)groupby('species_name')[cols].mean() - إحصائيات لكل مجموعة.agg(['mean','std','min','max']) - عدة إحصائيات دفعة واحدةsepal_area = length * width، وsepal_to_petal_ratiodf_iris['petal_area'] = df_iris['petal length (cm)'] * df_iris['petal width (cm)']150 زهرة، 4 ميزات، 3 أنواع حقيقيةStandardScaler، صفر قيم مفقودةK-Means (k=3): سيلويت 0.459 - الأفضل أداءSOM (شبكة 3×1): سيلويت 0.412K-Means تتفوق قليلا على SOM هناDataFrames) توفر أدوات قوية وسهلة القراءة للتعامل مع البيانات الحقيقيةK-Means وSOM قادرتان على كشف البنية الطبيعية في البيانات الحقيقيةMahmoud Abas|المعمل الثالث: المعالجة المسبقة للبيانات والتجميع على بيانات واقعية باستخدام أطر بيانات Pandas