Machine Learning in Action机器学习——第二章k-近邻算法代码详解(一)

一、近邻算法的定义与作用也就是意义

k-近邻算法,近邻算法近邻算法顾名思义,找到最近的点然后进行归纳,距离哪些点最近这个点就属于那个类。这和线性回归算法有异曲同工之妙,但是我感觉还是一元线性回归算法更加精准。(有兴趣的小伙伴可以参阅《西瓜书》与《南瓜书》),当然就方便来说,可能k-近邻算法更加方便并且容易理解。

一般的,k-近邻算法可以应用的范围特别广,因为他本身就是一个分类问题。在书中介绍的就是有电影分类、择偶、识别手写数字。

二、近邻算法的代码详解

1、实施分类算法

def classify0(inX, dataSet, labels, k):
    dataSetSize = dataSet.shape[0]  # 代表的是dataSet数据集中的行数
    diffMat = tile(inX,(dataSetSize, 1)) - dataSet  # 计算未知类的数据集与已知数据集的差
    sqDiffMat = diffMat**2  # 差值平方化
    sqDistances = sqDiffMat.sum(axis=1)  # 把(未平方根化之前的)未知数据集与两个已知数据的距离分别计算出来
    distances = sqDistances**0.5  # 距离平方根化
    sortedDistIndicies = distances.argsort()  # 排序,返回下标
    classCount = {}  # 建立一个新的字典以便于之后将数据归纳其中
    for i in range(k):
        voteIlabel = labels[sortedDistIndicies[i]]  # 遍历排序后的前 k 个标签
        classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1 # 记录这 k 个标签出现的次数
    sortedClassCount = sorted(classCount.items(),  key=operator.itemgetter(1), reverse=True)  # 按照出现次数对标签进行从大到小排序
    return sortedClassCount[0][0]  # 返回出现次数最多的那个标签

参数含义 

inX代表的是所需要分类的对象,也就是用于分类的输入向量

dataSet代表的是inX要被分类出来的依据对象,是依据dataSet这个数据组才把inX分为那些类,也就是书上的输入的训练样本集

labels也就是dataSet所对应的标签,比如说爱情片、恐怖片这种,用于将最多的标签复制给inX的标签,最后作为一个返回值。

k代表所抽取的前几个元素,进行分类之后会将标签与数据集依次排序排序之后的前k个元素中哪个标签所占数目比较多,就将inX分为这个标签。

到这里kNN的大概意思应该就解释清楚了(书中后面列举的是具体的实例),下面看具体的函数作用。

函数解析

shape:在这里用shape[0]来读取这个dataSet数据集的行数

tile:在这里用tile是将inX汇聚成dataSize行一列的数据集,因为矩阵的运算规律需要我们这么做。

sum:sum(axis=1)其中axis=1的意思是,将每一行的元素加起来,然后再进行接下来的开方。

argsort:就是分类函数了,对distance进行排序

sorted:对于classCount.items()进行排序,排序依据是operater(也就是classCount.item)的第二个元素,也就是上面循环中求出的每个标签的数字。从大到小进行排序。

难点解析

    for i in range(k):
        voteIlabel = labels[sortedDistIndicies[i]]  # 遍历排序后的前 k 个标签
        classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1 # 记录这 k 个标签出现的次数

在这个循环之中,有一个问题,labels如何和以及分类排序之后的数据集找到一一对应的关系。所以上面使用了一个argsort函数

函数的具体效果如上图,这样根据大小排列之后,dataSet的标签依旧不会改变。也就解决了上述问题。

三、总结

以上就是kNN分类算法的大体解析,实例介绍我们放在之后的讲解中。

上面都是我学习之中遇到的一些困难以及疑惑,如果小伙伴们还有其他的问题也欢迎私信我进行交流。

代码出处出自于机器学习实战这本书中,其中对于python3.X与python2.X的不同进行了一些调整,例如:

