《机器学习实战(Scala实现)》(二)——k-邻近算法
来源:互联网 发布:活性炭吸附甲醛 知乎 编辑:程序博客网 时间:2024/04/30 02:16
算法流程
1.计算中的set中每一个点与Xt的距离。
2.按距离增序排。
3.选择距离最小的前k个点。
4.确定前k个点所在的label
的出现频率。
5.返回频率最高的label
作为测试的结果。
实现
python
# -*- coding: utf-8 -*- '''Created on 2017年3月18日@author: soso'''from numpy import *import operatordef createDataSet(): group = array([[1.0, 1.1], [1.0, 1.0], [0, 0], [0, 0.1]]) labels = ['A', 'A', 'B', 'B'] return group, labelsdef classify0(inX, dataSet, labels, k): dataSetSize = dataSet.shape[0] # 函数形式: tile(A,rep) # 功能:重复A的各个维度 # 参数类型: # - A: Array类的都可以 # - rep:A沿着各个维度重复的次数 diffMat = tile(inX, (dataSetSize, 1)) - dataSet sqDiffMat = diffMat ** 2 # 当加入axis=1以后就是将一个矩阵的每一行向量相加 sqDistances = sqDiffMat.sum(axis=1) distance = sqDistances * 0.5 # argsort函数返回的是数组值从小到大的索引值 sortedDistIndicies = distance.argsort() classCount = {} for i in range(k): votelabel = labels[sortedDistIndicies[i]] classCount[votelabel] = classCount.get(votelabel, 0) + 1 sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True) return sortedClassCount[0][0]
Scala
import scala.collection.mutable.Mapobject kNN { def getGroup(): Array[Array[Double]] = { return Array(Array(1.0, 1.1), Array(1.0, 1.0), Array(0, 0), Array(0, 0.1)) } def getLabels(): Array[Char] = { return Array('A', 'A', 'B', 'B') } def classify0(inX: Array[Double], dataSet: Array[Array[Double]], labels: Array[Char], k: Int): Char = { val dataSetSize = dataSet.length val sortedDisIndicies = dataSet.map { x => val v1 = x(0) - inX(0) val v2 = x(1) - inX(1) v1 * v1 + v2 * v2 }.zipWithIndex.sortBy(f => f._1).map(f => f._2) var classsCount: Map[Char, Int] = Map.empty for (i <- 0 to k - 1) { val voteIlabel = labels(sortedDisIndicies(i)) classsCount(voteIlabel) = classsCount.getOrElse(voteIlabel, 0) + 1 } classsCount.toArray.sortBy(f => -f._2).head._1 } def main(args: Array[String]) { println(classify0(Array(0, 0), getGroup(), getLabels(), 3)) }}
1 0
- 《机器学习实战(Scala实现)》(二)——k-邻近算法
- 机器学习实战之——KNN k-邻近算法
- 机器学习实战——k-邻近算法
- 机器学习实战笔记(k邻近算法)
- 机器学习实战笔记(二):K邻近算法
- 【机器学习实战】K-邻近算法
- 机器学习实战之K-邻近算法
- 机器学习与深度学习(二) k最邻近分类算法 (K-Nearest Neighbor) KNN
- k-邻近算法(二)
- 机器学习算法——K邻近算法
- 机器学习——最邻近规则分类(K Nearest Neighbor)KNN算法
- 机器学习——最邻近规则分类(K Nearest Neighbor)KNN算法的应用
- 【机器学习——K最邻近算法】
- 机器学习——k邻近算法测试
- 机器学习——k邻近算法的数据解析
- [机器学习]k-邻近算法
- Python机器学习实战<三>:k-邻近算法
- 机器学习算法及代码实现--K邻近算法
- 使用docker时出现wlan网络适配器驱动程序出现问题
- mybatis在xml文件中处理大于号小于号的方法
- Eclipse 快捷键返回值
- 数据压缩原理与应用 实验一 彩色空间转换(YUVtoRGB)
- 命令行收发MAIL
- 《机器学习实战(Scala实现)》(二)——k-邻近算法
- 在Git官网上学习基本的Git指令
- 九度OJ-题目1048 判断三角形类型
- Spark RDD Actions&Transformations
- 获取当前时间的时间戳
- Removal Timing Check & Recovery Timing Check
- 使用css画出一个三角形
- GMP和NTL库安装教程
- Linux sqlite3 基本命令