机器学习实战——2.2预测结果不符合预期的问题解决

在使用Python 3.6进行kNN预测时,遇到预测结果始终为'not at all'的问题。原因是test.py中的输入参数顺序与datingTestSet2.txt训练数据集顺序不一致,具体表现为飞行里程和上网时间字段顺序颠倒。修复这个问题后,程序运行正常。此外,需要注意Python 3.6中input函数替代了raw_input。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python 3.6

我把kNN作为一个模块,另外写了一个test.py来做预测

在预测过程中发现虽然程序能跑通,但是不管怎么调整输入参数,结果大概率都是“not at all”

仔细检查后发现,是在程序输入顺序和datingTestSet2.txt中作为训练的数据集的顺序不一致,

(飞行里程和上网时间的顺序颠倒了)

修改后的程序如下:

import kNN
import numpy as np
import importlib
importlib.reload(kNN)

#约会网站预测函数
#def classifyPerson()
resultList = ['not at all','in small doses','in large doses']
ffMiles = float(input("flier miles?"))                  #注意顺序!!先飞行里程,后上网时间,最后冰淇淋
percentTats = float(input("playing video game?"))
iceCream = float(input("ice cream?"))
datingDataMat,datingLabels = kNN.file2matrix('datingTestSet2.txt')
normMat, ranges, minVals = kNN.autoNorm(datingDataMat)
inArr = np.array([ffMiles,percentTats,iceCream])         #就是这里!!我之前按错误顺序粘贴了,导致预测结果不符合实际
classifierResult = kNN.classify0((inArr-minVals)/ranges,normMat,datingLabels,3)
print ("you will like this p
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值