مقارنة أقرب الجيران مع وبدون تحليل مكونات الحي#

مثال يقارن تصنيف أقرب الجيران مع وبدون تحليل مكونات الحي.

سيقوم برسم حدود قرارات الفئة التي يحددها أقرب جيران المصنف عند استخدام المسافة الإقليدية على الميزات الأصلية، مقابل استخدام المسافة الإقليدية بعد التحول الذي تعلمه تحليل مكونات الحي. تهدف الأخيرة إلى إيجاد تحويل خطي يُضاعف دقة تصنيف أقرب الجيران (الاحتمالي) على مجموعة التدريب.

  • KNN (k = 1)
  • NCA, KNN (k = 1)
# المؤلفون: مطوري سكايلرن
# معرف الترخيص: BSD-3-Clause

import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap

from sklearn import datasets
from sklearn.inspection import DecisionBoundaryDisplay
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier, NeighborhoodComponentsAnalysis
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler

n_neighbors = 1

dataset = datasets.load_iris()
X, y = dataset.data, dataset.target

# نأخذ فقط ميزتين. يمكننا تجنب هذا القطع القبيح
# عن طريق استخدام مجموعة بيانات ثنائية الأبعاد
X = X[:, [0, 2]]

X_train, X_test, y_train, y_test = train_test_split(
    X, y, stratify=y, test_size=0.7, random_state=42
)

h = 0.05  # حجم الخطوة في الشبكة

# إنشاء خرائط الألوان
cmap_light = ListedColormap(["#FFAAAA", "#AAFFAA", "#AAAAFF"])
cmap_bold = ListedColormap(["#FF0000", "#00FF00", "#0000FF"])

names = ["KNN", "NCA, KNN"]

classifiers = [
    Pipeline(
        [
            ("scaler", StandardScaler()),
            ("knn", KNeighborsClassifier(n_neighbors=n_neighbors)),
        ]
    ),
    Pipeline(
        [
            ("scaler", StandardScaler()),
            ("nca", NeighborhoodComponentsAnalysis()),
            ("knn", KNeighborsClassifier(n_neighbors=n_neighbors)),
        ]
    ),
]

for name, clf in zip(names, classifiers):
    clf.fit(X_train, y_train)
    score = clf.score(X_test, y_test)

    _, ax = plt.subplots()
    DecisionBoundaryDisplay.from_estimator(
        clf,
        X,
        cmap=cmap_light,
        alpha=0.8,
        ax=ax,
        response_method="predict",
        plot_method="pcolormesh",
        shading="auto",
    )

    # قم برسم نقاط التدريب والاختبار أيضًا
    plt.scatter(X[:, 0], X[:, 1], c=y, cmap=cmap_bold, edgecolor="k", s=20)
    plt.title("{} (k = {})".format(name, n_neighbors))
    plt.text(
        0.9,
        0.1,
        "{:.2f}".format(score),
        size=15,
        ha="center",
        va="center",
        transform=plt.gca().transAxes,
    )

plt.show()

Total running time of the script: (0 minutes 1.221 seconds)

Related examples

الحد من الأبعاد باستخدام تحليل مكونات الجوار

الحد من الأبعاد باستخدام تحليل مكونات الجوار

تصنيف أقرب الجيران

تصنيف أقرب الجيران

الاحتفاظ بأقرب الجيران في الذاكرة المؤقتة

الاحتفاظ بأقرب الجيران في الذاكرة المؤقتة

تصنيف أقرب مركز

تصنيف أقرب مركز

Gallery generated by Sphinx-Gallery