Python中的随机选择机器学习代码

Python中的随机选择机器学习代码,python,sorting,random,machine-learning,Python,Sorting,Random,Machine Learning,我是Python的新手,正在使用一个样例乐透绘图软件。我已经创建了一个结果字典,我的代码从中选择了一组最经常出现、最不经常出现的数字,或者是三个建议,并将它们随机混合。 现在,我感兴趣的是让我的软件学会根据乐透抽奖的实际结果做出更好的选择。我还需要将这些结果添加到我的字典中。有什么想法吗 我的目标不是成为百万富翁(虽然那会很有趣),只是为了看看如何能找到这样的学习代码。谢谢你抽出时间。以下是我的代码: from random import choice # Data created on 06

我是Python的新手,正在使用一个样例乐透绘图软件。我已经创建了一个结果字典,我的代码从中选择了一组最经常出现、最不经常出现的数字,或者是三个建议,并将它们随机混合。 现在,我感兴趣的是让我的软件学会根据乐透抽奖的实际结果做出更好的选择。我还需要将这些结果添加到我的字典中。有什么想法吗

我的目标不是成为百万富翁(虽然那会很有趣),只是为了看看如何能找到这样的学习代码。谢谢你抽出时间。以下是我的代码:

from random import choice

# Data created on 06.12.2013
LottoNumbers = {'1':336,'2':339,'3':383,'4':346,'5':369,'6':347,'7':364,'8':329,
                '9':342,'10':345,'11':344,'12':336,'13':340,'14':330,'15':345,
                '16':370,'17':376,'18':334,'19':343,'20':353,'21':334,'22':329,
                '23':349,'24':351,'25':359,'26':378,'27':357,'28':347,'29':347,
                '30':352,'31':365,'32':354,'33':310,'34':343,'35':341,'36':362,
                '37':356,'38':361,'39':389,'40':351,'41':344,'42':385,'43':399,
                '44':378,'45':357}

# Copy of Lotto Numbers in order not to accidentally damage or change it
LNC = LottoNumbers

#get a list of tuples, with value in 1st position, key second
li = [(value, key) for key, value in LNC.items()]

#sort the list
li.sort()

# needed number of items
m = 6

# grab the m highest values, from the end of the list
li_high_keys = [k for v, k in li[-m:]]

# grab the m lowest values from the beginning of the list
li_low_keys = [k for v, k in li[0:m]]

# add two lists together:
mixed_list = li_high_keys + li_low_keys

# create a list with 6 random items:
def ranList(list):
    ranList = []
    for i in range(0, 6):
        item = choice(list)
        if item in ranList:
            item = choice(list)
        ranList.append(item)
    return ranList

# Get random choice from both lists:
ranList1 = sorted(ranList(mixed_list))
ranList2 = sorted(ranList(mixed_list))
ranList3 = sorted(ranList(mixed_list))

print "Numbers with highest frequency: "
print ', '.join(str(p) for p in li_high_keys) 

print "Numbers with lowest frequency: "
print ', '.join(str(p) for p in li_low_keys) 

print "Random mix of both lists: "
print ', '.join(str(p) for p in ranList1)
print ', '.join(str(p) for p in ranList2) 
print ', '.join(str(p) for p in ranList3)

没有任何技术可以预测随机彩票的数字,因为随机彩票的定义是没有算法可以预测


然而,如果彩票是有偏差的,一种原始的机器学习方法是计算彩票中每个数字出现的次数,但对其进行加权:在每次遇到该数字时计数器中出现的数字之前,只向彩票抽奖数添加一个常量。常数越高,老彩票抽奖的权重就越小。

首先,你的答案不是一个“选择”(数字),而是一个选择的公式,只要输入一些信息

其中一个公式可能是
guess=current\u time^sin(current\u time)>>current\u time%360
这种猜测可能不是很好

您需要决定您的解决方案对此问题将采取何种形式—它可能是一个解析树。这是最难使用的个人之一。。。(解决方案如下所示)

因此,您需要创建一个总体(或大量猜测的解决方案)

然后,您需要选择更合适(更好)的解决方案,以将其转移到下一代。当你转移一个个体时,你将它与另一个个体杂交,然后以某种概率变异它的某些部分。你重复这个过程好几代人。最终你会有体面的人


对于机器学习和遗传算法来说,一个更好的项目是选择一些随机点,并提出一个二次公式来解决这些点(那么你只需要将一个个体作为一个简单的系数列表来处理)

请注意,修改
LNC
也会修改
LottoNumbers
,它只是对同一对象的引用,而不是副本!由于随机抽取的本质,没有一种方法能够或多或少地在任何一组数字上取得成功!唯一的例外是,选择其他人较少选择的数字将使您的奖金最大化,就好像这些数字赢了您就不必分享一样。谢谢Wim,您是对的,我应该使用LNC=LottoNumbers.copy()谢谢Jornsharpe-我想既然这样的抽奖应该接近高斯分布,机器可以根据过去的效果(结果)更好地将它们放置在钟形曲线上;随着时间的推移,你会期望每个数字的计数趋于相同,一个平坦的分布如果它是计算机随机的,肯定有算法来预测它。。。您只需要有相同的输入(种子、?、?)。。。也就是说,这对一个对机器学习非常有经验的人来说是非常困难的,更不用说对机器学习很陌生的人了。。。这是第一个机器学习项目非常糟糕的选择谢谢,你可能是对的。。。我会先找一个更简单的方法。