Python数据分析之双色球基于线性回归算法预测下期中奖结果示例


Posted in Python onFebruary 08, 2018

本文实例讲述了Python数据分析之双色球基于线性回归算法预测下期中奖结果。分享给大家供大家参考,具体如下:

前面讲述了关于双色球的各种算法,这里将进行下期双色球号码的预测,想想有些小激动啊。

代码中使用了线性回归算法,这个场景使用这个算法,预测效果一般,各位可以考虑使用其他算法尝试结果。

发现之前有很多代码都是重复的工作,为了让代码看的更优雅,定义了函数,去调用,顿时高大上了

#!/usr/bin/python
# -*- coding:UTF-8 -*-
#导入需要的包
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import operator
from sklearn import datasets,linear_model
from sklearn.linear_model import LogisticRegression
#读取文件
df = pd.read_table('newdata.txt',header=None,sep=',')
#读取日期
tdate = sorted(df.loc[:,0])
#将以列项为数据,将球号码取出,写入到csv文件中,并取50行数据
# Function to red number to csv file
def RedToCsv(h_num,num,csv_name):
 h_num = df.loc[:,num:num].values
 h_num = h_num[50::-1]
 renum2 = pd.DataFrame(h_num)
 renum2.to_csv(csv_name,header=None)
 fp = file(csv_name)
 s = fp.read()
 fp.close()
 a = s.split('\n')
 a.insert(0, 'numid,number')
 s = '\n'.join(a)
 fp = file(csv_name, 'w')
 fp.write(s)
 fp.close()
#调用取号码函数
# create file
RedToCsv('red1',1,'rednum1data.csv')
RedToCsv('red2',2,'rednum2data.csv')
RedToCsv('red3',3,'rednum3data.csv')
RedToCsv('red4',4,'rednum4data.csv')
RedToCsv('red5',5,'rednum5data.csv')
RedToCsv('red6',6,'rednum6data.csv')
RedToCsv('blue1',7,'bluenumdata.csv')
#获取数据,X_parameter为numid数据,Y_parameter为number数据
# Function to get data
def get_data(file_name):
 data = pd.read_csv(file_name)
 X_parameter = []
 Y_parameter = []
 for single_square_feet ,single_price_value in zip(data['numid'],data['number']):
  X_parameter.append([float(single_square_feet)])
  Y_parameter.append(float(single_price_value))
 return X_parameter,Y_parameter
#训练线性模型
# Function for Fitting our data to Linear model
def linear_model_main(X_parameters,Y_parameters,predict_value):
 # Create linear regression object
 regr = linear_model.LinearRegression()
 #regr = LogisticRegression()
 regr.fit(X_parameters, Y_parameters)
 predict_outcome = regr.predict(predict_value)
 predictions = {}
 predictions['intercept'] = regr.intercept_
 predictions['coefficient'] = regr.coef_
 predictions['predicted_value'] = predict_outcome
 return predictions
#获取预测结果函数
def get_predicted_num(inputfile,num):
 X,Y = get_data(inputfile)
 predictvalue = 51
 result = linear_model_main(X,Y,predictvalue)
 print "num "+ str(num) +" Intercept value " , result['intercept']
 print "num "+ str(num) +" coefficient" , result['coefficient']
 print "num "+ str(num) +" Predicted value: ",result['predicted_value']
#调用函数分别预测红球、蓝球
get_predicted_num('rednum1data.csv',1)
get_predicted_num('rednum2data.csv',2)
get_predicted_num('rednum3data.csv',3)
get_predicted_num('rednum4data.csv',4)
get_predicted_num('rednum5data.csv',5)
get_predicted_num('rednum6data.csv',6)
get_predicted_num('bluenumdata.csv',1)
# 获取X,Y数据预测结果
# X,Y = get_data('rednum1data.csv')
# predictvalue = 21
# result = linear_model_main(X,Y,predictvalue)
# print "red num 1 Intercept value " , result['intercept']
# print "red num 1 coefficient" , result['coefficient']
# print "red num 1 Predicted value: ",result['predicted_value']
# Function to show the resutls of linear fit model
def show_linear_line(X_parameters,Y_parameters):
 # Create linear regression object
 regr = linear_model.LinearRegression()
 #regr = LogisticRegression()
 regr.fit(X_parameters, Y_parameters)
 plt.figure(figsize=(12,6),dpi=80)
 plt.legend(loc='best')
 plt.scatter(X_parameters,Y_parameters,color='blue')
 plt.plot(X_parameters,regr.predict(X_parameters),color='red',linewidth=4)
 plt.xticks(())
 plt.yticks(())
 plt.show()
#显示模型图像,如果需要画图,将“获取X,Y数据预测结果”这块注释去掉,“调用函数分别预测红球、蓝球”这块代码注释下
# show_linear_line(X,Y)

画图结果:

Python数据分析之双色球基于线性回归算法预测下期中奖结果示例

预测2016-05-15开奖结果:

实际开奖结果:05 06 10 16 22 26  11

以下为预测值:

#取5个数,计算的结果
num 1 Intercept value 5.66666666667
num 1 coefficient [-0.6]
num 1 Predicted value: [ 2.06666667]
num 2 Intercept value 7.33333333333
num 2 coefficient [ 0.2]
num 2 Predicted value: [ 8.53333333]
num 3 Intercept value 14.619047619
num 3 coefficient [-0.51428571]
num 3 Predicted value: [ 11.53333333]
num 4 Intercept value 17.7619047619
num 4 coefficient [-0.37142857]
num 4 Predicted value: [ 15.53333333]
num 5 Intercept value 21.7142857143
num 5 coefficient [ 1.11428571]
num 5 Predicted value: [ 28.4]
num 6 Intercept value 28.5238095238
num 6 coefficient [ 0.65714286]
num 6 Predicted value: [ 32.46666667]
num 1 Intercept value 9.57142857143
num 1 coefficient [-0.82857143]
num 1 Predicted value: [ 4.6]

