python - 预测下一个数字

标签 python numpy tensorflow machine-learning keras

我想编写脚本来预测彩票中的下一个数字。我下载了一个数据集并准备将其与脚本一起使用,如下所示。

[[1, 3, 4, 20, 21. 12],
[44, 33, 22, 11, 10, 3] ...]

我还编写了一个使用 keras 来谓词数字的脚本,但现在出现错误 “ValueError:检查目标时出错:预期dense_1具有形状(6,),但得到形状为(1,)的数组”。 当我将 Dense(6) 更改为 Dense(1) 时,我在线上收到另一个错误

trainPredict = scaler.inverse_transform(trainPredict)

ValueError: non-broadcastable output operand with shape (4440,1) doesn't match the broadcast shape (4440,6)'.

如何解决这个问题以获得 6 个号码?有没有办法删除create_data_set?我找到了,但我什至不明白。也许有人有一个关于此类问题的示例,其中脚本必须预测一些数字

def create_data_set(_data_set, _look_back=1):
    data_x, data_y = [], []
    for i in range(len(_data_set) - _look_back - 1):
        a = _data_set[i:(i + _look_back), 0]
        data_x.append(a)
        data_y.append(_data_set[i + _look_back, 0])
    return np.array(data_x), np.array(data_y)

pathToFile = './dl.txt'
dataset = pd.read_csv(pathToFile, sep=' ', header=None, usecols=(1,2), names=['date', 'numbers'])
dataset = dataset['numbers'].values
parsedDataset = []
for i in dataset:
    parsedDataset.append(i.split(','))
dataset = parsedDataset
dataset = np.array(dataset)
dataset.astype('float64')

scaler = MinMaxScaler(feature_range=(0, 1))
dataset = scaler.fit_transform(dataset)
train, test = train_test_split(dataset, test_size=0.30, random_state=40)
train_x, train_y = create_data_set(train, 1)
test_x, test_y = create_data_set(test, 1)
print(train_x.shape[0])
train_x = np.reshape(train_x, (train_x.shape[0],1, train_x.shape[1]))
test_x = np.reshape(test_x, (test_x.shape[0], 1, test_x.shape[1]))

model = Sequential()
model.add(LSTM(256, input_shape=(train_x.shape[1], train_x.shape[2]),return_sequences=True))
model.add(LSTM(128))
model.add(Dense(6))
model.compile(loss='mse', optimizer='adam',metrics=['acc'])
model.fit(train_x, train_y, epochs=3, batch_size=1, verbose=0)
trainPredict = model.predict(train_x)
testPredict = model.predict(test_x)

trainPredict = scaler.inverse_transform(trainPredict)
train_y = scaler.inverse_transform([train_y])
testPredict = scaler.inverse_transform(testPredict)
test_y = scaler.inverse_transform([test_y])
for i in range(testPredict.shape[1]):
        print("%.1f"%(testPredict[0,i]), end=' ')
print('\n',end="")     

最佳答案

如果彩票号码是用现实世界中某种机器选球的传统方式抽出的,那么彩票号码就是真正随机的,或者即使不是真正随机的,多组连续的彩票号码也没有任何联系,也不存在依赖关系。以任何方式互相攻击。

您的方法可用于识别给定数字系列或类似内容的可能延续(因为它有一些“规则”,如果有足够大的数据集,可能可以找出它)。 但彩票号码根本没有(隐藏的)规律性,所以你想要实现的目标对我来说似乎是不可能的。

关于python - 预测下一个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59814415/

相关文章:

Python 3 引发和捕获异常

Python数据库插入MySQL

python - 将列值更改为 Pandas 中的列标题

machine-learning - TensorFlow 反卷积运算是否存在?

tensorflow - 与本地训练相比,云训练的结果更差

tensorflow - Variable_scope 的值参数

python - 为什么生成随机整数的 "normal"方法这么慢?

python - 什么是 termios.TIOCGWINSZ

python(或numpy)相当于R中的匹配

python - 填充 Numpy 数组的有效方法