به نام خدا

طبقه بندی نزدیکترین همسایه و K نزدیکترین همسایه

لود کتابخانه‌های مورد استفاده

برای اجرای این نوت‌بوک باید سه کتابخانه ی scipy و matplotlib را نصب کنید. بدین منظور به اینترنت متصل شود و در cmd دو دستور زیر را بنویسید:

pip install scipy

pip install matplotlib

pip install scikit-learn

pip install opencv-python

میتوانید به جای pip از کلمه ی conda استفاده کنید. (اگر از آناکوندا استفاده میکنید.)
In [1]:
from sklearn.neighbors import KNeighborsClassifier
import matplotlib.pyplot as plt

from dataset import load_hoda

لود مجموعه داده (dataset)

In [2]:
X_train, y_train, X_test, y_test = load_hoda()

ایجاد طبقه بند k-nn

In [3]:
neigh = KNeighborsClassifier(n_neighbors=3)
neigh.fit(X_train, y_train)
Out[3]:
KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',
           metric_params=None, n_jobs=None, n_neighbors=3, p=2,
           weights='uniform')

پیش‌بینی داده‌های آموزشی

In [12]:
sample = 24

X = [X_test[sample]]

predicted_class = neigh.predict(X)
actual_class = y_test[sample]

print ("Sample {} is a {}, and you prediction is: {}.".format(sample, actual_class, predicted_class[0]))
Sample 24 is a 9, and you prediction is: 9.
In [10]:
print(neigh.predict_proba(X))
[[0.         0.         0.         0.         0.         0.
  0.33333333 0.         0.         0.66666667]]
مثال بالا را با sample سوم تست کنید. و خروجی را تشریح کنید.
predict_proba چه احتمالاتی را برگردانده؟ کدام کلاس به عنوان پیش‌بینی مدل انتخاب شده؟

پیش‌بینی چندین داده آزمون

In [13]:
pred_classes = neigh.predict(X_test)
true_classes = y_test

print("Predicted classes:")
print(pred_classes)
print("True classes:")
print(true_classes)
Predicted classes:
[7 2 3 1 5 5 4 7 3 2 0 8 8 0 3 9 3 6 7 4 0 3 6 3 9 2 7 5 2 9 7 5 5 8 9 6 5
 1 4 8 8 4 2 7 1 2 7 9 0 3 7 4 7 5 2 9 8 2 9 8 8 6 6 6 7 6 2 4 1 4 4 5 9 1
 8 2 0 5 6 2 4 3 2 7 7 7 7 1 8 1 7 8 7 7 8 9 3 2 3 1 0 2 9 7 3 5 5 0 0 2 6
 7 9 3 9 9 8 7 9 2 5 2 5 5 9 6 9 2 0 3 7 6 5 2 9 0 4 1 8 2 2 3 0 2 9 3 8 6
 7 0 9 9 0 7 6 1 4 7 9 3 7 0 7 1 9 4 7 3 4 1 5 6 7 9 1 3 5 4 5 7 4 1 3 3 1
 2 5 3 8 9 6 7 7 2 3 0 1 4 9 5]
True classes:
[7 2 3 1 5 5 4 7 3 2 0 8 8 0 2 9 3 6 7 4 0 3 6 3 9 2 7 5 2 9 7 5 5 8 9 6 5
 1 4 8 8 4 7 7 1 2 7 9 0 3 7 4 7 5 2 9 8 2 9 8 8 6 6 6 6 6 2 4 3 4 4 5 9 1
 8 2 0 5 6 2 4 3 2 7 7 7 7 1 8 1 7 8 7 7 8 9 3 2 3 1 0 2 9 6 3 5 5 0 0 3 6
 7 9 3 9 9 8 7 9 2 5 2 5 5 9 6 9 2 0 3 7 6 5 2 9 0 4 1 8 2 2 3 0 2 9 3 8 6
 7 0 9 9 0 7 6 5 4 7 9 3 7 0 7 1 9 4 7 3 4 1 5 6 7 9 1 3 5 4 5 7 4 1 3 3 1
 2 3 3 8 9 6 7 7 2 3 0 1 4 9 5]

ارزیابی

In [14]:
acc = neigh.score(X_test, y_test)
print ("Accuracy is %.2f %%" %(acc*100))
Accuracy is 96.00 %
دوره مقدماتی یادگیری عمیق
علیرضا اخوان پور
پنج شنبه، ۱۸ بهمن ۱۳۹۷
Class.Vision - AkhavanPour.ir - GitHub
In [ ]: