如何解决如何绘制由受过训练的kNN确定的决策边界?
到目前为止,我已经将虹膜数据集分为训练集,值集和测试集。 我已经对knn进行了值1,5,10,15,20,30的训练,发现训练的准确性。 我现在想要绘制决策边界。
我找到了一些示例,但是不确定如何在其中实现代码,以便绘制数据。 可以执行我想做的示例代码:
#Calculate min,max and limits
x_min,x_max = X[:,0].min() - 1,X[:,0].max() + 1
y_min,y_max = X[:,1].min() - 1,1].max() + 1
xx,yy = np.meshgrid(np.arange(x_min,x_max,h),np.arange(y_min,y_max,h))
# predict class using data and kNN classifier
Z = knn.predict(np.c_[xx.ravel(),yy.ravel()])
# Put the result into a color plot
Z = Z.reshape(xx.shape)
plt.figure()
plt.pcolormesh(xx,yy,Z,cmap=cmap_light,shading='auto')
# Plot
plt.scatter(X[:,0],1],c=Y,cmap=cmap_bold)
plt.xlim(xx.min(),xx.max())
plt.ylim(yy.min(),yy.max())
plt.title("3-Class classification (k = %i)" % n_neighbors)
plt.show()
我要在其中实现的代码,以便显示我的数据:
X = iris.data[:,:2]
Y = iris.target
X_train,X_val_test,Y_train,Y_val_test = train_test_split(X,Y,test_size=.3,shuffle=True,random_state=666)
X_val,X_test,Y_val,Y_test = train_test_split(X_val_test,Y_val_test,test_size=.5,random_state=221)
# Store number of datapoints in each dataset:
N_train = len(Y_train)
N_val = len(Y_val)
N_test = len(Y_test)
print("Datapoints used for training: ",N_train)
print("Datapoints used for validation: ",N_val)
print("Datapoints used for testing : ",N_test)
# 70% - 30% - 30% train / val / test ratio
h = .02 # step size in the mesh
# Create color maps
cmap_light = ListedColormap(['#FFAAAA','#AAFFAA','#00AAFF'])
cmap_bold = ListedColormap(['#FF0000','#00FF00','#00AAFF'])
# Try K = 1,20 and 30 - And record testing accuracy
k_list = [1,30]
scores = []
for k in k_list:
knn = KNeighborsClassifier(n_neighbors=k)
knn.fit(X_train,Y_train)
Y_pred = knn.predict(X_test)
scores.append(metrics.accuracy_score(Y_test,Y_pred))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。