基于3D彩票Knn算法的遗漏模式挖掘
发布时间:2021-05-29 13:13:09 所属栏目:大数据 来源:网络整理
导读:作者:白于空 关于3D彩票的先容:略 择要:按照漏掉模子;成立 祈望漏掉,当前漏掉,均匀漏掉,最大漏掉,漏掉方差 举办knn分类;发掘模式; 直接在代码中转达表达信息;结论猜测精度比祈望值约高20%; import numpy as npimport pandas as pddata = pd.read_
|
作者:白于空 关于3D彩票的先容:略 择要:按照漏掉模子;成立<祈望漏掉,当前漏掉,均匀漏掉,最大漏掉,漏掉方差>举办knn分类;发掘模式; 直接在代码中转达表达信息;结论猜测精度比祈望值约高20%; import numpy as np
import pandas as pd
data = pd.read_csv('F:/2014.csv')
data = np.array(data.value)
data = data[np.arange(0,300)]
for i in np.arange(0,len(data)):
data[i] = data[i].split(',')
data[i] = np.array(data[i],dtype = 'int32')
#到这里,301个数字已经完全提取完毕;开始计较漏掉值
ylz = {}
for k in np.arange(10):
ws = ylz[k] = [] #这里是起始空列表
for j in np.arange(0,len(data)) :
if k in data[j]:
ws.append(1)
else:
ws.append(0)
'''
#对付0-1序列,返回个中首个1到最终添加1的隔断数;
例[0,1,0]方针返回[2,4,2];总长为len+1
[0,1]返回[4,1]
'''
ylxl = {}
for s in np.arange(10):
ylxl[s] = []
ylz[s].append(1)
ycc = ylz[s]
for so in np.arange(0,len(ycc)):
if ycc[so]==1:
ylxl[s].append(so)
else:
pass
zc = {}
for oi in np.arange(10):
tu = np.array(ylxl[oi])
zc[oi] = [tu[1:len(tu)] - tu[0:(len(tu)-1)]]
zc[oi].insert(0,tu[0])
zc #记录各个值在3D彩票2014年中的汗青漏掉序列
#开始记录每个值得汗青漏掉,最大漏掉,均匀漏掉,数学祈望漏掉
上面的文件定名为zcp3d.py;其它excel汗青数据表修改------将excel中对应值得一列定名为value;
开始举办主函数的计较: import numpy as np
import zcp3d2
'''
每一次的zcc和yxdl都得从头计较天生新的序列集;;50-240
'''
def sd(c):
c = np.array(c)
for i in np.arange(len(c)-1):
sd = np.sum((c[i]-np.mean(c))**2)/len(c)
return sd
# classify using kNN
def Classify(newInput,dataSet,labels,k):
numSamples = dataSet.shape[0] # shape[0] stands for the num of row
diff = np.tile(newInput,(numSamples,1)) - dataSet
squaredDiff = diff ** 2
squaredDist = np.sum(squaredDiff,axis = 1)
distance = squaredDist ** 0.5
sortedDistIndices = np.argsort(distance)
classCount = {} # define a dictionary (can be append element)
for i in np.arange(k):
voteLabel = labels[sortedDistIndices[i]]
classCount[voteLabel] = classCount.get(voteLabel,0) + 1
maxCount = 0
for key,value in classCount.items():
if value > maxCount:
maxCount = value
maxIndex = key
return maxIndex
def qhj(knz):
ylzc = ylz[knz]
def train_set(p):
ylzp = ylzc[0:p]#检测项就是ylzc[p+1]了;这里不能直接替代。
#开始对ylzc
x_xsj = []
for l in np.arange(p):
if ylzp[l]==1:
x_xsj.append(l)
else:
pass
tu = np.array(x_xsj)
jh_xl = [tu[1:(len(tu)-1)] - tu[0:(len(tu)-2)]]
#实此刻数组中首单位插入新元素
zcc = [tu[0]]
zcc.extend(jh_xl)
zcc = np.array(zcc[1])
train_x = [np.mean(zcc),np.max(zcc),sd(zcc),np.min(zcc),zcc[(len(zcc)-1)]]
return train_x
train = []
lable = []
x = data.shape[0]
def cesl(x):
for ik in np.arange(50,x):
train.append(train_set(ik))
lable.append(ylzc[ik+1])
#train试验荟萃
#lable方针荟萃
t = 1 #t取与数据集相差t内的单元,t小于70
dataSet,labels = np.array(train),lable
testX = train_set(x+t)
k = 9
outputLabel = Classify(testX,k)
return outputLabel
return cesl(x)
jgyc = []
for u in np.arange(10):
jgyc.append(qhj[u])
jgyc
(编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

