Python 如何从k近邻中提取边界值 如何仅从.predict中提取或返回边界值 MRE 将熊猫作为pd导入 将numpy作为np导入 从sklearn.dataset导入加载 从sklearn.neighbors导入KNeighborsClassifier 导入seaborn作为sns 将matplotlib.pyplot作为plt导入 从matplotlib.colors导入ListedColormap #准备数据 iris=加载_iris() X=iris.data y=iris.target df=pd.DataFrame(X,columns=iris.feature\u名称) df['label']=y 物种地图=dict(zip(范围(3),鸢尾。目标名称)) df['species']=df.label.map(物种地图) df=df.reindex([‘萼片长度(cm)’,‘萼片宽度(cm)’,‘花瓣长度(cm)’,‘花瓣宽度(cm)’,‘品种’,‘标签’],轴=1) #实例化模型 knn=Kneighbors分类器(n_=6) #预测“花瓣长度(cm)”和“花瓣宽度(cm)” knn.fit(测向iloc[:,2:4],测向标签) h=.02#网格中的步长 #为等高线图创建颜色贴图 cmap_light=ListedColormap(列表(sns.color_调色板('pastel',n_colors=3))) #绘制决策边界。 #为此,我们将为网格中的每个点[x_min,x_max]x[y_min,y_max]指定一种颜色。 x_min,x_max=df['petal length(cm)]。min()-1,df['petal length(cm)]。max()+1 y_min,y_max=df['花瓣宽度(cm)]。min()-1,df['花瓣宽度(cm)]。max()+1 xx,yy=np.meshgrid(np.arange(x_min,x_max,h),np.arange(y_min,y_max,h)) Z=knn.predict(np.c_uuxx.ravel(),yy.ravel())。重塑(xx.shape) #创建绘图 图,ax=plt.子批次() #添加数据点 sns.散点图(数据=df,x='花瓣长度(厘米)',y='花瓣宽度(厘米)',色调='物种',ax=ax,边缘颜色='k') #在地图上添加决策边界计数 最大轮廓f(xx,yy,Z,cmap=cmap_光,α=0.4) #传奇 lgd=plt.图例(bbox\u至\u锚定=(1.05,1),位置=左上角') plt.show() 结果图
期望图Python 如何从k近邻中提取边界值 如何仅从.predict中提取或返回边界值 MRE 将熊猫作为pd导入 将numpy作为np导入 从sklearn.dataset导入加载 从sklearn.neighbors导入KNeighborsClassifier 导入seaborn作为sns 将matplotlib.pyplot作为plt导入 从matplotlib.colors导入ListedColormap #准备数据 iris=加载_iris() X=iris.data y=iris.target df=pd.DataFrame(X,columns=iris.feature\u名称) df['label']=y 物种地图=dict(zip(范围(3),鸢尾。目标名称)) df['species']=df.label.map(物种地图) df=df.reindex([‘萼片长度(cm)’,‘萼片宽度(cm)’,‘花瓣长度(cm)’,‘花瓣宽度(cm)’,‘品种’,‘标签’],轴=1) #实例化模型 knn=Kneighbors分类器(n_=6) #预测“花瓣长度(cm)”和“花瓣宽度(cm)” knn.fit(测向iloc[:,2:4],测向标签) h=.02#网格中的步长 #为等高线图创建颜色贴图 cmap_light=ListedColormap(列表(sns.color_调色板('pastel',n_colors=3))) #绘制决策边界。 #为此,我们将为网格中的每个点[x_min,x_max]x[y_min,y_max]指定一种颜色。 x_min,x_max=df['petal length(cm)]。min()-1,df['petal length(cm)]。max()+1 y_min,y_max=df['花瓣宽度(cm)]。min()-1,df['花瓣宽度(cm)]。max()+1 xx,yy=np.meshgrid(np.arange(x_min,x_max,h),np.arange(y_min,y_max,h)) Z=knn.predict(np.c_uuxx.ravel(),yy.ravel())。重塑(xx.shape) #创建绘图 图,ax=plt.子批次() #添加数据点 sns.散点图(数据=df,x='花瓣长度(厘米)',y='花瓣宽度(厘米)',色调='物种',ax=ax,边缘颜色='k') #在地图上添加决策边界计数 最大轮廓f(xx,yy,Z,cmap=cmap_光,α=0.4) #传奇 lgd=plt.图例(bbox\u至\u锚定=(1.05,1),位置=左上角') plt.show() 结果图,python,numpy,matplotlib,scikit-learn,knn,Python,Numpy,Matplotlib,Scikit Learn,Knn,期望图 不是颜色或样式,只是它只有决策边界和数据点 资源 所以这个问题不能回答问题 这显示了如何在不填充绘图的情况下绘制决策边界,但没有一个答案显示了如何提取决策边界值。 plt.轮廓(xx,yy,Z,cmap=plt.cm.成对) 自我回答 我已经提供了一个解决方案,但我不确定这是否是最好的解决方案。我当然愿意接受其他选择 也就是说,我不想要一个在tourtf或pcolormesh绘图中着色的解决方案 最好的解决方案将简洁地只提取决策边界值 这是我提出的一
- 不是颜色或样式,只是它只有决策边界和数据点
-
- 这显示了如何在不填充绘图的情况下绘制决策边界,但没有一个答案显示了如何提取决策边界值。
plt.轮廓(xx,yy,Z,cmap=plt.cm.成对)
- 这显示了如何在不填充绘图的情况下绘制决策边界,但没有一个答案显示了如何提取决策边界值。
- 我已经提供了一个解决方案,但我不确定这是否是最好的解决方案。我当然愿意接受其他选择
- 也就是说,我不想要一个在
或tourtf
绘图中着色的解决方案pcolormesh
- 最好的解决方案将简洁地只提取决策边界值
- 这是我提出的一个解决方案,它沿
的两个轴使用Z
结果。这个想法是,每当结果发生变化时,这就是一个决策边界。.predict
- 使用
从自身减去.diff
,移位1Z
- 使用
np.diff(Z)!=0
- 使用
从mask
和xx
yy
- 使用
- 使用OP中的现有代码
#使用diff创建遮罩
遮罩=np.diff(Z,轴=1)!=0
mask2=np.diff(Z,轴=0)!=0
#在xx和yy上涂上口罩
xd=np.concatenate((xx[:,1:[mask],xx[1:,:][mask2]))
yd=np.concatenate((yy[:,1:[mask],yy[1:,:][mask2]))
#仅绘制决策边界
图,ax=plt.子批次()
散点图(x=xd,y=yd,color='k',edgecolor='k',s=5,ax=ax,label='decision boundary')
plt.show()
fig,ax=plt.subplot()
sns.散点图(数据=df,x='花瓣长度(厘米)',y='花瓣宽度(厘米)',色调='物种',ax=ax,边缘颜色='k')
散点图(x=xd,y=yd,color='k',edgecolor='k',s=5,ax=ax,label='decision boundary')
lgd=plt.图例(bbox\u至\u锚定=(1.05,1),位置=左上角')
xd
和yd
正确覆盖plt.contourf