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实现代码行数统计示例分享
Feb 10 Python
Python网络编程 Python套接字编程
Sep 13 Python
恢复百度云盘本地误删的文件脚本(简单方法)
Oct 21 Python
Python 运行 shell 获取输出结果的实例
Jan 07 Python
python区块及区块链的开发详解
Jul 03 Python
python连接mongodb集群方法详解
Feb 13 Python
Python Flask上下文管理机制实例解析
Mar 16 Python
Python ADF 单位根检验 如何查看结果的实现
Jun 03 Python
Keras 快速解决OOM超内存的问题
Jun 11 Python
python工具——Mimesis的简单使用教程
Jan 16 Python
pip/anaconda修改镜像源,加快python模块安装速度的操作
Mar 04 Python
python基础学习之递归函数知识总结
May 26 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一些常用的正则表达式字符的一些转换
2008/07/29 PHP
thinkphp项目部署到Linux服务器上报错“模板不存在”如何解决
2016/04/27 PHP
PHP简单计算两个时间差的方法示例
2017/06/20 PHP
php-fpm超时时间设置request_terminate_timeout资源问题分析
2019/09/27 PHP
Jquery.LazyLoad.js修正版下载,实现图片延迟加载插件
2011/03/12 Javascript
读jQuery之九 一些瑕疵说明
2011/06/21 Javascript
让浏览器DOM元素最后加载的js方法
2014/07/29 Javascript
javascript中clipboardData对象用法详解
2015/05/13 Javascript
js提示框替代系统alert,自动关闭alert对话框的实现方法
2016/11/07 Javascript
微信小程序 两种滑动方式(横向滑动,竖向滑动)详细及实例代码
2017/01/13 Javascript
socket.io学习教程之基本应用(二)
2017/04/29 Javascript
js实现鼠标跟随运动效果
2020/08/02 Javascript
JavaScript常用内置对象用法分析
2019/07/09 Javascript
JS实现随机抽选获奖者
2019/11/07 Javascript
vue v-for直接循环数字实例
2019/11/07 Javascript
nodejs实现的http、https 请求封装操作示例
2020/02/06 NodeJs
JS删除对象中某一属性案例详解
2020/09/08 Javascript
PyTorch上实现卷积神经网络CNN的方法
2018/04/28 Python
Python中实现变量赋值传递时的引用和拷贝方法
2018/04/29 Python
python中plot实现即时数据动态显示方法
2018/06/22 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
2018/07/26 Python
python绘制双Y轴折线图以及单Y轴双变量柱状图的实例
2019/07/08 Python
为什么从Python 3.6开始字典有序并效率更高
2019/07/15 Python
django 文件上传功能的相关实例代码(简单易懂)
2020/01/22 Python
Python库安装速度过慢解决方案
2020/07/14 Python
python 使用cycle构造无限循环迭代器
2020/12/02 Python
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
英国复古服装购物网站:Collectif
2019/10/30 全球购物
本科毕业生求职自荐信
2014/04/09 职场文书
社会体育专业大学生职业生涯规划书
2014/09/17 职场文书
国庆节新闻稿
2015/07/17 职场文书
入党积极分子培养联系人意见
2015/08/12 职场文书
企业反腐倡廉心得体会
2015/08/15 职场文书
2016年圣诞节活动总结范文
2016/04/01 职场文书
启动Tomcat时出现大量乱码的解决方法
2021/06/21 Java/Android
html输入两个数实现加减乘除功能
2021/07/01 HTML / CSS