python算法关于取球_python數據分析6:雙色球 使用線性回歸算法預測下期中獎結果...

本文通过Python实现了一个利用线性回归算法预测双色球号码的示例。虽然线性回归在此场景下预测效果一般,但展示了数据预处理和模型训练的过程。最终得出结论,双色球预测的随机性较高,真正中奖依然困难。
摘要由CSDN通过智能技术生成

本次將進行下期雙色球號碼的預測,想想有些小激動啊。

代碼中使用了線性回歸算法,這個場景使用這個算法,預測效果一般,各位可以考慮使用其他算法嘗試結果。

發現之前有很多代碼都是重復的工作,為了讓代碼看的更優雅,定義了函數,去調用,頓時高大上了

#!/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)

畫圖結果:

fdf25294b7c1c7d60792cfa4979bbb52.png

預測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

看來預測中獎真是有些難度,隨機性太高,雙色球預測案例,只是為了讓入門數據分析的朋友有些思路,要想中大獎還是有難度的,多做好事善事多積德行善吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值