python2与3的变动
python2python3
print “”print("")
iteritems()items()

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
众所周知,人工智能是当前最热门的话题之一, 计算机技术与互联网技术的快速发展更是将对人工智能的研究推向一个新的高潮。 人工智能是研究模拟和扩展人类智能的理论与方法及其应用的一门新兴技术科学。 作为人工智能核心研究领域之一的机器学习, 其研究动机是为了使计算机系统具有人的学习能力以实现人工智能。 那么, 什么是机器学习呢? 机器学习 (Machine Learning) 是对研究问题进行模型假设,利用计算机从训练数据中学习得到模型参数,并最终对数据进行预测和分析的一门学科。 机器学习的用途 机器学习是一种通用的数据处理技术,其包含了大量的学习算法。不同的学习算法在不同的行业及应用中能够表现出不同的性能和优势。目前,机器学习已成功地应用于下列领域: 互联网领域----语音识别、搜索引擎、语言翻译、垃圾邮件过滤、自然语言处理等 生物领域----基因序列分析、DNA 序列预测、蛋白质结构预测等 自动化领域----人脸识别、无人驾驶技术、图像处理、信号处理等 金融领域----证券市场分析、信用卡欺诈检测等 医学领域----疾病鉴别/诊断、流行病爆发预测等 刑侦领域----潜在犯罪识别与预测、模拟人工智能侦探等 新闻领域----新闻推荐系统等 游戏领域----游戏战略规划等 从上述所列举的应用可知,机器学习正在成为各行各业都会经常使用到的分析工具,尤其是在各领域数据量爆炸的今天,各行业都希望通过数据处理与分析手段,得到数据中有价值的信息,以便明确客户的需求和指引企业的发展。
众所周知,人工智能是当前最热门的话题之一, 计算机技术与互联网技术的快速发展更是将对人工智能的研究推向一个新的高潮。 人工智能是研究模拟和扩展人类智能的理论与方法及其应用的一门新兴技术科学。 作为人工智能核心研究领域之一的机器学习, 其研究动机是为了使计算机系统具有人的学习能力以实现人工智能。 那么, 什么是机器学习呢? 机器学习 (Machine Learning) 是对研究问题进行模型假设,利用计算机从训练数据中学习得到模型参数,并最终对数据进行预测和分析的一门学科。 机器学习的用途 机器学习是一种通用的数据处理技术,其包含了大量的学习算法。不同的学习算法在不同的行业及应用中能够表现出不同的性能和优势。目前,机器学习已成功地应用于下列领域: 互联网领域----语音识别、搜索引擎、语言翻译、垃圾邮件过滤、自然语言处理等 生物领域----基因序列分析、DNA 序列预测、蛋白质结构预测等 自动化领域----人脸识别、无人驾驶技术、图像处理、信号处理等 金融领域----证券市场分析、信用卡欺诈检测等 医学领域----疾病鉴别/诊断、流行病爆发预测等 刑侦领域----潜在犯罪识别与预测、模拟人工智能侦探等 新闻领域----新闻推荐系统等 游戏领域----游戏战略规划等 从上述所列举的应用可知,机器学习正在成为各行各业都会经常使用到的分析工具,尤其是在各领域数据量爆炸的今天,各行业都希望通过数据处理与分析手段,得到数据中有价值的信息,以便明确客户的需求和指引企业的发展。
众所周知,人工智能是当前最热门的话题之一, 计算机技术与互联网技术的快速发展更是将对人工智能的研究推向一个新的高潮。 人工智能是研究模拟和扩展人类智能的理论与方法及其应用的一门新兴技术科学。 作为人工智能核心研究领域之一的机器学习, 其研究动机是为了使计算机系统具有人的学习能力以实现人工智能。 那么, 什么是机器学习呢? 机器学习 (Machine Learning) 是对研究问题进行模型假设,利用计算机从训练数据中学习得到模型参数,并最终对数据进行预测和分析的一门学科。 机器学习的用途 机器学习是一种通用的数据处理技术,其包含了大量的学习算法。不同的学习算法在不同的行业及应用中能够表现出不同的性能和优势。目前,机器学习已成功地应用于下列领域: 互联网领域----语音识别、搜索引擎、语言翻译、垃圾邮件过滤、自然语言处理等 生物领域----基因序列分析、DNA 序列预测、蛋白质结构预测等 自动化领域----人脸识别、无人驾驶技术、图像处理、信号处理等 金融领域----证券市场分析、信用卡欺诈检测等 医学领域----疾病鉴别/诊断、流行病爆发预测等 刑侦领域----潜在犯罪识别与预测、模拟人工智能侦探等 新闻领域----新闻推荐系统等 游戏领域----游戏战略规划等 从上述所列举的应用可知,机器学习正在成为各行各业都会经常使用到的分析工具,尤其是在各领域数据量爆炸的今天,各行业都希望通过数据处理与分析手段,得到数据中有价值的信息,以便明确客户的需求和指引企业的发展。
众所周知,人工智能是当前最热门的话题之一, 计算机技术与互联网技术的快速发展更是将对人工智能的研究推向一个新的高潮。 人工智能是研究模拟和扩展人类智能的理论与方法及其应用的一门新兴技术科学。 作为人工智能核心研究领域之一的机器学习, 其研究动机是为了使计算机系统具有人的学习能力以实现人工智能。 那么, 什么是机器学习呢? 机器学习 (Machine Learning) 是对研究问题进行模型假设,利用计算机从训练数据中学习得到模型参数,并最终对数据进行预测和分析的一门学科。 机器学习的用途 机器学习是一种通用的数据处理技术,其包含了大量的学习算法。不同的学习算法在不同的行业及应用中能够表现出不同的性能和优势。目前,机器学习已成功地应用于下列领域: 互联网领域----语音识别、搜索引擎、语言翻译、垃圾邮件过滤、自然语言处理等 生物领域----基因序列分析、DNA 序列预测、蛋白质结构预测等 自动化领域----人脸识别、无人驾驶技术、图像处理、信号处理等 金融领域----证券市场分析、信用卡欺诈检测等 医学领域----疾病鉴别/诊断、流行病爆发预测等 刑侦领域----潜在犯罪识别与预测、模拟人工智能侦探等 新闻领域----新闻推荐系统等 游戏领域----游戏战略规划等 从上述所列举的应用可知,机器学习正在成为各行各业都会经常使用到的分析工具,尤其是在各领域数据量爆炸的今天,各行业都希望通过数据处理与分析手段,得到数据中有价值的信息,以便明确客户的需求和指引企业的发展。
Machine Learning in Action is unique book that blends the foundational theories of machine learning with the practical realities of building tools for everyday data analysis. You'll use the flexible Python programming language to build programs that implement algorithms for data classification, forecasting, recommendations, and higher-level features like summarization and simplification. About the Book A machine is said to learn when its performance improves with experience. Learning requires algorithms and programs that capture data and ferret out the interesting or useful patterns. Once the specialized domain of analysts and mathematicians, machine learning is becoming a skill needed by many. Machine Learning in Action is a clearly written tutorial for developers. It avoids academic language and takes you straight to the techniques you'll use in your day-to-day work. Many (Python) examples present the core algorithms of statistical data processing, data analysis, and data visualization in code you can reuse. You'll understand the concepts and how they fit in with tactical tasks like classification, forecasting, recommendations, and higher-level features like summarization and simplification. Readers need no prior experience with machine learning or statistical processing. Familiarity with Python is helpful. What's InsideA no-nonsense introduction Examples showing common ML tasks Everyday data analysis Implementing classic algorithms like Apriori and Adaboos =================================== Table of ContentsPART 1 CLASSIFICATION Machine learning basics Classifying with k-Nearest Neighbors Splitting datasets one feature at a time: decision trees Classifying with probability theory: naïve Bayes Logistic regression Support vector machines Improving classification with the AdaBoost meta algorithm PART 2 FORECASTING NUMERIC VALUES WITH REGRESSION Predicting numeric values: regression Tree-based regression PART 3 UNSUPERVISED LEARNING Grouping unlabeled items using k-means clustering Association analysis with the Apriori algorithm Efficiently finding frequent itemsets with FP-growth PART 4 ADDITIONAL TOOLS Using principal component analysis to simplify data Simplifying data with the singular value decomposition Big data and MapReduce
### 回答1: WOA-SVM(Walking Optimization Algorithm-Support Vector Machine)是一种机器学习算法,它可以用来构建分类和回归模型,以支持向量机(SVM)的形式。它是基于一种叫做行走优化算法(WOA)的迭代算法,通过改进SVM的参数来改进模型的性能。 ### 回答2: WOA-SVM其实是一种基于鲸鱼群算法(WOA)和支持向量机(SVM)的机器学习算法。这个算法结合了两种优秀的算法,可以在处理分类问题时具有较高的性能。 WOA是一种仿生智能算法,灵感来源于鲸鱼的捕食行为。这种算法通过模拟鲸鱼在捕食中的行为,来搜索解空间中的最优解。WOA根据每个个体的适应度值和搜索概率来更新每个解。在每次迭代中,较好的解会被选择,且搜索空间也会收缩,最终找到全局最优解。 SVM是一种非常强大的分类器,主要用于二分类问题。它的目标是找到一个最优超平面,可以将不同类别的数据点最大程度地分开。SVM通过在特征空间中构造一个决策边界,将不同类别的数据点分隔开。 WOA-SVM算法结合了WOA和SVM的优点,能够更好地处理分类问题。该算法代码实现大致可以分为以下几个步骤: 1. 数据准备:将需要分类的数据集划分为训练集和测试集。 2. 初始化WOA参数:设定WOA算法的迭代次数、种群大小等参数。 3. WOA算法:根据初始化的参数,采用WOA算法进行迭代搜索,逐步优化SVM模型。 4. 构建SVM模型:根据当前的WOA参数,构建SVM模型,根据训练集进行模型训练。 5. 模型评估:使用测试集评估模型的性能,例如计算分类准确率、精确率、召回率等指标。 6. 结果分析:根据评估结果,分析模型的性能,进一步调整WOA参数,以得到更好的分类效果。 总体来说,WOA-SVM算法通过融合WOA和SVM,既能够利用WOA算法的搜索能力,又能够充分发挥SVM的分类性能。这种算法在处理分类问题时具有很好的潜力,并且可以根据实际问题进行调整,以达到更好的结果。 ### 回答3: WOA-SVM(Whale Optimization Algorithm-Support Vector Machine)是一种结合鲸鱼优化算法(Whale Optimization Algorithm)和支持向量机(Support Vector Machine)的机器学习算法。该算法在解决分类和回归问题方面具有很高的效果。 首先,WOA-SVM算法通过鲸鱼优化算法来寻找最优解。鲸鱼优化算法中的鲸鱼代表解空间中的候选解,而位置和尺寸表示解的质量。算法通过模拟鲸鱼的迁徙、寻找食物和社交行为等行为规律,来搜索解空间中的最优解。 在WOA-SVM算法中,通过将支持向量机引入到鲸鱼优化算法中,将鲸鱼与支持向量机的分类功能相结合。支持向量机是一种监督学习算法,通过构建一个超平面来进行分类。该算法通过将数据映射到高维空间,并在其中寻找最优的超平面,来实现数据的分类。 最后,WOA-SVM算法通过结合鲸鱼优化算法和支持向量机,对数据进行分类和回归分析。该算法的优势在于能够充分利用鲸鱼优化算法的搜索能力和支持向量机的分类准确性,在解决复杂问题时具有很高的效果。 总之,WOA-SVM机器学习算法是一种结合鲸鱼优化算法和支持向量机的算法,通过利用鲸鱼优化算法的搜索能力和支持向量机的分类准确性,对数据进行分类和回归分析。这种算法在解决分类和回归问题方面具有很高的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值