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 + openpyxl处理excel2007文档思路以及心得
Jul 14 Python
Python实现根据指定端口探测服务器/模块部署的方法
Aug 25 Python
使用C语言来扩展Python程序和Zope服务器的教程
Apr 14 Python
python创建关联数组(字典)的方法
May 04 Python
Python简单实现安全开关文件的两种方式
Sep 19 Python
Python设计模式之门面模式简单示例
Jan 09 Python
在django中实现页面倒数几秒后自动跳转的例子
Aug 16 Python
Python3实现发送邮件和发送短信验证码功能
Jan 07 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
Apr 10 Python
Python如何对齐字符串
Jul 30 Python
Python常用模块函数代码汇总解析
Aug 31 Python
django中ImageField的使用详解
Dec 21 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
防止本地用户用fsockopen DDOS攻击对策
2011/11/02 PHP
PHP中比较两个字符串找出第一个不同字符位置例子
2014/04/08 PHP
简单介绍PHP的责任链编程模式
2015/08/11 PHP
基于命令行执行带参数的php脚本并取得参数的方法
2016/01/25 PHP
iis6手工创建网站后无法运行php脚本的解决方法
2017/06/08 PHP
Thinkphp极验滑动验证码实现步骤解析
2020/11/24 PHP
javaScript parseInt字符转化为数字函数使用小结
2009/11/05 Javascript
jQuery 过滤not()与filter()实例代码
2012/05/10 Javascript
Javascript的常规数组和关联数组对比小结
2012/05/24 Javascript
javascript面向对象入门基础详细介绍
2012/09/05 Javascript
js获取网页高度(详细整理)
2012/12/28 Javascript
Javascript Ajax异步读取RSS文档具体实现
2013/12/12 Javascript
jquery toolbar与网页浮动工具条具体实现代码
2014/01/12 Javascript
完美实现八种js焦点轮播图(下篇)
2020/04/20 Javascript
jquery siblings获取同辈元素用法实例分析
2016/07/25 Javascript
JS求解三元一次方程组值的方法
2017/01/03 Javascript
利用angular、react和vue实现相同的面试题组件
2018/02/19 Javascript
浅谈用Webpack路径压缩图片上传尺寸获取的问题
2018/02/22 Javascript
ES6下子组件调用父组件的方法(推荐)
2018/02/23 Javascript
webpack+vuex+axios 跨域请求数据的示例代码
2018/03/06 Javascript
微信小程序实现联动选择器
2019/02/15 Javascript
Koa从零搭建到Api实现项目的搭建方法
2019/07/30 Javascript
Vue获取页面元素的相对位置的方法示例
2020/02/05 Javascript
[01:06:12]VP vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python实现爬虫下载美女图片
2015/07/14 Python
Python语言描述最大连续子序列和
2017/12/05 Python
pycharm 解除默认unittest模式的方法
2018/11/30 Python
利用python实现对web服务器的目录探测的方法
2019/02/26 Python
python自定义时钟类、定时任务类
2021/02/22 Python
VSCode基础使用与VSCode调试python程序入门的图文教程
2020/03/30 Python
Python3创建Django项目的几种方法(3种)
2020/06/03 Python
在html5的Canvas上绘制椭圆的几种方法总结
2013/01/07 HTML / CSS
使用Html5 Stream开发实时监控系统
2020/06/02 HTML / CSS
企业车辆管理制度
2014/01/24 职场文书
暑假安全教育广播稿
2014/09/10 职场文书
拔河比赛队名及霸气口号
2015/12/24 职场文书