K分类算法
来源:互联网 发布:2016人工智能论坛 编辑:程序博客网 时间:2024/06/05 06:26
K - Classify
- K - Classify
- K 分类是个什么玩意儿
- K 分类的过程
- K-Classify的Python实现
- K分类到此为止了么
- 归一化过程
- 归一化的Python实现
- K - Classify
K 分类是个什么玩意儿?
很简单,K分类用四个字来概括就是物以类聚,如果要再加四个字的话就是人以群分。
K 分类的过程
导入训练样本集合(这个必须有)。每个样本拥有一个或多个已经确定好的特征并且存在一个确定的标签(Label)。
- K-Classify算法通过完成对训练样本根据标签进行分类的过程建立一个多维坐标系(先这么理解),坐标系的维度就是样本的特征数目。样本集合中的每一个数据都会抽象为坐标系上的一个点。
导入测试样本集合(KNN已经开始啦~~),将样本集合中的每一个数据继续抽象(想象)为多维坐标系中的一个点。
- 对样本集合中的每一个数据,计算其与训练样本中全部数据的距离。此处使用了我们初中时学过的坐标系中两点间的距离公式:
d=(x0−y0)2+(x1−y1)2+(x2−y2)2+...+(xn−yn)2−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−√ - 选择K个(没错,就是K-Classify的K)距离样本数据最近的点,读取它们的标签,根据少数服从多数原则,确定样本数据的标签(Label)。
K-Classify的Python实现
以下是K分类算法的Python代码
import numpy as np#inputMatrix: 输入的测试样本集,dataSet: 测试样本集数据(无标签),labels:测试样本集标签def K_algorithm(inputMatrix, dataSet, labels, k): dataSetSize = dataSet.shape[0] distanceMat = tile(inputMatrix, (dataSetSize, 1)) - dataSet distance = (distanceMat**2.sum(axis = 1))**0.5 distancesI = np.argsort(distance, axis = 0) count = {} for index in range(k): label = labels[distancesI[i]] count[label[0]] = count.get(labels[0], 0)+1 sortedResult = sorted(count.intms(), key = operator.itemgetter(1), reverse = True) return sortedResult[0][0]
K分类到此为止了么?
Absolutely not,虽然现在我们已经有了K分类的结果,但是这个结果并不是最优解,由于K分类的结果基本上取决于那些在数值上较大的特征值,例如:如果一个特征值为年龄,另一个为薪水,那么年龄的值一般来说会比薪水值小很多,也就很难影响到K分类的结果。所以,我们就要对K分类数据的各个特征值进行归一化计算,从而减少由于数值大小所带来的影响。
归一化过程:
- 选择数据某一特征的所有可能值,并得到这些可能值中的最大和最小值。
- 通过计算最大最小值的差得到取值区间。
- 用所有的可能值与最小值的差除以取值区间,得到归一化之后的值。
归一化的Python实现
def normalization(dataSet): min = dataSet.min(axis = 0) max = dataSet.max(axis = 0) range = max - min num = dataSet.shape(0) normData = dataSet - tile(min, (m, 1)) normData = normData/tile(range, (num,1)) return normData
阅读全文
0 0
- K近邻分类算法
- K近邻分类算法
- K近邻分类算法
- k-近邻分类算法
- K分类算法
- K-近邻分类算法KNN
- K-近邻分类算法KNN
- k近邻分类算法(kNN)
- K近邻分类算法实现 in Python
- 【模式识别】K-近邻分类算法KNN
- kNN k 近邻 分类算法 简介
- K近邻(KNN):分类算法
- 【模式识别】K-近邻分类算法KNN
- k-最近邻分类算法基础
- K近邻分类算法实现 in Python
- k-近邻算法实现分类器
- K-Means++算法之NBA后卫分类
- K-近邻分类算法(监督式)
- 堆和栈的笔记
- 职业转型的终极指南:从新手到专业的机器学习工程师
- ValueError: Cannot feed value of shape (1,) for Tensor u'Placeholder:0', which has shape '(1, 1)'
- 装配一个对象 dataSource 对象 spring 火推03
- PC浏览器播放m3u8
- K分类算法
- 面向对象编程有三大特性:封装、继承、多态。
- POJ2299 线段树求逆序数
- Qt组件之模拟电池充电
- git拉一个新分支
- 线性表类型定义与顺序表操作
- 二叉搜索树(二叉穿线树)抽象结构以及线索化算法
- visual studio C++ 使用OpenMP 进行并行计算
- 蓝桥杯 算法提高 快乐司机