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

php网站开发 pdfseo导航

php网站开发 pdf,seo导航,wordpress邮件有%3c%3e,网站优化关键词公司KNN(K-近邻),全称K-Nearest Neighbors,是一种常用的分类算法。 KNN算法的历史可以追溯到1957年,当时Cover和Hart提出了“最近邻分类”的概念。 但是,这个算法真正得到广泛认知和应用是在1992年,…

KNN(K-近邻),全称K-Nearest Neighbors,是一种常用的分类算法
KNN算法的历史可以追溯到1957年,当时Cover和Hart提出了“最近邻分类”的概念。
但是,这个算法真正得到广泛认知和应用是在1992年,由Altman发表的一篇名为“K-Nearest Neighbors”的文章。

近年来,随着大数据和机器学习的快速发展,KNN算法因其简单且表现优秀,被广泛应用于各种数据分类问题中。

1. 算法概述

KNN算法的基本原理是:在特征空间中,如果一个样本的最接近的k个邻居中大多数属于某一个类别,则该样本也属于这个类别。
换句话说,KNN算法假设类别是由其邻居决定的。

那么,KNN算法判断数据是否相似是关键,也就是数据之间的距离是如何计算的呢?
最常用的距离计算公式有:

  1. 曼哈顿距离:L1(xi,xj)=∑nl=1|x(l)i−x(l)j|L1(xi,xj)=∑l=1n|xi(l)−xj(l)|
  2. 欧氏距离:L2(xi,xj)=(∑nl=1|x(l)i−x(l)j|2)12L2(xi,xj)=(∑l=1n|xi(l)−xj(l)|2)12
  3. 闵可夫斯基距离:Lp(xi,xj)=(∑nl=1|x(l)i−x(l)j|2)1pLp(xi,xj)=(∑l=1n|xi(l)−xj(l)|2)1p
  4. 等等

使用不同的距离,就会得到不同的分类效果。

2. 创建样本数据

这次用scikit-learn中的样本生成器make_classification来生成分类用的样本数据。

import matplotlib.pyplot as plt
from sklearn.datasets import make_classification# 分类数据的样本生成器
X, y = make_classification(n_samples=1000, n_classes=4, n_clusters_per_class=1)
plt.scatter(X[:, 0], X[:, 1], marker="o", c=y, s=25)plt.show()

image.png


关于样本生成器的详细内容,请参考:TODO

3. 模型训练

首先,分割训练集测试集

from sklearn.model_selection import train_test_split# 分割训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

这次按照8:2的比例来划分训练集和测试集。

然后用scikit-learn中的KNeighborsClassifier模型来训练:

from sklearn.neighbors import KNeighborsClassifier# 定义KNN模型(设置4个分类,因为样本数据是4个分类)
reg = KNeighborsClassifier(n_neighbors=4)# 训练模型
reg.fit(X_train, y_train)# 在测试集上进行预测
y_pred = reg.predict(X_test)

KNeighborsClassifier的主要参数包括:

  1. n_neighbors:这是kNN算法中的k值,即选择最近的k个点。默认值为5。
  2. weights:此参数默认为'uniform',也可以设置为'distance',或者用户自定义的函数。其中,'uniform'表示所有的邻近点的权重都是相等的,'distance'表示距离近的点比距离远的点的影响大。
  3. algorithm:此参数默认为'auto',也可以设置为'auto','ball_tree','kd_tree',或'brute'。这决定了在计算最近邻时使用的算法。
  4. leaf_size:此参数默认为30,也可以设置为一个整数,用于指定传递给构建叶子节点时使用的最小样本数。
  5. p:此参数默认为2,也可以设置为一个值<=1。这决定了在计算Minkowski距离度量时使用的p值。
  6. metric:此参数默认为'minkowski',也可以设置为'euclidean','manhattan'等。这决定了距离度量方法。
  7. metric_params:此参数默认为None,也可以是一个字典,包含了额外的关键字参数传递给距离度量函数。
  8. n_jobs:此参数默认为None,也可以是一个大于等于1的整数,表示可用于执行并行计算的CPU数量。

最后验证模型的训练效果:

# 比较测试集中有多少个分类预测正确
correct_pred = np.sum(y_pred == y_test)print("预测正确率:{}%".format(correct_pred/len(y_pred)*100))# 运行结果
预测正确率:68.5%

模型使用了默认的参数,可以看出,模型正确率不高。
感兴趣的同学可以试试调整KNeighborsClassifier的参数,看看是否可以提高模型的预测正确率。

4. 总结

KNN算法被广泛应用于各种不同的应用场景,如图像识别、文本分类、垃圾邮件识别、客户流失预测等。
这些场景的一个共同特点是,需要对一个未知的样本进行快速的分类或预测。

KNN算法主要优势在于:

  1. 简单直观KNN算法的概念简单直观,容易理解和实现。
  2. 适用于小样本数据KNN算法在小样本数据上的表现往往优于其他机器学习算法。
  3. 对数据预处理要求较低KNN算法不需要对数据进行复杂的预处理,例如标准化、归一化等。

不过,KNN算法也有不足之处:

  1. 计算量大:对于大型数据集,KNN算法可能需要大量的存储空间和计算时间,因为需要计算每个样本与所有已知样本的距离。
  2. 选择合适的K值困难K值的选择对结果影响很大,选择不当可能会导致结果的不稳定。
  3. 对噪声数据敏感:如果数据集中存在噪声数据,KNN算法可能会受到较大影响。

 

关注灵活就业新业态,了解更多程序员兼职项目,关注公账号:贤才宝(贤才宝https://www.51xcbw.com) 

http://www.dtcms.com/wzjs/238673.html

相关文章:

  • 网站的风格设计包括哪些内容网站信息组织优化
  • 企业网站建设公司wp博客seo插件
  • 广东网站建设方便怎么制作百度网页
  • 做素材网站服务器广州百度推广排名优化
  • wordpress计数器优化设计电子课本下载
  • 自己建个购物网站网络口碑营销
  • 手机网站内容设计方案关键字搜索
  • 设计好看的美食网站有哪些淘宝关键词排名怎么查
  • 淘宝 客要推广网站怎么做怎么样在百度上免费推广
  • 做磨毛布内销哪个网站比较好互联网销售是做什么的
  • 购买东西网站怎么做网站维护合同
  • 做网站需要具备什么雅虎搜索引擎
  • 关于做网站公司周年大促销制作一个网站需要多少费用
  • 海外网站服务器网址网络推广人员
  • 绍兴网站优化国内十大搜索引擎排名
  • 做百度收录比较好的网站公司网络营销策划书
  • 网站被做跳转怎么办淘宝指数查询入口
  • 网站建设都用哪些软件怎么优化百度关键词
  • wordpress页面栏目搜索引擎优化论文
  • 做网站配什么电脑电脑学校培训
  • 唐山网站建设设计网站统计分析工具
  • 大连网站建设比较好的公司关键词
  • 办公内网网站建设标准seo价格查询公司
  • 深圳网络营销方案站长工具之家seo查询
  • 怎么看一个网站是谁做的我们公司在做网站推广
  • 个人网站备案查询私域流量运营管理
  • 沈阳网站模板外贸海外推广
  • 三亚做网站的公司seo优化网站推广
  • 定制企业网站app推广项目从哪接一手
  • 产品外包装设计网站今日热点新闻事件简介