K近邻分类数据模拟和实例分析
k近邻算法经典案例
k近邻算法经典案例
1. 手写数字识别
手写数字识别是机器学习中的经典应用之一,k近邻算法也被广泛应用于其实现。
在这个案例中,我们将使用k近邻算法来训练一个模型,使其能够准确地识别手写数字。
2. 信用评估
信用评估是银行、信用卡公司等机构必须面对的问题。
这个案例中,我们将使用k近邻算法来构建一个模型,用于预测一个人是否有能力还款。
3. 疾病诊断
疾病诊断是医疗领域的一个重要应用,通过收集患者的症状和病史等信息,机器学习算法可以辅助医生进行诊断。
在这个案例中,我们将使用k近邻算法来构建一个模型,能够使用患者的症状和病史等信息进行疾病诊断。
4. 商品推荐
商品推荐是电商行业必须面对的问题。
在这个案例中,我们将使用k近邻算法来构建一个模型,来预测用户喜欢的商品,并推荐给用户。
5. 手写汉字识别
手写汉字识别与手写数字识别类似,但更具有挑战性。
在这个案例中,我们将使用k近邻算法来构建一个模型,使其能够准确地识别手写汉字。
k近邻算法的应用实例
k近邻算法的应用实例
k近邻算法是一种简单易懂且容易实现的机器学习算法,它的
应用范围非常广泛。
以下将列举一些k近邻算法的应用实例:
1. 疾病诊断:利用k近邻算法对一些已知的疾病数据进行训练,并预测新患者是否患有该疾病。
2. 推荐系统:通过对用户行为进行分析,建立用户和商品的关联模型,利用k近邻算法为用户推荐可能感兴趣的商品。
3. 图像识别:利用k近邻算法对一些已经标记好的图像数据进行训练,并且分类预测未知类别的图像。
4. 模式识别:利用k近邻算法对已知类别的数据进行学习,通过比较已学习到的结果与未知数据的结果进行分类。
5. 风险评估:利用k近邻算法对已知风险的数据进行训练,对新的数据进行分析并预测一定时间内的风险。
6. 数据挖掘:利用k近邻算法对大量数据进行聚类分析,发现其中的规律、异常数据等。
参考文献:
1. 《机器学习实战》(中文版)——Peter Harrington
2. 《Python机器学习基础教程》(中文版)——Sebastian
Raschka
3. 《数据挖掘和分析基础》(中文版)——Zaki, M.J., & Meira Jr., W.。
k-近邻算法梳理(从原理到示例)
k-近邻算法梳理(从原理到⽰例)https:///kun_csdn/article/details/88919091k-近邻算法是⼀个有监督的机器学习算法,k-近邻算法也被称为knn算法,可以解决分类问题。
也可以解决回归问题。
本⽂主要内容整理为如下:knn算法的原理、优缺点及参数k取值对算法性能的影响;使⽤knn算法处理分类问题的⽰例;使⽤knn算法解决回归问题的⽰例;使⽤knn算法进⾏糖尿病检测的⽰例;1 算法原理knn算法的核⼼思想是未标记样本的类别,由距离其最近的k个邻居投票来决定。
具体的,假设我们有⼀个已标记好的数据集。
此时有⼀个未标记的数据样本,我们的任务是预测出这个数据样本所属的类别。
knn的原理是,计算待标记样本和数据集中每个样本的距离,取距离最近的k个样本。
待标记的样本所属类别就由这k个距离最近的样本投票产⽣。
假设X_test为待标记的样本,X_train为已标记的数据集,算法原理的伪代码如下:遍历X_train中的所有样本,计算每个样本与X_test的距离,并把距离保存在Distance数组中。
对Distance数组进⾏排序,取距离最近的k个点,记为X_knn。
在X_knn中统计每个类别的个数,即class0在X_knn中有⼏个样本,class1在X_knn中有⼏个样本等。
待标记样本的类别,就是在X_knn中样本个数最多的那个类别。
1.1 算法优缺点优点:准确性⾼,对异常值和噪声有较⾼的容忍度。
缺点:计算量较⼤,对内存的需求也较⼤。
1.2 算法参数其算法参数是k,参数选择需要根据数据来决定。
k值越⼤,模型的偏差越⼤,对噪声数据越不敏感,当k值很⼤时,可能造成⽋拟合;k值越⼩,模型的⽅差就会越⼤,当k值太⼩,就会造成过拟合。
1.3 变种knn算法有⼀些变种,其中之⼀是可以增加邻居的权重。
默认情况下,在计算距离时,都是使⽤相同权重。
实际上,可以针对不同的邻居指定不同的距离权重,如距离越近权重越⾼。
机器学习经典分类算法——k-近邻算法(附python实现代码及数据集)
机器学习经典分类算法——k-近邻算法(附python实现代码及数据集)⽬录⼯作原理存在⼀个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每⼀数据与所属分类的对应关系。
输⼊没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进⾏⽐较,然后算法提取样本集中特征最相似数据(最近邻)的分类特征。
⼀般来说,我们只选择样本数据集中前k个最相似的数据,这就是k-近邻算法中k的出处,通常k是不⼤于20的整数。
最后选择k个最相似数据中出现次数最多的分类,作为新数据的分类。
举个例⼦,现在我们⽤k-近邻算法来分类⼀部电影,判断它属于爱情⽚还是动作⽚。
现在已知六部电影的打⽃镜头、接吻镜头以及电影评估类型,如下图所⽰。
现在我们有⼀部电影,它有18个打⽃镜头、90个接吻镜头,想知道这部电影属于什么类型。
根据k-近邻算法,我们可以这么算。
⾸先计算未知电影与样本集中其他电影的距离(先不管这个距离如何算,后⾯会提到)。
现在我们得到了样本集中所有电影与未知电影的距离。
按照距离递增排序,可以找到k个距离最近的电影。
现在假定k=3,则三个最靠近的电影依次是He's Not Really into Dudes、Beautiful Woman、California Man。
python实现⾸先编写⼀个⽤于创建数据集和标签的函数,要注意的是该函数在实际⽤途上没有多⼤意义,仅⽤于测试代码。
def createDataSet():group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])labels = ['A','A','B','B']return group, labels然后是函数classify0(),该函数的功能是使⽤k-近邻算法将每组数据划分到某个类中,其伪代码如下:对未知类别属性的数据集中的每个点依次执⾏以下操作:(1)计算已知类别数据集中的点与当前点之间的距离;(2)按照距离递增次序排序;(3)选取与当前点距离最⼩的k个点;(4)确定前k个点所在类别的出现频率;(5)返回前k个点出现频率最⾼的类别作为当前点的预测分类。
k近邻算法解决实际问题
k近邻算法(k-Nearest Neighbors,简称kNN)是一种非常实用的机器学习算法,可以用于解决各种实际问题。
以下是一些使用kNN算法解决实际问题的例子:1.垃圾邮件识别:通过分析邮件的内容和元数据,使用kNN算法训练模型,
可以识别垃圾邮件。
具体地,可以将邮件内容作为输入特征,标签为正常邮件或垃圾邮件,使用kNN算法进行分类。
2.电影推荐:使用kNN算法可以基于用户的历史行为和偏好,推荐类似风格
的电影。
例如,可以根据电影的导演、演员、类型、主题等特征,使用kNN算法对用户进行分类,并推荐与用户所在类别最相似的电影。
3.信用卡欺诈检测:通过分析大量的信用卡交易数据,使用kNN算法可以检
测出异常交易,预防欺诈行为。
可以将交易金额、时间、地点等作为输入特征,标签为正常交易或欺诈交易,使用kNN算法进行分类。
4.疾病诊断:在医疗领域,可以使用kNN算法根据患者的症状、病史、检查
结果等数据,进行疾病诊断。
可以将患者的各种特征作为输入,标签为某种疾病或健康状态,使用kNN算法进行分类。
5.语音识别:在语音识别领域,可以使用kNN算法进行语音到文字的转换。
具体地,可以将语音信号的某些特征作为输入,标签为相应的文字,使用kNN 算法进行分类,并对分类结果进行优化和调整。
总之,k近邻算法是一种非常实用的机器学习算法,可以用于解决各种实际问题。
在实际应用中,需要根据具体问题的特点选择合适的特征和参数,并对模型进行合理的评估和调整。
knn算法的例子
knn算法的例子k-最近邻算法(k-nearest neighbors,简称k-NN)是一种常用的分类和回归算法。
它基于一个简单的假设:如果一个样本的k个最近邻属于某个类别,那么该样本也很可能属于该类别。
k-NN算法非常直观和易于理解,因此被广泛应用于各种领域。
下面将以几个具体的例子来说明k-NN算法的应用。
1. 手写数字识别在机器学习领域,手写数字识别是一个经典的问题。
k-NN算法可以用于将手写数字图片分类成0到9之间的数字。
基于已有的数字图片数据集,可以计算待分类图片与每个已有图片的距离,并找出k 个最近邻。
然后根据这k个最近邻的标签来判断待分类图片的数字。
2. 电影推荐系统在电影推荐系统中,k-NN算法可以根据用户的历史评分和其他用户的评分来预测用户可能喜欢的电影。
通过计算待推荐电影与用户历史评分电影的相似度,找出k个最相似的电影,并根据这些电影的评分来预测用户对待推荐电影的评分。
3. 股票市场预测k-NN算法可以用于预测股票市场的趋势。
基于已有的股票数据,可以计算待预测股票与历史股票的相似度,并找出k个最相似的股票。
然后根据这k个股票的涨跌情况来预测待预测股票的涨跌。
4. 医学诊断在医学诊断中,k-NN算法可以帮助医生根据患者的各项指标来预测患有哪种疾病。
通过计算待预测患者与已有患者的相似度,找出k 个最相似的患者,并根据这些患者的疾病情况来预测待预测患者的疾病。
5. 文本分类k-NN算法可以用于文本分类,例如将新闻文章分类成不同的主题。
基于已有的训练数据,可以计算待分类文本与每个已有文本的相似度,并找出k个最相似的文本。
然后根据这k个文本的主题来预测待分类文本的主题。
6. 信用评估在信用评估中,k-NN算法可以用于预测申请贷款的人是否具有良好的信用记录。
通过计算待评估人员与已有人员的相似度,找出k个最相似的人员,并根据这些人员的信用记录来预测待评估人员的信用状况。
7. 图像处理k-NN算法可以用于图像处理,例如图像分类和图像检索。
KNN(k近邻)机器学习算法详解
KNN(k近邻)机器学习算法详解【转】机器学习--- 分类算法详解文章目录一、机器学习简述机器学习算法分类机器学习开发流程二、数据划分、转换器、估计器sklearn 内置数据集数据集进行分割转换器与预估器三、K-近邻算法(KNN)核心思想KNN 算法API案例分析优缺点分析四、朴素贝叶斯(Bayes)核心思想Bayes算法API案例分析优缺点分析五、决策树与随机森林①决策树核心思想决策树API案例分析优缺点分析②随机森林核心思想随机森林API案例分析随机森林的优点六、分类模型的准确性评估一、机器学习简述机器学习算法分类监督学习(预测):数据集有特征值+目标值分类(目标值离散型)——K-近邻算法、贝叶斯分类、决策树与随机森林、逻辑回归、神经网络回归(目标值连续型)——线性回归、岭回归标注——隐形马尔科夫模型非监督学习(聚类):数据集只有特征值聚类——K-Means 算法机器学习开发流程建立模型,根据数据类型划分应用种类,根据原始数据明确问题做什么;数据的基本处理:pd 数据去重,合并表等等;建立特征工程,对特征进行处理;选择相应算法进行分析;模型的评估,判定效果,直到模型合格;模型上线使用,以 API 形式提供;二、数据划分、转换器、估计器sklearn 内置数据集数据集划分训练集(70%-80%):建立模型测试集(30%-20%):评估模型划分 API:sklearn.model_seletion.train_test_splitsklearn 数据集接口介绍sklearn.datasets:加载获取流行数据集datasets.load_*():获取小规模数据集,数据包含在datasets 里datasets.fetch_*(data_home=None):data_home参数代表数据集下载的目录,下载后的默认路径是~-scikit_learn_data-返回数据类型:datasets.base.Bunch(字典格式)data:特征数据数组,是二维 np.ndarray 数据target:标签数组,是 n_samples 的一维数组DESCR:数据描述feature_names:特征名(新闻数据、手写数字、回归数据集没有特征名)target_names:标签名sklearn 分类数据集from sklearn.datasets import load_iris()sklearn 回归数据集from sklearn.datasets import load_boston()数据集进行分割sklearn.model_selection.train_test_split(x,y,test_size,rando m_state)参数解释x:数据集的特征值y:数据集的标签值test_size :测试集的大小,一般为floatrandom_state :随机数种子,不同的种子会造成不同的随机采样结果,相同的种子采样结果相同。
k近邻法诊断乳腺癌案例
k近邻法诊断乳腺癌案例k近邻法(k-nearest neighbors, k-NN)是一种常用的机器学习算法,可用于诊断乳腺癌。
其基本原理是根据已知的训练样本,通过计算待分类样本与训练样本之间的距离,找到离待分类样本最近的k个训练样本,然后根据这k个训练样本的标签来确定待分类样本的类别。
下面将以k近邻法诊断乳腺癌案例为题,介绍一些相关的内容。
一、乳腺癌简介乳腺癌是一种常见的恶性肿瘤,女性是其主要发病人群。
乳腺癌的早期诊断对于治疗和预后至关重要。
因此,发展一种准确可靠的乳腺癌诊断方法具有重要意义。
二、k近邻法介绍k近邻法是一种基本的分类算法,其主要思想是通过计算待分类样本与已知样本之间的距离,找到离待分类样本最近的k个已知样本,然后根据这k个样本的标签来确定待分类样本的类别。
三、乳腺癌数据集为了应用k近邻法诊断乳腺癌,需要一个包含已知样本的数据集。
常用的数据集之一是威斯康星州乳腺癌数据集,该数据集包含了乳腺肿瘤的各种特征和对应的恶性/良性标签。
四、特征选择在应用k近邻法诊断乳腺癌时,需要选择一些能够有效区分恶性和良性乳腺肿瘤的特征作为输入。
常用的特征包括肿块半径、质地、边界、单个细胞大小等。
五、距离度量k近邻法中常用的距离度量方法包括欧氏距离、曼哈顿距离和闵可夫斯基距离。
在诊断乳腺癌时,可以根据具体情况选择合适的距离度量方法。
六、确定k值k近邻法中的k值表示需要考虑的最近邻样本的个数。
k值的选择对分类结果有一定影响。
一般来说,较小的k值对噪声敏感,较大的k值对样本分布的细节不敏感。
在实际应用中,可以通过交叉验证等方法来确定合适的k值。
七、分类决策规则根据找到的k个最近邻样本的标签,可以使用投票法或加权投票法来确定待分类样本的类别。
投票法中,待分类样本被划分为多数类;加权投票法中,每个最近邻样本的权重与其距离成反比。
八、模型评估为了评估k近邻法在诊断乳腺癌中的性能,可以使用一些常见的评估指标,如准确率、精确率、召回率、F1值等。
knn算法解决实际问题的例子(一)
knn算法解决实际问题的例子(一)KNN算法解决实际问题K最近邻(K-Nearest Neighbor, KNN)算法是一种常见的机器学习算法,可以用于解决多种实际问题。
下面是一些KNN算法在实际问题中的应用示例:1. 电影分类•问题描述:为了帮助用户选择适合的电影,我们需要根据用户的历史观看记录和评分,将电影进行分类,比如喜剧、动作、爱情等分类。
•解决思路:使用KNN算法,将用户的历史观看记录和评分作为特征向量,根据特征向量的相似度度量,找到K个和当前电影最相似的电影,将它们的分类作为当前电影的分类。
2. 图像识别•问题描述:给定一张未知分类的图像,我们需要将它分为不同的类别,比如动物、植物、建筑等。
•解决思路:使用KNN算法,将已知类别的图像转换成特征向量,比如使用图像的像素值作为特征,然后根据特征向量的相似度度量,找到K个和未知图像最相似的图像,将它们的类别作为未知图像的类别。
3. 推荐系统•问题描述:根据用户的历史行为和兴趣,向用户推荐适合的商品、音乐或文章等。
•解决思路:使用KNN算法,将用户的历史行为和兴趣转换成特征向量,比如使用用户的点击记录和评分作为特征,然后根据特征向量的相似度度量,找到K个和用户兴趣最接近的商品、音乐或文章,将它们推荐给用户。
4. 病症诊断•问题描述:根据病人的症状,判断可能的疾病并给出诊断结果。
•解决思路:使用KNN算法,将病人的症状转换成特征向量,比如使用病人的体温、心率、血压等作为特征,然后根据特征向量的相似度度量,找到K个和病人症状最相似的病例,将它们的疾病作为当前病人的诊断结果。
5. 文本分类•问题描述:对给定的文本进行分类,比如新闻分类、情感分析等。
•解决思路:使用KNN算法,将文本转换成特征向量,比如使用词袋模型或tf-idf作为特征,然后根据特征向量的相似度度量,找到K个和当前文本最相似的文本,将它们的类别作为当前文本的分类。
以上是一些KNN算法在实际问题中的应用示例,KNN的优点在于简单易理解、无需训练等,但也有一些缺点,比如计算复杂度较高、对噪声数据敏感等。
k近邻算法的应用实例
k近邻算法的应用实例k近邻算法是一种常用的机器学习算法,其主要用于分类和回归问题。
在分类问题中,k近邻算法基于已知类别的样本集合,对新样本进行分类。
在回归问题中,k近邻算法基于已知数值型的样本集合,对新样本进行数值预测。
以下是k近邻算法的应用实例:1. 手写数字识别:k近邻算法可以用于识别手写数字。
训练数据集包含许多手写数字的图像和对应的类别标签,测试数据集包含未知的手写数字图像,需要对其进行分类。
使用k近邻算法,可以将测试数据集中的每个图像与训练数据集中的所有图像进行比较,并找到最近的k个邻居。
然后,根据这k个邻居的类别标签,预测测试数据集中图像的类别。
2. 电商推荐系统:k近邻算法可以用于电商推荐系统,预测用户可能感兴趣的商品。
该算法基于用户历史购买数据和商品描述数据,将用户与最相似的一组其他用户进行比较,找到最近的k个邻居。
然后,通过分析邻居们的购买历史,预测用户可能感兴趣的商品。
3. 医学诊断:k近邻算法可以用于医学诊断,例如预测患者是否患有某种疾病。
训练数据集包含已知患病和健康的患者的数据,测试数据集是需要进行预测的患者。
通过将测试患者的数据与训练数据集中的所有患者进行比较,可以找到最近的k个邻居。
然后,通过分析邻居们的症状和疾病历史,预测测试患者是否患有某种疾病。
4. 金融风险评估:k近邻算法可以用于金融风险评估,例如预测借款人是否会按时还款。
训练数据集包含已知借款人的还款历史和其他信息,测试数据集是需要进行预测的借款人。
通过将测试借款人的数据与训练数据集中的所有借款人进行比较,可以找到最近的k个邻居。
然后,通过分析邻居们的还款历史和其他信息,预测测试借款人是否会按时还款。
总之,k近邻算法在许多实际应用中都发挥着重要作用,可以用于分类、回归和推荐等问题。
k-近邻算法实例
k-近邻算法是一种基本分类与回归方法。
假设有一个由两类不同的样本数据组成的数据集,分别用蓝色的小正方形和红色的小三角形表示。
现在有一个绿色的圆点,需要确定它是属于哪一类。
如果K=3,即选择距离绿色圆点最近的3个点,其中有两个是红色的三角形,一个是蓝色的正方形,那么根据“少数服从多数”的原则,绿色圆点将被分类为红色的三角形一类。
如果K=5,即选择距离绿色圆点最近的5个点,其中有三个是蓝色的正方形,两个是红色的三角形,那么同样根据“少数服从多数”的原则,绿色圆点将被分类为蓝色的正方形一类。
以上就是k-近邻算法的一个基本实例。
在实际应用中,k值的选择、距离度量的方式以及分类决策规则等都会影响到算法的最终效果。
k近邻算法水果案例
k近邻算法水果案例k近邻算法是一种常用的分类算法,它可以根据样本数据中的特征,将新的样本分到不同的类别中。
在水果分类案例中,我们可以使用k近邻算法来根据水果的特征(如颜色、形状、纹理等)来判断水果的类别(如苹果、橙子、香蕉等)。
下面是关于水果分类案例的一些实例,展示了如何使用k近邻算法进行水果分类。
1. 问题描述:我们有一篮子水果,其中包括苹果、橙子和香蕉。
我们希望根据水果的颜色和形状来进行分类,以便正确识别水果的种类。
如何使用k近邻算法解决这个问题?2. 数据收集:我们首先需要收集一些水果的样本数据,包括水果的颜色、形状和种类。
例如,我们可以收集苹果的红色、圆形和甜味等特征,橙子的橙色、椭圆形和酸味等特征,以及香蕉的黄色、弯曲形和香味等特征。
3. 数据处理:我们将收集到的水果样本数据进行处理,将水果的特征转换为数值型数据,以便进行计算。
例如,我们可以将水果的颜色转换为RGB值,形状转换为长度和宽度的比例等。
4. 特征选择:在进行水果分类之前,我们需要选择合适的特征来进行分类。
在这个案例中,我们可以选择颜色和形状作为特征,因为它们对于区分水果的种类是比较重要的。
5. 训练模型:使用k近邻算法训练模型,将水果的特征和对应的种类作为训练数据。
算法会根据训练数据中的特征和类别之间的关系,建立一个分类模型。
6. 选择k值:在使用k近邻算法进行分类时,我们需要选择一个合适的k值,即选择多少个最近邻的样本来进行分类。
选择k值的原则是,k值不能太小,否则容易受到噪声的影响,也不能太大,否则容易受到样本不平衡的影响。
7. 进行分类:当有新的水果样本需要进行分类时,使用训练好的模型,计算该样本与训练数据中每个样本的距离,并选择k个距离最近的样本。
根据这k个样本的类别来判断该水果的种类。
8. 评估模型:使用一部分已知类别的水果样本作为测试数据,评估训练好的模型的分类准确率。
可以使用准确率、召回率和F1值等指标来评估模型的性能。
k近邻算法的应用实例
k近邻算法的应用实例
k近邻算法是一种常用的机器学习算法,可以用于分类和回归问题。
它的基本思想是通过测量不同特征之间的距离来确定与一个新数据点最相似的k个数据点,并基于这些数据点的标签来预测新数据点的标签。
下面是k近邻算法的一些应用实例:
1. 手写数字识别:k近邻算法可以用于识别手写数字。
首先,
将每个数字的像素表示为特征向量,然后将这些特征向量存储在一个数据集中。
当新的手写数字出现时,k近邻算法可以找到与它最相似的数字,并将其标记为该数字。
2. 电影推荐系统:k近邻算法可以用于推荐电影。
首先,将每
个用户评价的电影视为特征向量,并将这些向量存储在一个数据集中。
当一个用户需要推荐电影时,k近邻算法可以找到与该用户最相似的其他用户,并将这些用户评价过的电影推荐给该用户。
3. 人脸识别:k近邻算法可以用于人脸识别。
首先,将每张人
脸的像素表示为特征向量,并将这些向量存储在一个数据集中。
当一张新的人脸出现时,k近邻算法可以找到与它最相似的已知人脸,并将其标记为该人。
4. 疾病诊断:k近邻算法可以用于疾病诊断。
首先,将每个病
人的病情描述为特征向量,并将这些向量存储在一个数据集中。
当一个新的病人出现时,k近邻算法可以找到与他最相似的已知病人,并根据这些病人的病情来预测该病人的疾病。
- 1 -。
k近邻算法以及实例
【机器学习】k-近邻算法以及算法实例时间 2015-01-26 14:31:00 博客园-原创精华区原文/jtianwen2014/p/4249003.html主题算法数据挖掘机器学习中常常要用到分类算法,在诸多的分类算法中有一种算法名为k-近邻算法,也称为kNN算法。
一、kNN算法的工作原理二、适用情况三、算法实例及讲解---1.收集数据---2.准备数据---3.设计算法分析数据---4.测试算法一、kNN算法的工作原理官方解释:存在一个样本数据集,也称作训练样本集,并且样本中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系,输入没有标签的新数据后,将新数据的每个特征与样本集中的数据对应的特征进行比较,然后算法提取样本集中特征最相似的数据(最近邻)的分类标签。
一般来说,我们只选择样本集中前k个最相似的数据,这就是k-近邻算法中k的出处,通常k是不大于20的整数,最后,选择k个最相似的数据中出现次数最多的分类,作为新数据的分类。
我的理解:k-近邻算法就是根据“新数据的分类取决于它的邻居”进行的,比如邻居中大多数都是退伍军人,那么这个人也极有可能是退伍军人。
而算法的目的就是先找出它的邻居,然后分析这几位邻居大多数的分类,极有可能就是它本省的分类。
二、适用情况优点:精度高,对异常数据不敏感(你的类别是由邻居中的大多数决定的,一个异常邻居并不能影响太大),无数据输入假定;缺点:计算发杂度高(需要计算新的数据点与样本集中每个数据的“距离”,以判断是否是前k个邻居),空间复杂度高(巨大的矩阵);适用数据范围:数值型(目标变量可以从无限的数值集合中取值)和标称型(目标变量只有在有限目标集中取值)。
三、算法实例及讲解例子中的案例摘《机器学习实战》一书中的,代码例子是用python编写的(需要matplotlib和numpy库),不过重在算法,只要算法明白了,用其他语言都是可以写出来的:海伦一直使用在线约会网站寻找合适自己的约会对象。
K近邻算法的实战案例
K近邻算法的实战案例K近邻算法是一种常用的机器学习算法,它的原理是基于样本之间的距离来进行分类或回归。
K近邻算法在实际应用中的表现也相当优秀,本文将介绍一些K近邻算法的实战案例,并探究它们所涵盖的一些应用领域。
1. 电影推荐系统电影推荐系统是一种广泛应用K近邻算法的领域,常常采用协同过滤算法对用户评分数据进行分析,以便推荐用户可能喜欢的电影。
其中一个具体的实现方式是根据用户已经评分的电影数据,找到和用户兴趣相似的其他用户,根据这些相似用户的评分数据和用户之前的评分进行推荐。
2. 交通拥堵预测K近邻算法也可以应用于交通拥堵预测中。
该算法可以依据历史交通数据中的车流量、时间、天气等因素,预测未来某个时刻某个路段的拥堵程度。
例如,在城市中,交通的拥堵情况对于公交车的到站时间的影响程度就是不一样的,因此利用K近邻算法进行公交车到站时间的预测也是很有意义的。
3. 图像识别K近邻算法在图像识别中也非常常见。
常常利用该算法识别比较相似的图像,并进行分类。
具体实现的步骤是通过对已经被标注好的图像进行拆分和计算像素值之间的距离,然后现有样本和新样本之间的距离进行比较,以最近邻的值来进行分类。
4. 健康检查K近邻算法在医疗领域也有非常广泛的应用。
例如,通过测量某些生物指标,利用K近邻算法来预测病人是否患有某种疾病。
对于未来的健康检查结果,可以通过K近邻算法进行预测,并预测可能的结果,为针对性的治疗做出准备。
总结K近邻算法是非常常用的算法,在许多不同的领域都有广泛的应用。
在实际应用中,不同的领域对K近邻算法的实现方式也有所不同。
例如,在电影推荐系统中,使用协同过滤算法。
在健康检查中,需要测量生物指标。
在图像识别中,需要拆分像素并计算距离。
但通常的实现方式都是利用K近邻算法来为我们提供更精确的预测和分类结果。
【机器学习】一文搞懂K近邻算法(KNN),附带多个实现案例
【机器学习】⼀⽂搞懂K近邻算法(KNN),附带多个实现案例【机器学习】⼀⽂搞懂K近邻算法(KNN),附带多个实现案例⼀、KNN回顾kk k 近邻学习是⼀种常⽤的监督学习⽅法,⽐如:判断⼀个⼈的⼈品,只需要观察与他来往最密切的⼏个⼈的⼈品好坏就可以得出,即“近朱者⾚,近墨者⿊”。
⼆、KNN三要素1、K值的选择对于K值的选择,⼀般根据样本分布选择⼀个较⼩的值,然后通过交叉验证来选择⼀个⽐较合适的最终值;当选择⽐较⼩的K值的时候,表⽰使⽤较⼩领域中的样本进⾏预测,训练误差会减⼩,但是会导致模型变得复杂,容易导致过拟合;当选择较⼤的K值的时候,表⽰使⽤较⼤领域中的样本进⾏预测,训练误差会增⼤,同时会使模型变得简单,容易导致⽋拟合;2、距离度量⼀般使⽤欧⼏⾥德距离关于距离度量,还有其他⽅式3、决策规则KNNKNN KNN在做回归和分类的主要区别在于最后做预测时的决策⽅式不同:(1)分类预测规则:⼀般采⽤多数表决法或者加权多数表决法假设图中 “?”表⽰待预测样本,红⾊圆表⽰⼀类,蓝⾊⽅块表⽰⼀类,2和3表⽰到待预测样本的距离1. 多数表决法:2. 加权多数表决法:(2)回归预测规则:⼀般采⽤平均值法或者加权平均值法假设上图中的2和3表⽰邻近样本的⽬标属性值(标签值),此时没有类别,只有属性值1. 平均值法1. 加权平均值法图中,双箭头线上的数表⽰到待预测样本的距离三、⼿写kk k近邻算法实现kNN分类算法的伪代码:对未知类别属性的数据集中的每个点依次执⾏⼀下操作:(1)计算已知类别数据集中的点与当前点之间的距离(2)按照距离递增次序排序(3)选取与当前点距离最⼩的k个点(4)确定前k个点所在类别的出现频数(5)返回当前k个点出现频数最⾼的类别作为当前点的预测分类欧⽒距离公式:d=∑mi=1(xi−yi)2−−−−−−−−−−−−√d = \sqrt{\sum_{i=1}^m(x_i - y_i)^2}d=i=1∑m(xi−yi)2例如求点(1,0,0,1)(1,0,0,1)(1,0,0,1)和(7,6,9,4)(7,6,9,4)(7,6,9,4)之间的距离:(7−1)2+(6−0)2+(9−0)2+(4−1)2−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−√\sqrt{(7-1)^2+(6-0)^2+(9-0)^2+(4-1)^2}(7−1)2+(6−0)2+(9−0)2+(4−1)2以上算法的实现是⽤于分类的,决策规则使⽤了多数表决法;此算法通过改变决策规则,同样可以⽤于回归。
K-近邻算法实例
K-近邻算法实例⼀、鸢尾花种类预测数据集分布load和fetch返回的数据类型datasets.base.Bunch(字典格式)1. data:特征数据数组,是 [n_samples * n_features] 的⼆维 numpy.ndarray 数组2. target:标签数组,是 n_samples 的⼀维 numpy.ndarray 数组3. DESCR:数据描述4. feature_names:特征名,新闻数据,⼿写数字、回归数据集没有5. target_names:标签名数据集的划分训练数据:⽤于训练,构建模型测试数据:在模型检验时使⽤,⽤于评估模型是否有效训练集:70% 80% 75%测试集:30% 20% 25%数据集划分api1. x 数据集的特征值2. y 数据集的标签值3. test_size 测试集的⼤⼩,⼀般为float4. random_state 随机数种⼦,不同的种⼦会造成不同的随机采样结果。
相同的种⼦采样结果相同。
5. return 测试集特征训练集特征值值,训练标签,测试标签(默认随机取)# 内嵌绘图import seaborn as snsimport matplotlib.pyplot as pltimport pandas as pdfrom pylab import mpl# 设置显⽰中⽂字体mpl.rcParams["font.sans-serif"] = ["SimHei"]from sklearn.datasets import load_iris,fetch_20newsgroupsfrom sklearn.model_selection import train_test_split# 数据集获取# ⼩数据集获取iris = load_iris()# print("鸢尾花数据集的返回值:\n", iris)# 返回值是⼀个继承⾃字典的Bench# print("鸢尾花的特征值:\n", iris["data"])# print("鸢尾花的⽬标值:\n", iris.target)# print("鸢尾花特征的名字:\n", iris.feature_names)# print("鸢尾花⽬标值的名字:\n", iris.target_names)# print("鸢尾花的描述:\n", iris.DESCR)# Seaborn 是基于 Matplotlib 核⼼库进⾏了更⾼级的 API 封装,可以让你轻松地画出更漂亮的图形。
机器学习实例---1.1、k-近邻算法(简单k-nn)
机器学习实例---1.1、k-近邻算法(简单k-nn)机器学习实例---1.1、k-近邻算法(简单k-nn)⼀、总结⼀句话总结:> 【取最邻近的分类标签】:算法提取样本最相似数据(最近邻)的分类标签> 【k的出处】:⼀般来说,我们只选择样本数据集中前k个最相似的数据,这就是k-近邻算法中k的出处> 【k-近邻算法实例】:⽐如,现在我这个k值取3,那么在电影例⼦中,按距离依次排序的三个点分别是动作⽚(108,5)、动作⽚(115,8)、爱情⽚(5,89)。
【在这三个点中,动作⽚出现的频率为三分之⼆,爱情⽚出现的频率为三分之⼀】,所以该红⾊圆点标记的电影为动作⽚。
这个判别过程就是k-近邻算法。
1、k-近邻算法距离度量?> ⽤欧⽒距离就好:$$| A B | = \sqrt { ( x _ { 1 } - x _ { 2 } ) ^ { 2 } + ( y _ { 1 } - y _ { 2 } ) ^ { 2 } }$$> 例如:(101,20)->动作⽚(108,5)的距离约为16.552、简单的k-近邻算法步骤?> 1、【计算距离】:计算已知类别数据集中的点与当前点之间的距离;> 2、【距离排序】:按照距离递增次序排序;> 3、【选k个点】:选取与当前点【距离最⼩】的k个点;> 4、【确定k个点的类别】:确定前k个点所在类别的出现频率;返回前k个点所出现频率最⾼的类别作为当前点的预测分类。
3、k-邻近算法不具有显式的学习过程?> 【没进⾏数据训练】:k-近邻算法没有进⾏数据的训练,【直接使⽤未知的数据与已知的数据进⾏⽐较,得到结果】。
因此,可以说k-邻近算法不具有显式的学习过程。
4、完整的k-近邻算法流程?> 1、【收集与准备数据】:可以使⽤爬⾍进⾏数据的收集,也可以使⽤第三⽅提供的免费或收费的数据。
⼀般来讲,数据放在txt⽂本⽂件中,按照⼀定的格式进⾏存储,便于解析及处理。
k近邻算法水果案例
k近邻算法水果案例k近邻算法是一种常用的分类算法,其基本思想是通过计算待分类样本与训练样本之间的距离,选取距离最近的k个样本作为邻居,根据邻居的标签来确定待分类样本的类别。
在这里,我们以水果分类为例,介绍k近邻算法的应用。
1. 数据收集:首先,我们需要收集一些水果的特征数据,包括颜色、形状、重量等特征。
同时,还需要为每个水果标注其对应的类别,如苹果、橙子、香蕉等。
2. 数据预处理:在进行分类之前,我们需要对数据进行预处理,包括数据清洗、缺失值处理、特征选择等。
例如,如果有些样本的特征值缺失,我们可以使用均值或中值进行填充;如果某个特征对分类结果影响较小,我们可以将其剔除。
3. 特征工程:为了提高分类的准确性,我们可以进行一些特征工程的处理。
例如,我们可以将颜色特征转化为颜色的HSV值,以增加颜色特征的区分度;还可以将形状特征转化为轮廓的特征向量,以增加形状特征的准确性。
4. 训练集和测试集划分:为了评估分类算法的准确性,我们需要将数据集划分为训练集和测试集。
通常,将数据集的70%作为训练集,30%作为测试集。
5. 特征标准化:由于不同特征的取值范围可能不同,为了保证各个特征对分类的贡献相同,我们需要对特征进行标准化处理。
常用的方法有Z-score标准化和Min-Max标准化。
6. 计算距离:在k近邻算法中,我们需要计算待分类样本与训练样本之间的距离。
常用的距离计算方法有欧氏距离、曼哈顿距离和余弦相似度等。
7. 选择k值:k值的选择对于分类结果的准确性有着重要的影响。
一般来说,较小的k值容易受到噪声的影响,较大的k值容易忽略样本之间的细节。
通常,我们可以通过交叉验证的方法来选择合适的k值。
8. 进行分类:选取距离最近的k个样本作为邻居后,我们可以根据邻居的标签来确定待分类样本的类别。
通常采用多数表决的方式,即将邻居中出现最多次数的类别作为待分类样本的类别。
9. 评估分类准确性:为了评估分类算法的准确性,我们可以计算分类的准确率、精确率、召回率和F1值等指标。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
K近邻分类数据模拟和实例分析
3.1 数据模拟
用MATLAB随机生成150组数据,类别为三类,编程如下
# 程序1:
A1=rand(50,2);
hold on
plot(A1(:,1),A1(:,2),'.')
A2=rand(50,2)+0.75;
hold on
plot(A2(:,1),A2(:,2),'.')
hold on
A3=rand(50,2)+1.5;
plot(A3(:,1),A3(:,2),'.')
再用k近邻分类算法对这150组数据进行分类,取k=15近邻,程序如下# 程序 2:
clear all
clc
y=importdata('C:\Users\adm\Desktop\test.txt');
p=y(:,2:3);
p=p';
Add=zeros(150,1);
Add(1:50,:)=ones(50,1);
Add(51:100,:)=2*ones(50,1);
Add(101:150,:)=3*ones(50,1);
figure(1),plot(y(:,1),Add,'g.');
hold on
grid on;
count=0;
for i=1:3
for j=1:50
for k=1:150
distance(k)=mse(p(:,k)-p(:,(i-1)*50+j));%保存每个向量与所有训练样本之间的距离
end
[d1 index1]=sort(distance);%对距离distance向量进行从小到大的排序
num=[0 0 0];
for m=1:20 % 考察num,存放的是排序后distance前20个属于每一类别的个数
if index1(m)<=50
num(1)=num(1)+1;
elseif index1(m)<=100
num(2)=num(2)+1;
else
num(3)=num(3)+1;
end
end
[d2 class]=max(num);%属于哪类的个数最多,就属于哪类,class 即就是该向量所属的类别
if i==class
count=count+1;
end
A((i-1)*50+j)=class;%存放判断的结果
end
end
count
rate=count/150
figure(2),plot(y(:,1),A,'r.');grid on;%画图分类
程序运行后得到
count =143 rate =0.9533
图一模拟数据原始分类
图2 K近邻方法得到的分类
实验结果分析
从图像和运行结果均可以看出,对上述模拟数据用取k=15的k近邻算法作
出的分类正确率为95.33%,分类效果不错,符合预期。
改变k值,分别取k=1,5,10,15,20,30,40,60做测试,发现k取1的取值对分类结果没有明显的规律,当k=1时,即为最近邻的特殊情况,此时分类和原分类吻合,当k从1开始逐渐增大时,分类效果呈现起伏,这说明k值得选取对分类结果有一定的影响,程序执行如下表。
表2 Iris数据集分类效果
K值正确率错误
1 1 0
5 96% 4%
10 94.67% 5.33%
15 95.33% 4.67%
20 96.67% 3.33%
30 96% 4%
40 95.33% 4.67%
60 94.67% 5.33%
3.2 实例分析
本文选取了著名的Iris数据集,Iris数据集共150组,有四个特征,分别是花萼和花瓣的长度和宽度,类别也是三类,取k=20,对前文程序代码稍作修改如下。
# 程序 3:
clear all
clc
y=importdata('C:\Users\adm\Desktop\test.txt');
p=y(:,2:5);
p=p';
Add=zeros(150,1);
Add(1:50,:)=ones(50,1);
Add(51:100,:)=2*ones(50,1);
Add(101:150,:)=3*ones(50,1);
figure(1),plot(y(:,1),Add,'g.');
hold on
grid on;
count=0;
for i=1:3
for j=1:50
for k=1:150
distance(k)=mse(p(:,k)-p(:,(i-1)*50+j));%保存每个向量与所有训练样本之间的距离
end
[d1 index1]=sort(distance);%对距离distance向量进行从小到大的排序
num=[0 0 0];
for m=1:20 % 考察num,存放的是排序后distance前20个属于每一类别的个数
if index1(m)<=50
num(1)=num(1)+1;
elseif index1(m)<=100
num(2)=num(2)+1;
else
num(3)=num(3)+1;
end
end
[d2 class]=max(num);% 属于哪类的个数最多,就属于哪类,class 即就是该向量所属的类别
if i==class
count=count+1;
end
A((i-1)*50+j)=class;%存放判断的结果
end
end
count
rate=count/150
figure(2),plot(y(:,1),A,'r.');grid on;%画图分类
程序执行后得到以下结果:
count =147 rate =0.9800
图3 原始数据的分类图像
图4 K近邻分类算法所得到的分类图像实验结果分析
上述程序运行后的结果表明k取20时对Iris数据集具有较好的分类效果,从某种意义上说,k近邻算法对花的分类可以给出一定的借鉴意义。
改变k值后,分别取k=4,6,8,10,12,14,16,18,20,22,24,30时,发现对于Iris 数据集k取8-22之间的值最为合适,分类正确率稳定,当k小于8或是大于22时,分类效果下降。
执行程序得到的结果如下表。
表2 分类正确率
K值正确率错误率
4 96% 4%
6 97.33% 2.67%
8 98% 2%
10 98% 2%
12 98% 2%
14 98% 2%
16 98% 2%
18 98% 2%
20 98% 2%
22 98% 2%
24 97.33% 2.67%
30 95.33% 4.67%。