Knn parametrik bo'lmagan, dangasa


Download 20.03 Kb.
Sana23.06.2023
Hajmi20.03 Kb.
#1652172
Bog'liq
KNN


K Pythonda eng yaqin qo'shni algoritmi


K-Yaqin qo'shnilar yoki qisqacha KNN, mashinani o'rganishning eng oddiy algoritmlaridan biri bo'lib, ko'plab muassasalarda qo'llaniladi. KNN parametrik bo'lmagan, dangasa o'rganish algoritmidir. Texnika parametrik emas, desak, u asosiy ma'lumotlar haqida hech qanday taxminlar qilmaydi. Boshqacha qilib aytganda, u raqamli qiymatlar qaysi xususiyatni ifodalashidan qat'i nazar, boshqa ma'lumotlar nuqtalariga yaqinlik asosida o'z tanlovini amalga oshiradi. Dangasa o'rganish algoritmi bo'lish o'quv bosqichining kam yoki umuman yo'qligini anglatadi. Shuning uchun, biz darhol yangi ma'lumotlar nuqtalarini ular o'zlarini taqdim etgan holda tasniflashimiz mumkin.
KNNning ba'zi ijobiy va salbiy tomonlari
Taroziga :

  • Ma'lumotlar haqida hech qanday taxminlar yo'q

  • Oddiy algoritm - tushunish oson

  • Tasniflash va regressiya uchun foydalanish mumkin

Kamchiliklari :

  • Yuqori xotira talabi - Eng yaqin K qo'shnilarini hisoblash uchun barcha o'quv ma'lumotlari xotirada bo'lishi kerak

  • Muhim bo'lmagan xususiyatlarga sezgir

  • Maʼlumotlar miqyosiga sezgir, chunki biz eng yaqin K nuqtalarigacha boʻlgan masofani hisoblaymiz

Algoritm

  1. K qiymatini tanlang (ya'ni 5).


2. Yangi ma'lumotlar nuqtasining eng yaqin K qo'shnilarini ularning Evklid masofasiga qarab oling .

3. Ushbu qo'shnilar orasida har bir toifadagi ma'lumotlar nuqtalari sonini hisoblang va yangi ma'lumotlar nuqtasini eng ko'p qo'shnilarni sanagan toifaga belgilang.

Kod
Keling, Python-da K-Yaqin qo'shnilar algoritmidan foydalangan holda ma'lumotlarni qanday tasniflash mumkinligini ko'rib chiqaylik. Ushbu qo'llanma uchun biz moduldagi ko'krak bezi saratoni ma'lumotlar to'plamidan foydalanamiz sklearn.datasets. Davom etayotgan kutubxonalarni import qilishdan boshlashimiz kerak.

Sklearn.Datase-dan NP import pishaps-import pip- import
pip-compy-ni
Sklearn.Datriccer-
dan
SKELEARN.Matrixi-dan olib kiring Sklearn_splite import Sks Sns Sns Sns Sns Sns Sns Sns
Sns The ConBotrixe
import import vositasi sifatida import qiling .


Ma'lumotlar to'plami o'smalarni ikki toifaga (xatarli va yaxshi) tasniflaydi va 30 ga yaqin xususiyatni o'z ichiga oladi. Haqiqiy dunyoda siz korrelyatsiyalarni ko'rib chiqasiz va o'simta xavfli yoki yo'qligini aniqlashda eng katta rol o'ynaydigan xususiyatlar to'plamini tanlaysiz. Biroq, soddalik uchun biz tasodifiy juftlikni tanlaymiz. Model tomonidan talqin qilinishi uchun kategoriyali ma'lumotlarni kodlashimiz kerak (ya'ni, malign = 0va benign = 1).
breast_cancer = load_breast_cancer()
X = pd.DataFrame(breast_cancer.data, columns=breast_cancer.feature_names)
X = X[['o'rtacha maydon', 'o'rtacha ixchamlik']]
y = pd.Categorical.from_codes(breast_cancer.target, breast_cancer.target) .target_names)
y = pd.get_dummies(y, drop_first=To'g'ri)
Boshqa o'quv qo'llanmada aytib o'tilganidek, modelni yaratish maqsadi aniqlanmagan teglar bilan yangi ma'lumotlarni tasniflashdir. Shuning uchun, bizning modelimiz ma'lumotlarni tasniflashda yaxshi ish yoki yo'qligini tekshirish uchun ma'lumotlarni chetga surib qo'yishimiz kerak. Odatiy bo'lib, train_test_splitdastlabki ma'lumotlar to'plamidagi namunalarning 25 foizini sinov uchun ajratadi.
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=1)
Kutubxona sklearnPython ustiga abstraksiya qatlamini taqdim etdi. Shuning uchun, KNN algoritmidan foydalanish uchun ning misolini yaratish kifoya KNeighborsClassifier. Odatiy bo'lib, eng yaqin 5 taKNeighborsClassifier qo'shni qidiradi . Biz tasniflagichga qo'shni nuqtalar orasidagi yaqinlikni aniqlash uchun Evklid masofasidan foydalanishni aniq aytishimiz kerak.
knn = KNeighborsClassifier(n_neighbors=5, metrik='evklid')
knn.fit(X_train, y_train)
Yangi o'qitilgan modelimizdan foydalanib, biz o'simtaning o'rtacha ixchamligi va maydonini hisobga olgan holda yaxshi yoki yo'qligini taxmin qilamiz.
y_pred = knn.predict(X_test)
Biz modelimiz tomonidan qilingan bashoratlarni sinov to'plami ichidagi namunalar bilan vizual tarzda taqqoslaymiz.
sns.scatterplot(
x='o'rtacha maydon',
y='o'rtacha ixchamlik',
hue='benign',
data=X_test.join(y_test, how='tashqi')
)

plt.scatter(
X_test['o'rtacha maydon'],
X_test['o'rtacha ixchamlik'],
c=y_pred,
cmap='sovuq',
alfa=0,7
)

Bizning modelimizni baholashning yana bir usuli - chalkashlik matritsasini hisoblash. Chalkashlik matritsasining diagonalidagi raqamlar to'g'ri bashoratlarga mos keladi, qolganlari esa noto'g'ri musbat va noto'g'ri salbiyni bildiradi.
chalkashlik_matritsasi(y_test, y_pred)

Bizning chalkashlik matritsasini hisobga olgan holda, bizning modelimiz 121/143 = 84,6% aniqlikka ega.
Xulosa
K Nearest Neighbors algoritmi yangi ma'lumotlar paydo bo'lganda qo'shimcha treningni talab qilmaydi. Aksincha, u ba'zi masofa ko'rsatkichlariga ko'ra K eng yaqin nuqtalarni aniqlaydi (namunalar xotirada bo'lishi kerak). Keyin u qo'shnilarning har biri uchun maqsadli yorliqni ko'rib chiqadi va yangi topilgan ma'lumotlar nuqtasini ko'pchilik bilan bir xil toifaga joylashtiradi. KNN masofani hisoblashini hisobga olsak, biz ma'lumotlarimizni o'lchashimiz shart. Bundan tashqari, KNN asosiy xususiyatlarni e'tiborsiz qoldirganligi sababli, ahamiyatsiz deb hisoblangan har qanday xususiyatlarni filtrlash bizning mas'uliyatimizdir.
Download 20.03 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling