kNN-预测
2021/11/16 23:40:23
本文主要是介绍kNN-预测,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
现在进行第五步,对数据进行预测
那么要做的的是从数据集里面拿出一部分作为要预测的,剩下的去比较,书上使用的是10%
# 对之前做好的kNN算法进行预测 # 首先获取之前构造好的kNN分类器、数据、规则化之后的数据 import kNN import norm
# 倒完包之后先别急,目的是从规则化的数据集里面选100个出来,用分类器进行预测,计算错误率 # 这里图简单,直接用的前100个进行预测,后面会打乱数据集进行真正的随机 labelSet = norm.labelSet norm_data = norm.norm_data random_ratio = 0.10 norm_num = len(norm_data) # 1000 predict_num = int(random_ratio * norm_num) # 100 errorNum = 0.0
然后进行预测,预测的思路是:
- 100行预测,剩下900行作为比对
- 每次取1行,然后经过分类器得出结果,再与标记的结果进行比较,看正误
- 输出结果并计算错误率
# 开始预测 for i in range(predict_num): predict_result = kNN.classifier(norm_data[i, :], norm_data[predict_num:norm_num, :], labelSet[predict_num:norm_num], 3) # print(predict_result) print("the classifier came back with:%d,the real answer is:%d " % (predict_result, labelSet[i])) if predict_result != labelSet[i]: errorNum += 1.0 print("the total error rate is:%f"%(errorNum/float(predict_num)))
然鹅,报错了
TypeError: unhashable type: 'numpy.ndarray'
这里的报错,网上找了很多,都没有解决,尝试自己一步一步解决
- 首先,在kNN文件中使用classifier是没有问题的
- 这里的错误指向的是kNN.classifier,但是检查了网上说的几种情况如变量名冲突、np.array类型都没有问题
- 那么只有可能是kNN中classifier的数据类型出了问题
- 通过报错提示的行数,将字典中的label类型从str修改为int,即可成功
修改代码如下
# kNN.py label = int(label)
再次运行predict.py
# 对之前做好的kNN算法进行预测 # 首先获取之前构造好的kNN分类器、数据、规则化之后的数据 import kNN import norm # 倒完包之后先别急,目的是从规则化的数据集里面选100个出来,用分类器进行预测,计算错误率 # 这里图简单,直接用的前100个进行预测,后面会打乱数据集进行真正的随机 labelSet = norm.labelSet norm_data = norm.norm_data random_ratio = 0.10 norm_num = len(norm_data) # 1000 predict_num = int(random_ratio * norm_num) # 100 errorNum = 0.0 # 开始预测 for i in range(predict_num): predict_result = kNN.classifier(norm_data[i, :], norm_data[predict_num:norm_num, :], labelSet[predict_num:norm_num], 3) # print(predict_result) print("the classifier came back with:%d,the real answer is:%d " % (predict_result, labelSet[i])) if predict_result != labelSet[i]: errorNum += 1.0 print("the total error rate is:%f"%(errorNum/float(predict_num)))
结果如下
the classifier came back with:3,the real answer is:3 the classifier came back with:2,the real answer is:2 the classifier came back with:1,the real answer is:1 ... the classifier came back with:3,the real answer is:1 the total error rate is:0.050000
但是,这也会带来一个问题,那就是原来kNN中的预测会报错,因为原来标签是对应的str类型
这篇关于kNN-预测的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)