机器学习实战——第二章之改进约会网站的配对效果

三种类型:不喜欢的-1,魅力一般的-2,极具魅力的-3。

样本特征:每年获得的飞行常客里程数,玩视频游戏所耗时间百分比,每周消费的冰淇淋公升数。

 1 from numpy import *
 2 import matplotlib
 3 import matplotlib.pyplot as plt
 4
 5 ‘‘‘
 6 输入文本文件名字符串,输出训练样本矩阵和类标签向量
 7 ‘‘‘
 8 def file2matrix(filename):
 9     fr = open(filename)
10     arrayOLines = fr.readlines()  #一次读取整个文件,将文件内容分析成一个行的列表
11     numberOfLines = len(arrayOLines)
12     returnMat = zeros((numberOfLines, 3))
13     classLabelVector = []
14     index = 0
15     for line in arrayOLines:
16         line = line.strip()        #截取掉所有的回车字符
17         listFromLine = line.split(‘\t‘)                #将line分割成一个元素列表
18         returnMat[index, :] = listFromLine[0:3]        #选取前3个元素存储到特征矩阵中
19         classLabelVector.append(int(listFromLine[-1]))        #选取最后一个元素进行存储
20         index += 1
21     return returnMat, classLabelVector
22
23 if __name__ == ‘__main__‘:
24     datingDataMat, datingLabels = file2matrix(‘datingTestSet2.txt‘)
25     fig = plt.figure()
26     ax = fig.add_subplot(111)
27     ax.scatter(datingDataMat[:,0],datingDataMat[:,1], 20.0*array(datingLabels), 15.0*array(datingLabels))
28     plt.show()


>>> import numpy as np
>>> np.zeros((3,2))  #3行2列的零矩阵
array([[ 0.,  0.],
       [ 0.,  0.],
       [ 0.,  0.]])
ax.scatter(datingDataMat[:,0],datingDataMat[:,1], 20.0*array(datingLabels), 15.0*array(datingLabels))#scatter(x,y,大小,颜色)

‘‘‘
归一化特征值
newValue = (oldValue - min) / (max - min)
‘‘‘
def autoNorm(dataSet):
    minVals = dataSet.min(0)
    maxVals = dataSet.max(0)
    ranges = maxVals - minVals
    normDataSet = zeros(shape(dataSet))
    m = dataSet.shape[0]
    normDataSet = dataSet - tile(minVals, (m, 1))    #用tile函数将变量内容复制成输入矩阵同样大小的额矩阵
    normDataSet = normDataSet / tile(ranges, (m, 1))
    return normDataSet, ranges, minVals

if __name__ == ‘__main__‘:
    datingDataMat, datingLabels = file2matrix(‘datingTestSet2.txt‘)
    normMat, ranges, minVals = autoNorm(datingDataMat)
    fig = plt.figure()
    ax = fig.add_subplot(111)
    ax.scatter(normMat[:,0],normMat[:,1], 30.0*array(datingLabels), 100.0*array(datingLabels))
    plt.xlabel(u‘每年获得的飞行常客里程数‘)
    plt.ylabel(u‘玩视频游戏所耗时间百分比‘)
    plt.show()


 1 ‘‘‘
 2 测试代码。
 3 评估算法的正确率:提供已有样本的90%作为训练样本,而使用其余的10%数据去测试分类器。
 4 错误率 = 错误结果的次数 / 测试数据的总数
 5 ‘‘‘
 6 def datingClassTest():
 7     hoRatio = 0.10
 8     datingDataMat, datingLabels = file2matrix(‘datingTestSet2.txt‘)
 9     normMat, ranges, minVals = autoNorm(datingDataMat)
10     m = normMat.shape[0]
11     numTestVecs = int(m * hoRatio)        #10%的样本数用于测试
12     errorCount = 0
13     for i in range(numTestVecs):
14         classifierResult = classify0(normMat[i,:], normMat[numTestVecs:m,:], 15             datingLabels[numTestVecs:m], 20)
16         print "the classifier came back with: %d, the real answer is: %d" 17             % (classifierResult, datingLabels[i])
18         if (classifierResult != datingLabels[i]): errorCount += 1.0
19     print "the total error rate is: %f" % (errorCount / float(numTestVecs))  #输出错误率
20
21 if __name__ == ‘__main__‘:
22     datingClassTest()

 1 ‘‘‘
 2 输入某个人的信息,给出对对方喜欢程度的预测值
 3 ‘‘‘
 4 def classifyPerson():
 5     resultList = [‘not at all‘, ‘in small doses‘, ‘in large doses‘]
 6     percentTats = float(raw_input("percentage of time spend playing video games?"))
 7     ffMiles = float(raw_input("frequent flier miles earned per year?"))
 8     iceCream = float(raw_input("liters of ice cream consumed per year?"))
 9     datingDataMat, datingLabels = file2matrix(‘datingTestSet2.txt‘)
10     normMat, ranges, minVals = autoNorm(datingDataMat)
11     inArr = array([ffMiles, percentTats, iceCream])
12     classifierResult = classify0((inArr - minVals) / ranges, normMat, datingLabels, 3)
13     print "You will probably like this person: ", resultList[classifierResult - 1]
14
15 if __name__ == ‘__main__‘:
16     classifyPerson()

测试:

1 percentage of time spend playing video games?10
2 frequent flier miles earned per year?10000
3 liters of ice cream consumed per year?0.5
4 You will probably like this person:  in small doses
时间: 2024-12-22 19:34:20

机器学习实战——第二章之改进约会网站的配对效果的相关文章

机器学习实战笔记-K近邻算法2(改进约会网站的配对效果)

