《机器学习实战》程序清单2-5 约会网站预测函数

以下代码,在Sublime中跑不起来,似乎Sublime无法交互输入文字,在IDLE或控制台中可以输入。

测试结果其实也挺搞笑的,这姑娘的喜好唯一取决于每周吃多少冰淇淋,前两项输入0,第三项输入236,就是small does,输入237,就是large doses。

所以,一个不玩游戏,不是飞行常客,一周吃237升冰淇淋的人,是她最可能喜欢的人。

这是因为离[0 0 237]这个点最近的k(此处假设k=3)个点分别是:

14402 10.482619 1.694972 smallDoses

35283 6.091587 1.694641 largeDoses

56557 11.746200 1.695517 largeDoses

最终的统计结果是:{'smallDoses': 1, ' largeDoses': 2}

 largeDoses的有俩,所以结果是 largeDoses,非常喜欢

如果把K放大到1000,统计结果是:{'smallDoses': 331, 'largeDoses': 327, 'didntLike': 342}

结论是:不喜欢。

结果大相径庭

从这个统计结果来看,这个姑娘约见的人分布得还挺平均的。

 

 

其它值请各位自行测试。

def classifyPerson():
    resultList = ['not at all', 'in small doses', 'in large doses']
    percentTats = float(input("percentage of time spent playing video games?"))
    ffMiles = float(input("frequent flier miles earned per year?"))
    iceCream = float(input("liters of ice cream consumed per year?"))

    datingDataMat, datingLabels = file2matrix('datingTestSet3.txt')
    normMat, ranges, minVals = autoNorm(datingDataMat)
    inArr = array([ffMiles, percentTats, iceCream])
    classifierResult = classify0((inArr - minVals)/ranges, normMat, datingLabels, 3)
    print(classifierResult)

    print("You will probably like this person: ", resultList[int(classifierResult) - 1])

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值