预测下一个数字

2024-06-16 12:28:27 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我还编写了一个脚本,它使用keras来断言数字,但现在我得到了一个错误 'ValueError:检查目标时出错:预期密集_1具有形状(6,),但获得具有形状(1,)的数组'。 当我将稠密(6)更改为稠密(1)时,我在第二行得到另一个错误

trainPredict = scaler.inverse_transform(trainPredict)

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

如何解决此问题以获得6个数字?是否有删除创建数据集的方法?我找到了,但我都不明白。也许有人有这样一个例子,脚本必须预测一些数字

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="")     

Tags: test脚本datamodelnptransformtrain数字
1条回答
网友
1楼 · 发布于 2024-06-16 12:28:27

如果彩票号码是在现实世界中用某种机器选球的传统方式绘制的,或者即使不是真正随机的,多个连续的彩票号码集没有任何联系,也不会以任何方式相互依赖

您的方法可用于识别给定数字序列或类似序列的可能延续(因为有一些“规则”,如果有足够大的数据集,可能会找到这些规则)。 但是彩票号码根本没有(隐藏的)规律性,所以我觉得你想要达到的目标似乎是不可能的

相关问题 更多 >