经过三次计算,发现计算结果相差不大,所以觉得预测算法不够完善,现在还不知道如何使用其他的方式来预测,所以只能计算每次预测的误差平均值,在预测的时候加上这个误差平均值,看看效果(PS:今天4月10日预测出来的1号球居然是0····所以才想着用误差平均值来修正)。
修改的Python代码如下:
#查询误差数据 cursor.execute('select * from tb_error') errors = cursor.fetchall() red1Error = 0 red2Error = 0 red3Error = 0 red4Error = 0 red5Error = 0 red6Error = 0 blueError = 0 #将每个球误差累加 for i in errors: print i[2:9] red1Error = red1Error + i[2] red2Error = red2Error + i[3] red3Error = red3Error + i[4] red4Error = red4Error + i[5] red5Error = red5Error + i[6] red6Error = red6Error + i[7] blueError = blueError + i[8] #调用预测算法,然后加上对应球的误差平均值 pred1=int(prdct.prediction(red1)) + red1Error/len(errors) pred2=int(prdct.prediction(red2)) + red2Error/len(errors) pred3=int(prdct.prediction(red3)) + red3Error/len(errors) pred4=int(prdct.prediction(red4)) + red4Error/len(errors) pred5=int(prdct.prediction(red5)) + red5Error/len(errors) pred6=int(prdct.prediction(red6)) + red6Error/len(errors) pblue=int(prdct.prediction(blue)) + blueError/len(errors)
经过两次使用误差平均值修正预测结果的方法效果不好(可能是试验次数比较少),两次预测到的个数都降为1,正在考虑用误差平均值修正是否合理,是否在算法预测结果和误差平均值上使用加权来计算。
发现问题:拿pred2=int(prdct.prediction(red2))+red2Error/len(errors)来说,今天测试prdct.prediction(red2)的结果是2.0,将它转成int类型也就是int(prdct.prediction(red2))之后得到的结果居然变成1了,测试了几个都是出现这样的问题,转成int类型后小了1,不知道为什么。干脆就按浮点来存吧。发现这个错误的过程是我偶然把预测数字与误差平均值分开打印,发现转成int型后少了1,之后定位为在将用算法预测的浮点数字转成整型的时候数字减小了1。但奇怪的是pred1却没有问题,或许因为这次prdct.prediction(red1)本身就等于1.0。
时间: 2024-11-08 07:25:52