机器学习(七)基于KNN分类的约会网站配对改进算法

摘要:项目介绍某用户一直使用在线约会软件寻找适合自己的约会对象。尽管约会网站会推荐不同的人选但她并不是喜欢每一个人。

某APP用户一直使用在线约会软件寻找适合自己的约会对象。尽管约会网站会推荐不同的人选,但她并不是喜欢每一个人。经过一番总结,她发现曾交往过三种类型的人:

不喜欢的人(3)

魅力一般的人(2)

极具魅力的人(1)

某APP用户希望分类软件可以更好地帮助她将匹配对象划分到确切的分类中。此外还可以收集了约会软件未曾记录的数据信息,她认为这些数据更有助于匹配对象的归类。收集的部分信息如下图所示:数据集下载样本主要包含以下3种特征:

每年获得的飞行常客里程数

每周消费的冰淇淋公升数

在将上述特征数据输入到分类器之前,必须将待处理数据的格式改变为分类器可以接受的格式。

使用Matplotlib库图形化清晰地标识了三个不同的样本分类区域,具有不同爱好的人其类别区域也不同。

defdraw_pic(datingDataMat,datingLabels):"""每年获取的飞行常客里程数与每周所消费的冰淇淋公升数”构成的散点图。:paramdatingDataMat::paramdatingLabels::return:"""#中文显示乱码问题;myfont=font_manager.FontProperties(fname="/usr/share/fonts/cjkuni-uming/uming.ttc",size=12)#创建画布fig=plt.figure()ax=fig.add_subplot(111)ax.scatter(datingDataMat[:,0],datingDataMat[:,2],15*datingLabels,datingLabels)plt.xlabel("每年的飞行里程数",fontproperties=myfont)plt.ylabel("每周消费的冰淇淋公升数",fontproperties=myfont)plt.grid(alpha=0.5)plt.show()效果展示

计算样本3和样本4之间的距离:

问题:飞行常客里程数对于计算结果的影响将远远大于其他两个特征的影响

解决方式:处理不同取值范围的特征值时,通常采用的方法是将数值归一化,如将取值范围处理为0到1或者-1到1之间。

归一化公式:newValue=oldValue/max

defautoNorm(dataSet):"""归一化数值,:paramdataSet:用户提供的每行数据信息,三列;:return:normDataSet:归一化的特征信息;maxVals:每个特征数据的最大值;"""#获取每个特征数据的最大值;maxVals=dataSet.max(0)#获取样本个数;m=dataSet.shape[0]#根据公式生成归一化的特征信息;normDataSet=dataSet/np.tile(maxVals,(m,1))returnnormDataSet,maxVals4实施kNN算法对未知类别属性的数据集中的每个点依次执行以下操作,与上一个案例代码相同:(1)计算已知类别数据集中的点与当前点之间的距离;(2)按照距离递增次序排序;(3)选取与当前点距离最小的k个点;(4)确定前k个点所在类别的出现频率;(5)返回前k个点出现频率最高的类别作为当前点的预测分类。

defdatingClassTest():"""分类器针对约会网站的测试代码,获取错误率;:return:"""hoRatio=0.10datingDataMat,datingLabels=file2matrix("data/datingTestSet2")normDataSet,maxVals=autoNorm(datingDataMat)#样本个数m=normDataSet.shape[0]#测试集个数;numTestVecs=int(m*hoRatio)errorCount=0.0foriinrange(numTestVecs):classiferResult=classify(normDataSet[i,:],normDataSet[numTestVecs:m,:],datingLabels[numTestVecs:m],3)#print(classiferResult)ifclassiferResult!=datingLabels[i]:errorCount+=1print("正确结果:",datingLabels[i])print("预测结果:",classiferResult)#print("错误个数:",errorCount)returnerrorCount

THE END
1.机器学习实验二——使用k二、使用k-近邻算法改进约会网站的配对效果 流程: (1)收集数据:提供文本文件。 (2)准备数据:使用Python解析文本文件。 (3)分析数据:使用Matplotlib画二维扩散图。 (4)训练算法:此步骤不适用于k-近邻算法。 (5)测试算法:使用海伦提供的部分数据作为测试样本。 https://blog.csdn.net/LouYou_/article/details/137190713
2.pythonk邻近算法应用实例(一)改进约会网站的配对效果k邻近算法实例额(一) 改进约会网站的配对效果 应用背景: 某约会网站收集了一些数据放在datingTestSet.txt中,每个样本数据占据一行,总共有1000行。样本主要包含以下3种特征: □ 每年获得的飞行常客里程数 □ 玩视频游戏所耗时间百分比 □ 每周消费的冰淇淋公升数 https://segmentfault.com/a/1190000011266815/
3.机器学习(一)——KNN算法之约会网站匹配效果为了熟悉和掌握K近邻算法,改进约会网站的匹配策略。 【实验要求】 用KNN算法改进约会网站的配对效果。 【算法原理】 k近邻法(k-nearest neighbor, k-NN)原理:存在一个样本数据集合,也称作为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一个数据与所属分类的对应关系。输入没有标签的新数据后,将https://www.jianshu.com/p/a4fd43024370
4.KNN:最近邻算法原理python实现以及sklearn实现51CTO博客使用KNN实现约会网站配对效果改进 如下所示数据来自于某约会网站,根据每年获得的飞行常客里程数、玩视频游戏所耗时间百分比、每周消费的冰淇淋公升数三个特征对配对者进行预测,预测结果有三类,不喜欢、稍喜欢、很喜欢。 path = './data/datingTestSet.txt' https://blog.51cto.com/u_15127566/4376386
5.2021半夜好用的网站/怎么做网站使用k-近邻算法改进约会网站的配对效果 (1)准备数据:从文本文件中解析数据 ''' 将文本记录转换为Numpy的解析程序 '''deffile2matrix(filename):fr=open(filename)arrayOLines=fr.readlines()numberOfLines=len(arrayOLines)returnMat=zeros((numberOfLines,3))classLabelVector=[]index=0forlineinarrayOLines:linehttp://www.nhpp.cn/news/222211.html
6.房产中介新人培训资料7篇(全文)中国互联网络信息中心(CNNIC)在京发布《(如超低价位、特别设计等),其广告创意为中等水平,则其在三天之内大约会有50个来电来访,则其成本为4480元/个;经过测试,某网站网络广告一个月内大约有270个来电来访,其成本为222元/个,只有报纸的二十分之一。而且,随着房地产项目的不断开发,报纸上房地产广告正日渐增多,人https://www.99xueshu.com/w/file5mnmyjit.html