Я хотел бы написать скрипт для прогнозирования следующих чисел в лотерее. Я скачал набор данных и подготовил его для использования со сценарием, как показано ниже.
[[1, 3, 4, 20, 21. 12],
[44, 33, 22, 11, 10, 3] ...]
Я также создал скрипт, который использует керасы для предиката чисел, но теперь я получил ошибку 'ValueError: Ошибка при проверке цели: для плотность_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="")