import scala.io.Source
import scala.collection.mutable.ArrayBuffer
import org.apache.spark.ml.feature.LabeledPoint
import org.apache.spark.ml.feature.LabeledPoint
import org.apache.spark.ml.linalg.Vectors
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
/**
*数据来源为:iris数据集
*数据集链接地址分享给大家,里面有很多常见的机器学习数据源
*http://archive.ics.uci.edu/ml/datasets/Iris
*/
object knn {
def main(args: Array[String]): Unit = {
val conf=new SparkConf().setMaster("local").setAppName("ML")
val sc=new SparkContext(conf)
val fileName = "C:/Users/Desktop/MLData/knntest.txt"
val testdata=sc.textFile(fileName).map { line =>
val strArr=line.split(',')
Array(strArr(0),strArr(1),strArr(2),strArr(3))
}.collect()
val fileName2 = "C:/Users/Desktop/MLData/knntrain.txt"
val traindata=sc.textFile(fileName2).map { line =>
val strArr=line.split(',')
Array(strArr(4),strArr(0),strArr(1),strArr(2),strArr(3))
}.collect()
val knumber=3
val res=ArrayBuffer[String]()
for(tr<-testdata){
res.append(k(tr, traindata, knumber, sc))
}
res.foreach { x => println(x) }
}
/**
* trainData传入数据格式:label,5.1,3.5,1.4,0.2
* testData传入数据格式: 5.1,3.5,1.4,0.2
*/
def k(testData:Array[String],trainData:Array[Array[String]],knumber:Int,sc:SparkContext):String={
//遍历testData,计算每个点与trainData的距离,升序排序,取前k个的label作为改testData最终的label
val tdArr=ArrayBuffer[Double]()
for(i<-0 until testData.length) tdArr.append(testData(i).toDouble)
val distanceArr=ArrayBuffer[LabeledPoint]()
//计算每个点与trainData的距离,升序排序
for(nd<-trainData){
val ndArr=ArrayBuffer[Double]()
for(j<-1 until nd.length) ndArr.append(nd(j).toDouble)
distanceArr.append(LabeledPoint(nd(0).toDouble,Vectors.dense(caldis(tdArr.toArray, ndArr.toArray))))
}
val newdistanceArr=distanceArr.sortWith{case(x1,x2)=>(x1.features(0) < x2.features(0))}
val resultArr=newdistanceArr.take(knumber)
val resultlabel=ArrayBuffer[String]()
for(res<-resultArr) resultlabel.append(res.label.toString())
//得到最终的label排序,取第一个为最终的testData label即可
val rs=sc.parallelize(resultlabel).map { x =>(x,1)}.reduceByKey(_+_).map{case(k,v)=>(v,k)}.sortByKey().collect()(0)._2
rs
}
/**
* @param x1 点1的n维坐标
* @param x2 点2的n维坐标
* @return 点间的欧式距离
*/
def caldis(x1:Array[Double],x2:Array[Double]):Double={
var dis=0.0
for(i<-0 until x1.length) dis +=(x1(i)-x2(i))*(x1(i)-x2(i))
val odis=Math.sqrt(dis)
odis
}
}
相关推荐
实训二、基于K邻近算法检测Rootkit
摘要:本实验采用KDD99数据集,运用KNN算法检测基于telnet连接的Rootkit恶意行为。实验流程包括:1)从NSL-KDD数据集中筛选Rootkit攻击和正常telnet协议记录;2)进行特征工程处理;3)构建并训练KNN模型;4)评估模型性能。结果表明,KNN算法能有效检测Rootkit,但其性能依赖于数据质量和特征选择。通过实验掌握了KNN算法检测Rootkit的完整流程,包括特征筛选、向量化、交叉验证及结果分析等关键步骤,为网络安全入侵检测提供了可行方法。
[UpdateRequest] doc doesn‘t support values of type: SringUpdateRequest] doc doesn‘t support
使用http请求局部更新elasticsearch中文档时,最外层需要使用do c包装一层,被包装的实体先不要转换成string类型,不然后续再转换成string类型会多几个换行符,再操作elasticsearch会出现这个错误
头歌KNN算法详解
可以看出宅男和文艺青年的比分是 2:2,那么可以尝试将属于宅男的 2 个样本与我的总距离和属于文艺青年的 2 个样本与我的总距离进行比较。在这个例子中预测结果为文艺青年(宅男的总距离为 4.2+9.5,文艺青年的总距离为 7.7+5.8)。根据提示,在右侧编辑器的 begin-end 区域补充代码,完成 kNNClassifier 类中的 fit 函数与 predict 函数。假设现在有这样的一个样本空间,该样本空间里有宅男和文艺青年这两个类别,其中红圈表示宅男,绿圈表示文艺青年。
KNN算法实现问题记录
执行排序操作会使用到operator运算符模块,因此需要在开始的时候导入 1import kNN。报错:only 2 non-keyword arguments accepted。 问题所在:貌似是粗心少写了两个中括号 本来是array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]]),结果少写了最外面的两个中括号 2,shape函数是numpy.co
机器学习(一) K-近邻算法(KNN)
K-近邻算法(KNN)详解机器学习(一):K-近邻算法(KNN)概述K-近邻算法的具体应用K-近邻算法的具体代码使用K-邻近算法实现手写识别系统插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 机器学习(一): K-近邻算法(KNN)概述 K-近邻算法采用测量不同特征值之间的距离方法进行分类
Java判断地图坐标(经度,纬度)是否在多边形区域或圆形区域内
欢迎光临我的博客查看最新文章:在地图上,可以使用经纬度确定一个位置,如上海体育场(121.449391,31.188228),如果知道了2个地点的经纬度,我们就能在地图上找到其位置及2点的距离,百度地图或高德地图提供了相应的服务;如果将多个坐标点连成多边形区域,如何判断某个坐标点是否在多边形区域内,如下工具类。
[term] query does not support array of values 应该用terms
select * from table where t_id in (1,2,3,4) 对应es查询语句 !!!注意,是terms !!! 不是term GET /index/type/_search { "query": { "terms": { "state": [ 1,2,3,4 ] } } } ...
STM32实战:ADXL345传感器驱动与数据采集全解析(IIC/SPI双模式适配)
本文详细解析了STM32驱动ADXL345传感器的全流程,包括IIC和SPI双模式适配、硬件连接、寄存器配置及数据采集处理。通过实战代码示例和常见问题排查指南,帮助开发者快速实现高精度加速度数据采集,适用于运动检测、姿态识别等多种嵌入式应用场景。
Elasticsearch遇到的坑
问题描述: 手机APP端两个用户同时评论一篇文章该篇文章的评论量只增加了1。 &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp; 问题代码: XContentBuilder updateSource = XContentFactory.jsonBuilder().startObject() .field(&amp;amp;amp;amp;amp;amp;amp;amp;am
【比较器仿真】
比较器tran noise、pnoise仿真、噪声仿真、MC失调仿真
英特尔SVS:十亿级向量搜索的硬件优化与LVQ压缩实战
向量搜索作为处理高维嵌入数据的核心技术,其核心原理是通过近似最近邻(ANN)算法在海量数据中快速找到相似项,以解决传统暴力搜索在规模上的瓶颈。这项技术的核心价值在于为推荐系统、图像检索、自然语言处理等AI应用提供高效的相似性匹配能力,尤其在RAG架构中成为连接非结构化数据与大语言模型的关键基础设施。面对十亿级数据带来的内存与算力挑战,局部自适应向量量化(LVQ)等压缩技术通过减少存储开销并保持精度,而硬件层面的深度优化则利用AVX-512等指令集大幅提升计算效率。本文聚焦于英特尔开源的Scalable Ve
机器学习实战 KNN实战
KNN实战1、KNN算法的一般流程1、搜集数据:可以使用任何方法2、准备数据:距离计算所需要的数值,最好是结构化的数据格式3、分析数据:可以使用任何方法4、训练算法:此步骤不适用于KNN算法5、测试算法:计算错误率6、使用算法:首先需求输入样本数据和结构化的输出结果,然后运行KNN算法判定输入数据分别属于哪一个分类,最后应用对计算出的分类执行后续的处理。 学习《机器学习实战》 1、KNN算法的一般...
第一节:Vben Admin 最新 v5.0 (vben5) + Python Flask 快速入门
vben5 快速入门。 Vben Admin 框架新出的版本V5.5.4,而之前的Vben Admin 2.x 目前已存档,仅进行重大问题修复。之前在2.x版本曾经简单完成了一版专栏文章,当时也是收获了一些好评和建议。本次决定在v5 版本基础上再完成一次前后端的搭建。希望大家继续多多支持。项目精简后,再次启动项目,执行 pnpm run dev点击登录,可以看到接口报错,现在前端请求的后端有报错,下一节处理这部分逻辑。
邻近算法 KNN
待完善,预习用 邻近算法 KNN,K-NearestNeighbor 属于数据挖掘-分类技术 分类算法 K最近邻 即:每个样本可以用它最接近的K个邻近值来代表 近邻算法就是将数据集合中的每一个记录进行分类的方法。 基本思想 要判断一个新数据的类别,就看它的邻居。根据新数据的特征得到在相应属性空间中的坐标,看附近的数据都是什么类别。 KNN中的K表示邻居的数量,K=3就是通过最近的3个样本来判断数据类别。 计算距离时,可以用两点间的直线距离(欧氏距离),也可以使用坐标轴距离绝对值的和(曼哈顿距离).
R语言机器学习算法实战系列(十五)随机森林生存预后模型+SHAP值 (Random Survival Forest + SHAP)
本教程运用随机森林生存分析筛选与患者生存状态显著相关特征。该方法借随机森林这一强大机器学习算法,构建多棵决策树并集成结果,以提高生存分析准确性,识别关键生物标志物。接着,利用选定特征构建风险得分,将多个特征转化为单一数值,量化患者风险水平。之后,依据风险得分将患者分为高、低风险亚型,为临床治疗提供个性化指导。最后,通过分析时间依赖的 ROC 曲线评估模型长期预测能力。此曲线计算不同阈值下的真正例率与假正例率,在多个时间点评估,全面展现模型长期稳定性与准确性。。并且增加了SHAP值评估特征重要性
【华为OD机试真题 新系统】959、 水库溃坝填补 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS)
【华为OD机试真题 2025C卷】959、 水库溃坝填补 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2025e卷,od机试,2025E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2025华为od,如何备战华
KNN算法(K近邻算法)
KNN(K-Nearest Neighbor)即K邻近法,是机器学习算法中最基础、最简单的算法之一。它既能用于分类,也能用于回归。KNN通过测量不同特征值之间的距离来进行分类,用老话说:“人以群分,物以类聚”。KNN 算法是有监督学习中的分类算法,它看起来和另一个机器学习算法 K-means 有点像(K-means 是无监督学习算法),但却是有本质区别的。
YOLOv11改进策略【小目标改进】| Shape-NWD:融合改进,结合Shape-IoU和NWD 更好地适应小目标特性
Bw−wgt2h−hgt2weight2Bweight2w−wgt2h−hgt2其中weight2weight = 2weight2。
K-近邻算法(KNN)
1.定义: k-近邻(KNN,k-NearestNeighbor)算法是一种基本分类与回归方法,我们这里只讨论分类问题中的 k-近邻算法。k-近邻算法的输入为实例的特征向量,对应于特征空间的点;输出为实例的类别,可以取多类。k-邻算法假设给定一个训练数据集,其中的实例类别已定。分类时,对新的实例,根据其 k 个最近邻的训练实例的类别,通过多数表决等方式进行预测。因此,k近邻算法不...
大中型超市收银系统(可直接运行)
光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开
NTscan扫描工具
ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。
KNN算法(一) KNN算法原理
一.KNN算法概述 KNN可以说是最简单的分类算法之一,同时,它也是最常用的分类算法之一,注意KNN算法是有监督学习中的分类算法,它看起来和另一个机器学习算法Kmeans有点像(Kmeans是无监督学习算法),但却是有本质区别的。那么什么是KNN算法呢,接下来我们就来介绍介绍吧。 二.KNN算法介绍 KNN的全称是K Nearest Neighbors,意思是K个最近的邻居,从这个名字我们就能看出一些KNN算法的蛛丝马迹了。K个最近邻居,毫无疑问,K的取值肯定是至关重要的。那么最近的邻居又是怎么回事呢
Statistics and Machine Learning Toolbox
Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具
近邻算法详解
它基于实例的学习,或者说是“懒惰学习”,即它并不显式地训练出一个模型,而是将所有的训练数据存储在内存中,当新的数据需要分类时,它才会根据某种度量方式(如欧氏距离)找出与新数据最相近的K个训练数据,然后根据这K个“邻居”的类别来预测新数据的类别。例如,可以根据用户的历史行为数据计算用户之间的相似度,然后利用KNN算法找到与目标用户最相似的其他用户,并推荐他们喜欢的物品给目标用户。例如,可以通过训练多个具有不同K值的KNN模型,并将它们的预测结果进行加权平均或投票来得到最终的分类结果。
android 蓝牙通讯demo
android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。
k近邻算法(KNN)-分类算法
k近邻算法(KNN)-分类算法 1 概念 定义:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。 k-近邻算法采用测量不同特征值之间的距离来进行分类。 2 优缺点 优点:简单,易于理解,易于实现,无需估计参数,无需训练 缺点:懒惰算法,对测试样本分类时的计...
数据挖掘之KNN算法
虽然一下子介绍了很多,但大家肯定还是觉得不明就里,但是不用着急,距离的定义在机器学习中是一个核心概念,在之后的学习中还会经常遇到它。在这里介绍距离的目的一个是为了让大家使用k近邻算法时,如果发现效果不太好时,可以通过使用不同的距离定义来尝试改进算法的性能。在信息论中,两个等长字符串之间的汉明距离是两个字符串对应位置的不同字符的个数。但实际上这里所说的距离与我们日常生活中所意识到的距离是不同的。算法的另一个核心参数是距离函数的选择。假设标准化后的特征为z,标准化之前的特征为x,特征的均值为μ,方差为s。
机器学习——KNN算法实战
本文主要介绍博主学习完机器学习的第一个算法——KNN之后的实验和心得,主要包括对鸢尾花数据集进行分析和运用KNN算法划分鸢尾花种类的过程。因为是第一次实验,所以是根据《机器学习实战》这本书上的代码实现过程作为参考,并没有调用sklearn库来直接运用KNN算法模型。这是第一次机器学习的实验,有很多机器学习的概念都不是很清楚,对Python也不是特别熟悉,所以整个过程还是比较困难的,但是算是自己将整个代码敲下来了,也学到了很多,希望下次实验能更加得心应手,能学到更多机器学习的知识,并且增强自己的动手实践能力。
K近邻算法学习(KNN)
KNN算法学习,从概念到真正入手
KNN邻近算法
邻近算法,或者说K最近邻(KNN,K-NearestNeighbor)分类算法 K最近邻,就是K个最近的邻居的意思,说的是每个样本都可以用它最接近的K个邻居来代表 KNN算法的核心思想是如果一个样本在特征空间中的K的最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待样本所属的类别。KNN在
1475



被折叠的 条评论
为什么被折叠?



