当前位置: 首页 > news >正文

网站备案信息登记表如何给自己网站做外链

网站备案信息登记表,如何给自己网站做外链,莱芜市在线论坛话题,有趣网站建设无聊K-Nearest Neighbors (KNN) 是一种常见的机器学习算法#xff0c;广泛应用于分类和回归问题。KNN是一种基于实例的学习方法#xff0c;它利用训练数据集的实例来进行分类或回归预测。在KNN中#xff0c;预测的结果依赖于距离度量函数计算出的最近邻实例的标签或值。下面我们…K-Nearest Neighbors (KNN) 是一种常见的机器学习算法广泛应用于分类和回归问题。KNN是一种基于实例的学习方法它利用训练数据集的实例来进行分类或回归预测。在KNN中预测的结果依赖于距离度量函数计算出的最近邻实例的标签或值。下面我们将详细探讨KNN的工作原理并通过代码和示例进一步说明其应用。 KNN算法的原理 训练阶段 KNN 是一种 懒惰学习算法即在训练阶段算法并不建立显式的模型只是简单地存储所有的训练数据。它不会对数据进行任何处理直到遇到测试数据时才会进行计算。预测阶段 对于每个待分类或待回归的样本KNN 计算该样本与训练集中所有样本的距离。常用的距离度量包括 欧氏距离Euclidean Distance、曼哈顿距离Manhattan Distance、切比雪夫距离Chebyshev Distance 等。然后选择 K 个最近的邻居根据这些邻居的信息来做出预测。 分类任务通过多数投票原则选择最常见的类别作为预测结果。回归任务通过取 K 个邻居的平均值来预测目标值。 KNN的工作流程 选择K值选择一个适当的 K 值即选择最近邻的数量。K的值过小可能会导致过拟合过大可能会导致欠拟合。计算距离选择适当的距离度量方法最常用的是 欧氏距离。预测 分类任务通过投票选出 K 个邻居中出现最多的类别作为预测结果。回归任务计算 K 个邻居的均值作为预测结果。 KNN的优势与劣势 优势 简单易懂KNN是一种直观且简单的算法容易实现。不需要训练阶段KNN没有显式的训练过程直接将数据存储并用于预测。能够处理多类别分类问题KNN算法可以同时处理多个类别的数据。自适应性强由于KNN是基于实例的不需要构建复杂的模型可以灵活地适应不同类型的学习任务。 劣势 计算开销大KNN算法在测试阶段需要计算每个测试样本与所有训练样本的距离因此计算量较大尤其在数据集较大的情况下。内存开销大由于KNN需要存储所有训练数据内存消耗较高。对异常值敏感KNN对数据中的异常值较为敏感异常值可能会严重影响模型的性能。高维数据问题KNN在高维空间中表现较差这被称为“维度灾难”Curse of Dimensionality。随着维度的增加样本之间的距离趋于相等使得KNN的效果下降。 如何选择K值 选择K值的大小对于模型的表现至关重要。一般来说较小的K值可能导致模型对训练数据中的噪声过于敏感而较大的K值则可能导致模型的预测结果过于平滑忽略了局部数据的特征。通常可以通过交叉验证来选择最优的K值。 距离度量方法 在KNN中选择合适的距离度量非常重要。以下是几种常见的距离度量方法 欧氏距离Euclidean Distance 欧氏距离是最常见的距离度量方法适用于连续变量。 其中x和 y 是两个向量xi 和 yi是它们的第 i 个维度。 曼哈顿距离Manhattan Distance 曼哈顿距离计算的是两个点在所有维度上差值的绝对值之和。 切比雪夫距离Chebyshev Distance 切比雪夫距离计算的是两个点在各维度上差值的最大值。 KNN算法的代码实现 下面是一个简单的KNN算法实现使用了 欧氏距离 作为度量标准。 示例使用Python实现KNN算法 import numpy as np from collections import Counter# 计算欧氏距离 def euclidean_distance(x1, x2):return np.sqrt(np.sum((x1 - x2)**2))# KNN算法实现 class KNN:def __init__(self, k3):self.k k # 设置 K 值def fit(self, X_train, y_train):self.X_train X_trainself.y_train y_traindef predict(self, X_test):predictions [self._predict(x) for x in X_test]return np.array(predictions)def _predict(self, x):# 计算测试点与训练数据的距离distances [euclidean_distance(x, x_train) for x_train in self.X_train]# 按照距离排序并选择最近的K个点k_indices np.argsort(distances)[:self.k]k_nearest_labels [self.y_train[i] for i in k_indices]# 返回出现次数最多的标签most_common Counter(k_nearest_labels).most_common(1)return most_common[0][0]# 示例数据 X_train np.array([[1, 2], [2, 3], [3, 4], [6, 7], [7, 8], [8, 9]]) # 训练数据 y_train np.array([0, 0, 0, 1, 1, 1]) # 标签X_test np.array([[2, 2], [7, 7]]) # 测试数据# 创建并训练KNN模型 knn KNN(k3) knn.fit(X_train, y_train)# 预测 predictions knn.predict(X_test) print(fPredictions: {predictions})代码解释 欧氏距离计算euclidean_distance() 计算两个点之间的欧氏距离。KNN类 fit()用于存储训练数据。predict()对每个测试样本进行预测。_predict()对单个样本根据最近的 K 个邻居进行预测。示例数据X_train 和 y_train 分别是训练数据和标签X_test 是需要预测的测试数据。 运行结果 Predictions: [0 1]KNN算法的应用场景 分类问题KNN在文本分类、图像分类、医疗诊断等领域有广泛应用。例如根据用户的历史行为预测用户是否会点击广告或者根据病人的症状预测是否患有某种疾病。 回归问题KNN也可用于回归问题如房价预测、股票市场预测等。通过选择 K 个最相似的样本计算这些样本的目标值的平均值来做出预测。 KNN的优缺点 优点 简单易理解KNN算法非常简单易于理解和实现。无需训练KNN是懒惰学习算法不需要显式的训练过程。适应性强KNN可以轻松地适应多类别和多维度的数据。 缺点 计算复杂度高在测试阶段KNN需要计算每个测试样本与所有训练样本的距离计算量较大尤其是在大规模数据集上。内存消耗大KNN算法需要存储所有的训练数据内存消耗较大。对噪声敏感KNN对于数据中的噪声较为敏感特别是在高维数据中。不适合高维数据在高维空间中距离度量变得不再有效KNN的效果显著下降。 创建自己的 KNN 可视化图 你可以使用 matplotlib 和 sklearn 来生成一个简单的 KNN 可视化图。下面是一个 Python 代码示例 import numpy as np from sklearn.datasets import make_classification from sklearn.neighbors import KNeighborsClassifier import matplotlib.pyplot as plt# 生成数据集 X, y make_classification(n_samples100, n_features5, n_informative2, random_state42)# 创建 KNN 分类器并进行训练 knn KNeighborsClassifier(n_neighbors3) knn.fit(X, y)# 创建一个用于预测的网格要确保特征数与训练时一致 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))# 现在我们需要确保输入的数据有 5 个特征 # 创建一个数据集注意这里我们需要保持与训练集相同的特征数量 grid_points np.c_[xx.ravel(), yy.ravel(), np.zeros((xx.ravel().shape[0], 3))]# 使用 KNN 模型进行预测 Z knn.predict(grid_points)# 绘制决策边界 Z Z.reshape(xx.shape) plt.contourf(xx, yy, Z, alpha0.8) plt.scatter(X[:, 0], X[:, 1], cy, edgecolorsk, markero, s50) plt.show()生成图的过程是基于 KNNK-Nearest Neighbors分类器的决策边界可视化。 以下是整个图生成过程的详细解释 1. 生成数据集 我们使用 make_classification 函数生成一个人工数据集这个数据集有 100 个样本和 5 个特征其中 2 个特征是有信息量的即能帮助分类其余的特征是冗余或无关的。数据集的目标是模拟实际分类任务中的数据。 X, y make_classification(n_samples100, n_features5, n_informative2, random_state42)X: 是特征矩阵包含 100 个样本每个样本有 5 个特征。y: 是每个样本对应的标签分类结果。 2. 训练 KNN 分类器 我们用生成的数据训练一个 KNN 分类器 knn KNeighborsClassifier(n_neighbors3) knn.fit(X, y)KNeighborsClassifier(n_neighbors3)创建一个 KNN 分类器使用 3 个邻居进行分类。knn.fit(X, y)使用 X 和 y 进行模型训练。 3. 创建网格用于预测 为了展示 KNN 分类器的决策边界我们需要生成一个包含所有可能输入点的网格。网格点的数量决定了我们图像的分辨率网格是通过对特征空间进行划分得到的。 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))xx 和 yy 是通过 np.meshgrid 生成的网格的坐标。np.arange(x_min, x_max, 0.1) 会创建一个从 x_min 到 x_max 的数值序列步长为 0.1同理 np.arange(y_min, y_max, 0.1) 会创建从 y_min 到 y_max 的数值序列。xx, yy它们的形状分别是 (height, width)代表平面坐标的网格。 4. 确保网格输入特征一致 由于我们训练模型时使用了 5 个特征但网格生成时只有 2 个特征因此我们需要填充额外的 3 个特征以确保输入特征的维度和训练时一致。 grid_points np.c_[xx.ravel(), yy.ravel(), np.zeros((xx.ravel().shape[0], 3))]np.c_[] 是一个方便的功能用于将数组按列连接。xx.ravel() 和 yy.ravel() 将网格坐标转换为一维数组然后我们通过 np.zeros 向每个点添加额外的 3 个特征这些特征是 0不会影响预测的结果。 5. 进行预测 现在网格上的每一个点都包含了 5 个特征我们可以将这些点输入到训练好的 KNN 模型中进行预测 Z knn.predict(grid_points)grid_points 是形状为 (N, 5) 的数组N 是网格点的总数例如3000 个点。knn.predict(grid_points) 将输出每个点的分类标签。 6. 绘制决策边界 接下来我们可以绘制出 KNN 分类器的决策边界。这是通过对 xx 和 yy 进行 Z.reshape(xx.shape) 转换将预测的分类结果与网格坐标对应起来然后用 plt.contourf() 绘制填充的等高线来展示。 Z Z.reshape(xx.shape) plt.contourf(xx, yy, Z, alpha0.8)Z.reshape(xx.shape) 将 Z 的形状调整为与 xx 相同的形状确保与网格坐标对齐。plt.contourf() 用于绘制决策边界的填充等高线图。alpha0.8 设置透明度使得决策区域的颜色更加柔和。 7. 绘制数据点 最后我们用 plt.scatter() 绘制数据点显示训练数据的分布。X[:, 0] 和 X[:, 1] 分别是数据的前两个特征用于二维图中显示 plt.scatter(X[:, 0], X[:, 1], cy, edgecolorsk, markero, s50)X[:, 0] 和 X[:, 1] 是数据的前两个特征我们只用前两个特征来显示图。cy 用于根据标签 y 给每个点上色。edgecolorsk 用于设置点的边缘颜色为黑色。 8. 显示图像 最终使用 plt.show() 来显示绘制的图像 plt.show()总结 决策边界通过网格点进行预测我们可以看到不同类别的决策边界。这些边界代表了分类器如何将输入空间划分为不同的类。数据点分布图中的散点表示了数据点的位置颜色代表不同的类别。分类器的影响不同的 K 值和距离度量会影响决策边界的形状从而影响分类的效果。 总结 KNN是一个简单但强大的机器学习算法适用于分类和回归任务。通过选择合适的K值和距离度 量方式可以获得很好的性能。然而KNN的计算和内存开销较大尤其是在数据集较大的时候因此在实际应用中需要注意其优缺点并根据具体问题进行调整和优化。
http://www.hkea.cn/news/14522578/