四舍五入结果:

2 9 12 16 28 33 5

#取12个数,计算的结果四舍五入:
3 7 12 15 24 30 7

#取15个数,计算的结果四舍五入:
4 7 13 15 25 31 7

#取18个数,计算的结果四舍五入:
4 8 13 16 23 31 8

#取20个数,计算的结果四舍五入:
4 7 12 22 24 27 10

#取25个数,计算的结果四舍五入:
7 8 13 17 24 30 6

#取50个数,计算的结果四舍五入:
4 10 14 18 23 29 8

#取100个数,计算的结果四舍五入:
5 11 15 19 24 29 8

#取500个数,计算的结果四舍五入:
5 10 15 20 24 29 9

#取1000个数,计算的结果四舍五入:
5 10 14 19 24 29 9

#取1939个数,计算的结果四舍五入:
5 10 14 19 24 29 9

看来预测中奖真是有些难度,随机性太高,双色球预测案例,只是为了让入门数据分析的朋友有些思路,要想中大奖还是有难度的,多做好事善事多积德行善吧。

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python的dict,set,list,tuple应用详解
Jul 24 Python
python的tkinter布局之简单的聊天窗口实现方法
Sep 03 Python
跟老齐学Python之关于类的初步认识
Oct 11 Python
Linux下将Python的Django项目部署到Apache服务器
Dec 24 Python
python opencv实现任意角度的透视变换实例代码
Jan 12 Python
Python File readlines() 使用方法
Mar 19 Python
Python中应该使用%还是format来格式化字符串
Sep 25 Python
Python一句代码实现找出所有水仙花数的方法
Nov 13 Python
python配置grpc环境
Jan 01 Python
numpy库与pandas库axis=0,axis= 1轴的用法详解
May 27 Python
Django缓存系统实现过程解析
Aug 02 Python
Python 进程操作之进程间通过队列共享数据,队列Queue简单示例
Oct 11 Python
Python编程argparse入门浅析
Feb 07 #Python
PyQt5主窗口动态加载Widget实例代码
Feb 07 #Python
学习python中matplotlib绘图设置坐标轴刻度、文本
Feb 07 #Python
PyQt5打开文件对话框QFileDialog实例代码
Feb 07 #Python
python OpenCV学习笔记直方图反向投影的实现
Feb 07 #Python
Python实现上下班抢个顺风单脚本
Feb 07 #Python
Python SqlAlchemy动态添加数据表字段实例解析
Feb 07 #Python
You might like
php array_walk() 数组函数
2011/07/12 PHP
PHP内置的Math函数效率测试
2014/12/01 PHP
PHP基于文件存储实现缓存的方法
2015/07/20 PHP
PHP模板引擎Smarty内建函数详解
2016/04/11 PHP
php array_reverse 以相反的顺序返回数组实例代码
2017/04/11 PHP
PHP 进度条函数的简单实例
2017/09/19 PHP
在Javascript中定义对象类别
2006/12/22 Javascript
用js统计用户下载网页所需时间的脚本
2008/10/15 Javascript
js 动态选中下拉框
2009/11/26 Javascript
JavaScript 模拟用户单击事件
2009/12/31 Javascript
BOM与DOM的区别分析
2010/10/26 Javascript
extjs 时间范围选择自动判断的实现代码
2014/06/24 Javascript
JavaScript中的原型链prototype介绍
2014/12/30 Javascript
原生JavaScript实现动态省市县三级联动下拉框菜单实例代码
2016/02/03 Javascript
JS函数定义方式的区别介绍
2016/03/22 Javascript
微信小程序实现图片懒加载的示例代码
2017/12/13 Javascript
JavaScript实现网页tab栏效果制作
2020/11/20 Javascript
[03:42]2014DOTA2西雅图国际邀请赛 Navi战队巡礼
2014/07/07 DOTA
Python实现在线程里运行scrapy的方法
2015/04/07 Python
理解Python中的类与实例
2015/04/27 Python
Python3利用SMTP协议发送E-mail电子邮件的方法
2017/09/30 Python
Python微信公众号开发平台
2018/01/25 Python
pandas 把数据写入txt文件每行固定写入一定数量的值方法
2018/12/28 Python
使用Python控制摄像头拍照并发邮件
2019/04/23 Python
python实现可变变量名方法详解
2019/07/01 Python
python实现简单坦克大战
2020/03/27 Python
python 窃取摄像头照片的实现示例
2021/01/08 Python
详解HTML5 Canvas绘制时指定颜色与透明度的方法
2016/03/25 HTML / CSS
Qoo10台湾站:亚洲领先的在线市场
2018/05/15 全球购物
银行见习期自我鉴定
2014/01/29 职场文书
2015年元旦演讲稿
2014/09/12 职场文书
产品陈列协议书(标准版)
2014/09/17 职场文书
企业三严三实学习心得体会
2014/10/13 职场文书
2014年销售部工作总结
2014/12/01 职场文书
优秀教师主要事迹材料
2015/11/04 职场文书
Nginx配置文件详解以及优化建议指南
2021/09/15 Servers