@本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府
本文实例讲述了Python数据分析之双色球基于线性回归算法预测下期中奖结果。分享给大家供大家参考,具体如下:
前面讲述了关于双色球的各种算法,这里将进行下期双色球号码的预测,想想有些小激动啊。
代码中使用了线性回归算法,这个场景使用这个算法,预测效果一般,各位可以考虑使用其他算法尝试结果。
发现之前有很多代码都是重复的工作,为了让代码看的更优雅,定义了函数,去调用,顿时高大上了
#!/usr/bin/python# -*- coding:UTF-8 -*-#导入需要的包import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport operatorfrom sklearn import datasets,linear_modelfrom 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 filedef RedToCsv(h_num,num,csv_name):h_num = df.loc[:,num:num].valuesh_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 fileRedToCsv('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 datadef 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 modeldef linear_model_main(X_parameters,Y_parameters,predict_value):# Create linear regression objectregr = 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_outcomereturn predictions#获取预测结果函数def get_predicted_num(inputfile,num):X,Y = get_data(inputfile)predictvalue = 51result = 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 modeldef show_linear_line(X_parameters,Y_parameters):# Create linear regression objectregr = 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)
画图结果: ![在这里插入图片描述](https://img-/21521751.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoZW5neHVuMDM=,size_16,color_FFFFFF,t_70)
预测-05-15开奖结果:
实际开奖结果:
05 06 10 16 22 26 11以下为预测值:#取5个数,计算的结果num 1 Intercept value 5.66666666667num 1 coefficient [-0.6]num 1 Predicted value: [ 2.06666667]num 2 Intercept value 7.33333333333num 2 coefficient [ 0.2]num 2 Predicted value: [ 8.53333333]num 3 Intercept value 14.619047619num 3 coefficient [-0.51428571]num 3 Predicted value: [ 11.53333333]num 4 Intercept value 17.7619047619num 4 coefficient [-0.37142857]num 4 Predicted value: [ 15.53333333]num 5 Intercept value 21.7142857143num 5 coefficient [ 1.11428571]num 5 Predicted value: [ 28.4]num 6 Intercept value 28.5238095238num 6 coefficient [ 0.65714286]num 6 Predicted value: [ 32.46666667]num 1 Intercept value 9.57142857143num 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核心知识,深入的研习计算机基础知识,整理好了,如果你也不甘平庸,那就与我一起在编码之外,不断成长吧!
其实这里不仅有技术,更有那些技术之外的东西,比如,如何做一个精致的程序员,而不是“屌丝”,程序员本身就是高贵的一种存在啊,难道不是吗? [ [点击加入]
](/?_wv=1027&k=5ipV5It) 想做你自己想成为高尚人,加油!
如果觉得《Python数据分析之双色球基于线性回归算法预测》对你有帮助,请点赞、收藏,并留下你的观点哦!