案例二.:使用K-近邻算法改进约会网站的配对效果 案例分析: 海伦收集的数据集有三类特征,分别是每年获得的飞行常客里程数.玩视频游戏所耗时间百分比. 每周消费的冰淇淋公升数.我们需要将新数据的每个新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数据(最近邻)的分类标签.一般来说,我们只选择样本数据集中前k个最相似的数据,这就是k-近邻算法中k的出处,通常k是不大于20的整数.最后,选择k个最相似数据中出现次数最多的分类,作为新数据的分类. 流程:在约会网站上使用K

机器学习实战1-2 KNN改进约会网站的配对效果 datingTestSet2.txt 下载方法

今天读<机器学习实战>读到了使用k-临近算法改进约会网站的配对效果,道理我都懂,但是看到代码里面的数据样本集 datingTestSet2.txt 有点懵,这个样本集在哪里,只给了我一个文件名,没有任何内容啊. 上网百度了这个文件名,发现很多博主的博客里可以下载,我很好奇,同样是读<机器学习实战>,他们是从哪里下载的数据样本集呢?就重新读了这本书.终于在"关于本书"最后的"作者在线里面"找到了网址!就是这个,大家需要可以来这里下载. http

KNN算法项目实战——改进约会网站的配对效果

KNN项目实战--改进约会网站的配对效果 1.项目背景: 海伦女士一直使用在线约会网站寻找适合自己的约会对象.尽管约会网站会推荐不同的人选,但她并不是喜欢每一个人.经过一番总结,她发现自己交往过的人可以进行如下分类: 不喜欢的人 魅力一般的人 极具魅力的人 2.项目数据 海伦收集约会数据已经有了一段时间,她把这些数据存放在文本文件datingTestSet.txt中,每个样本数据占据一行,总共有1000行. datingTestSet.txt数据集下载 海伦收集的样本数据主要包含以下3种特征:

机器学习实战笔记——利用KNN算法改进约会网站的配对效果

一.案例背景 我的朋友海伦一直使用在线约会网站寻找合适自己的约会对象.尽管约会网站会推荐不同的人选,但她并不是喜欢每一个人.经过一番总结,她发现曾交往过三种类型的人: (1)不喜欢的人: (2)魅力一般的人: (3)极具魅力的人: 尽管发现了上述规律,但海伦依然无法将约会网站推荐的匹配对象归入恰当的分类,她觉得可以在周一到周五约会那些魅力一般的人,而周末则更喜欢与那些极具魅力的人为伴.海伦希望我们的分类软件可以更好地帮助她将匹配对象划分到确切的分类中.此外,海伦还收集了一些约会网站未曾记录的数据

《机器学习实战》之k-近邻算法(改进约会网站的配对效果)

示例背景: 我的朋友海伦一直使用在线约会网站寻找合适自己的约会对象.尽管约会网站会推荐不同的人选,但她并不是喜欢每一个人.经过一番总结,她发现曾交往过三种类型的人: (1)不喜欢的人: (2)魅力一般的人: (3)极具魅力的人: 尽管发现了上述规律,但海伦依然无法将约会网站推荐的匹配对象归入恰当的分类,她觉得可以在周一到周五约会那些魅力一般的人,而周末则更喜欢与那些极具魅力的人为伴.海伦希望我们的分类软件可以更好地帮助她将匹配对象划分到确切的分类中.此外,海伦还收集了一些约会网站未曾记录的数据信

吴裕雄--天生自然python机器学习:使用K-近邻算法改进约会网站的配对效果

在约会网站使用K-近邻算法 准备数据:从文本文件中解析数据 海伦收集约会数据巳经有了一段时间,她把这些数据存放在文本文件(1如1^及抓 比加 中,每 个样本数据占据一行,总共有1000行.海伦的样本主要包含以下3种特征: 每年获得的飞行常客里程数 玩视频游戏所耗时间百分比 每周消费的冰淇淋公升数 将文本记录到转换NumPy的解析程序 import operator from numpy import * from os import listdir def file2matrix(filenam

K-近邻算法改进约会网站的配对效果

摘自:<机器学习实战>,用python编写的(需要matplotlib和numpy库) 海伦一直使用在线约会网站寻找合适自己的约会对象.尽管约会网站会推荐不同的人选,但她没有从中找到喜欢的人.经过一番总结,她发现曾交往过三种类型的人: 1.不喜欢的人( 以下简称1 ): 2.魅力一般的人( 以下简称2 ): 3.极具魅力的人(以下简称3 ) 尽管发现了上述规律,但海伦依然无法将约会网站推荐的匹配对象归入恰当的分类.她觉得可以在周一到周五约会哪些魅力一般的人,而周末则更喜欢与那些极具魅力的人为伴

使用k-近邻算法改进约会网站的配对效果

---恢复内容开始--- < Machine Learning 机器学习实战>的确是一本学习python,掌握数据相关技能的,不可多得的好书!! 最近邻算法源码如下,给有需要的入门者学习,大神请绕道. 数字识别文件 ''' Created on Sep 16, 2010 kNN: k Nearest Neighbors Input: inX: vector to compare to existing dataset (1xN) dataSet: size m data set of know

《机器学习实战》代码实现学习一 使用K-近邻算法改进约会网站的配对效果(数据准备)

1.数据准备:从文本文件中解析数据 文本文件datingTestSet2.txt网盘地址为: https://pan.baidu.com/s/19HNwo1TSWjWhbRwsyL-itg 提取码为:mz11 约会数据由1000行,主要包含一下三种特征: 每年获得的飞行常客里程数 玩视频游戏所耗时间百分比 每周消费的冰淇淋公升数 但是在把这些特征输入到分类器之前,必须将待处理数据格式改变为分类器可以接受的格式,在kNN.py中创建名为file2matrix的函数,以此来处理输入格式问题,该函数的