【发布时间】: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