基于meshgrid进行knn模型分类边界可视化

meshgrid方法

xx,yy = numpy.meshgrid(x,y)

meshgrid函数就是用两个坐标轴上的点在平面上画网格(当然这里传入的参数是两个的时候),本质上是用x和y画出一系列坐标为(x,y)的组合的二维坐标点
(xx,yy)就是组合的坐标,是通过行扩张和列扩张来完成的

arange方法

numpy.arange(start, stop, step, dtype = None)

在给定间隔内返回均匀间隔的值在半开区间 [开始,停止)内生成(换句话说,包括开始但不包括停止的区间),返回的是 ndarray 。

ravel和np.c_,np.r_方法

x_range = np.c_[xx.ravel(),yy.ravel()]

平铺后,此时X_range[xx,yy]就是x和y所对应的二维组合数据,ravel()方法将数组维度拉成一维数组,用于将矩阵向量化。

np.r_是按列连接两个矩阵,就是把两矩阵上下相加,要求列数相等。

np.c_是按行连接两个矩阵,就是把两矩阵左右相加,要求行数相等。

筛选只能用训练对应的标签来筛选,所以要让模型对x_range进行预测

y_range_predict = knn_10.predict(x_range)

为什么要用x_range,因为点更多,更方便描绘图像,原数据集画连线图容易因为点太离散导致图形不连贯,视觉效果不好。得到x_range之后要用模型对其预测得到对应标签。

如何改变文本的样式

fig1= plt.figure(figsize=(10,10))
knn_bad = plt
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
KNN(k-最近邻)是一种常用的机器学习算法。它是一种基于实例的学习或非泛化学习,可以用于分类和回归问题。KNN模型通过计算实例之间的距离,找到最近的k个邻居,并根据这些邻居的标签来预测新样本的标签。 关于KNN模型可视化,可以使用Python中的matplotlib库进行绘制。具体步骤如下: 1.准备数据 首先,我们需要准备一些数据来演示KNN模型可视化效果。我们可以使用sklearn库中的make_blobs函数生成随机数据: ```python from sklearn.datasets import make_blobs X, y = make_blobs(n_samples=100, centers=3, random_state=42) ``` 其中,X是数据集的特征矩阵,y是数据集的标签。 2.训练模型 接下来,我们需要使用KNN模型对数据进行分类。我们可以使用sklearn库中的KNeighborsClassifier类来实现: ```python from sklearn.neighbors import KNeighborsClassifier knn = KNeighborsClassifier(n_neighbors=3) knn.fit(X, y) ``` 其中,n_neighbors是KNN模型中的k值。 3.绘制决策边界 最后,我们可以使用matplotlib库将KNN模型的决策边界可视化。具体步骤如下: ```python import numpy as np import matplotlib.pyplot as plt # 生成网格数据 x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1 y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1 xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.1), np.arange(y_min, y_max, 0.1)) Z = knn.predict(np.c_[xx.ravel(), yy.ravel()]) Z = Z.reshape(xx.shape) # 绘制决策边界和数据点 plt.contourf(xx, yy, Z, alpha=0.4) plt.scatter(X[:, 0], X[:, 1], c=y, s=20, edgecolor='k') plt.title('KNN Model Visualization') plt.xlabel('Feature 1') plt.ylabel('Feature 2') plt.show() ``` 其中,np.meshgrid函数用于生成网格数据,np.c_函数用于按列连接两个矩阵。contourf函数用于绘制决策边界,scatter函数用于绘制数据点。 运行上述代码,即可得到KNN模型可视化结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值