Treść książki
Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
28
KLASYFIKATORYKNN
MATLAB
c=[11
-11
-1-1]
o40=ones(40,1)
xc=[o40*c(1,1)o40*c(1,2)
o40*c(2,1)o40*c(2,2)
o40*c(3,1)o40*c(3,2)]
xucz=[randn(40,2);
randn(40,2);
randn(40,2)]+xc
ducz=[1*ones(40,1);
2*ones(40,1);
3*ones(40,1)];
xtest=[randn(40,2);
randn(40,2);
randn(40,2)]+xc
dtest=[1*ones(40,1);
2*ones(40,1);
3*ones(40,1)];
plot(xucz(ducz==1,1),
xucz(ducz==1,2),’o’,
xucz(ducz==2,1),...
xucz(ducz==2,2),’gx’,
xucz(ducz==3,1),
xucz(ducz==3,2),’bd’,
c(:,1),c(:,2),’s’)
grid
legend(’klasa1’,’klasa2’,...
’klasa3’)
title([’Rozkładdanychucz’...
’ącychzpodziałemnaklasy’])
xlabel(’x_1’),ylabel(’x_2’)
%ModelklasyfikatoraKNN
knn=fitcknn(xucz,ducz,
%testowanienazbiorzetestowym
y=predict(knn,xtest)
%Macierzniezgodnościklasowej
confusionmat(dtest,y)
’NumNeighbors’,5,
’Standardize’,1)
...
...
...
...
...
...
...
Python
plt.subplots(1,1,dpi=200)
#Generacjadanych
fromsklearn.datasetsimport(
xucz,ducz=make_blobs(120,2,
colors=[[’o’,’red’],
forkin[0,1,2]:
plt.legend();plt.grid();
plt.title(„””Rozkładdanych
uczącychzpodziałemnaklasy”””)
plt.xlabel(’x_1’);
plt.ylabel(’$x_2$’)
xtest,dtest=make_blobs(80,2,
#ModelklasyfikatoraKNN
fromsklearn.neighborsimport(
knn=KNeighborsClassifier(5)
knn.fit(xucz,ducz)
#testowanienazbiorzetestowym
y=knn.predict(xtest)
#Macierzniezgodnościklasowej
fromsklearn.metricsimport(
confusion_matrix(dtest,y)
centers=[[1,1],
plt.scatter(xucz[ducz==k,0],
centers=[[1,1],
KNeighborsClassifier)
confusion_matrix)
make_blobs)
xucz[ducz==k,1],
marker=colors[k][0],
color=colors[k][1],
label=f”klasa{k+1}”)
[-1,1],[-1,-1]])
[’x’,’green’],
[’d’,’blue’]]
[-1,1],[-1,-1]])
Załączoneprogramywygenerowałyrozkładylosowepunktówwokółtrzech
punktówcentralnych:(1,1),(–1,1)oraz(–1,–1)pokazanenarys.3.2.Wygene-
rowanedaneniesąidealnieseparowalneiklasyczęściowosięprzenikają,ale
jakwynikazponiższychwynikówmetodanajbliższychsąsiadówdajedlanich
znacznielepszerezultaty.