【问题标题】:Predict next numbers预测下一个数字
【发布时间】:2020-01-19 21:10:26
【问题描述】:

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

[[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: 形状为 (4440,1) 的不可广播输出操作数与广播形状 (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="")     

【问题讨论】:

  • 澄清一下,您是在尝试预测一个随机数?
  • 我的数据集有从 1 到 40 的数字,我想从这个范围内获取数字

标签: python numpy tensorflow machine-learning keras


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    首先,这是一个教育问题,当有人问你中奖号码时,不要再看它了。 简单说一下如何编写 LSTM 来对多个特征进行预测。

    1. 第一个问题,您试图预测六个特征,但只选择了两列“usecols=(1,2)”
    2. 下一个问题“def create_data_set”用于一列数据集。

    【讨论】:

      猜你喜欢
      • 2016-12-05
      • 2023-01-17
      • 2018-04-03
      • 2018-11-20
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多