相关文章:

  • 济南建设集团招聘信息网站家居网站建设公司排名
  • 口碑好的秦皇岛网站建设哪家好百度教育app
  • 网站开发培训少儿怎么样做好网站建设
  • 网站界面设计缺点推广神器app
  • 网站架构策划书用ps做美食网站
  • 山西网络网站建设销售公司无锡网站建设工作室
  • 黄骗免费网站网站设计方面有什么公司
  • 贵州 网站建设网站开发和商城的科目
  • 宝安网站建设哪家好外贸网站优化谷歌关键词排名
  • 网站权限设计方案宝塔系统搭建wordpress
  • wordpress网站速度慢wdcp网站迁移
  • 一级a做爰片视频免费观看网站不知此网站枉做男人的网站
  • 唐山网站建设哪家优惠成都市住房和城乡建设局电话
  • 做淘宝站外推广网站dw个人网站设计模板免费
  • 免费行情网站在线phicomm怎么做网站
  • 山东做公司网站wordpress主题图标
  • 涉县手机网站建设网站建设需要多少天
  • php成品网站北京中联建设集团官网网站
  • 深圳定制开发网站做外贸电商网站
  • 炫酷的企业网站模板百度网站的域名是什么
  • 开发公司名称起名大全郑州网站的优化
  • 博客网站做外贸可以吗江门网站制作报价
  • 北京建设工程主管部门网站wordpress站内搜索框
  • 深圳网站建设服务商哪些好?WordPress文章过滤
  • 建设银行南通通州支行网站网站源码模块
  • 做网页一般多少钱贵州整站优化seo平台
  • 开鲁网站seo站长工具建立企业网站的形式有哪几种
  • 政务信息网站建设制度静态网页设计实训报告总结
  • 企业设计网站建设网站广告图做多大
  • 石景山重庆网站建设wordpress设置访问密码忘记