Работа над нейросетью.

Antonio0608

Новичок
Пользователь
Май 3, 2020
5
0
1
Доброго времени.
Не сочтите за дерзость. Нужно мнение знатоков. Как в максимально короткие сроки сделать нейросеть, чтобы она анализировала пред идущие итоги. и на основе них, делала прогноз.( искала паттерны, связи, хоть что.) прогноз желательно от 65% и выше.
Дано:
есть массив данных.
примерно 20 на 1600 символов.( и каждый день добавляется пару тройку строк.)
нужно чтобы нейросеть делала возможный прогноз на последующие 20 символов( строку).
Если реально такое сделать то где найти информацию.( кроме прогноза временных рядов я не чего более не находил.)
желательно русскоязычную информацию.
ну или если кто знает, можете намекнуть здесь.
с уважением.
 

Student

throw exception
Команда форума
Администратор
Апр 2, 2020
195
103
43
Москва
А можно конкретнее что это за данные? Пример? Как они идут и, что ожидается он нейросети в конце?
Вот примерами напишите.
 

Antonio0608

Новичок
Пользователь
Май 3, 2020
5
0
1
есть массив данных.
выглядит примерно так:
abbcbaabaabaacbbaacb
bbcaabccbabbbccaaabc
ccbbaaccabccbacccaaa
abcbcbcbaabbccaabbba
вот таких строк около 1600 штук и каждый день добавляются минимум одна строка максимум четыре строки.
и я бы хотел знать хотя бы примерно( от 65%) какая будет следующая строка.
в екселе у меня есть таблица. я сам там выискивал паттерны анализировал. и максимальный результат был 80% успешного прогноза.
в среднем 60%.
но это очень много времени забирает. да и много руками приходится делать.
вот и подумал можно же обучить нейросеть искать паттерны связи , закономерности.
иесли впростых нейро сетях принцып работы понятен. и опыт кое какой есть.
то как тут быть пока не понятно.
если делать нейросеть на основе временных рядов. то там есть среднее ( квадратичное или любое другое.) то уже на основе него можно сделать.
то тут так не получится.
в екселе пробовал сделать нечто подобное на основе средних значений. но результаты не удовлетворительные в районе 50% и то с натяжкой.
 

Antonio0608

Новичок
Пользователь
Май 3, 2020
5
0
1
Вот рабочая нейросеть.
А вот как сделать, чтобы она выводила, результат работы. В процентах результат обучения и тестирования( количество ошибок и количество верных предсказаний)
У меня выводит только 0.82 обучение. И 0.79 тест.
И как вывести 5 первых символов и 5 последних символов уже предсказаных результатов.

import numpy
import matplotlib.pyplot as plt
from pandas import read_csv
import math
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
from sklearn.preprocessing import MinMaxScaler
from sklearn.metrics import mean_squared_error
# convert an array of values into a dataset matrix
def create_dataset(dataset, look_back=1):
dataX, dataY = ,
for i in range(len(dataset)-look_back-1):
a = dataset
dataX.append(a)
dataY.append(dataset)
return numpy.array(dataX), numpy.array(dataY)
# fix random seed for reproducibility
numpy.random.seed(7)
# load the dataset
dataframe = read_csv('test3.csv', usecols=, engine='python')
dataset = dataframe.values
dataset = dataset.astype('float32')
# normalize the dataset
scaler = MinMaxScaler(feature_range=(0, 1))
dataset = scaler.fit_transform(dataset)
# split into train and test sets
train_size = int(len(dataset) * 0.67)
test_size = len(dataset) - train_size
train, test = dataset, dataset
# reshape into X=t and Y=t+1
look_back = 1
trainX, trainY = create_dataset(train, look_back)
testX, testY = create_dataset(test, look_back)
# reshape input to be
trainX = numpy.reshape(trainX, (trainX.shape, 1, trainX.shape))
testX = numpy.reshape(testX, (testX.shape, 1, testX.shape))
# create and fit the LSTM network
model = Sequential()
model.add(LSTM(4, input_shape(1, look_back)))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(trainX, trainY, epochs=100, batch_size=1, verbose=2)
# make predictions
trainPredict = model.predict(trainX)
testPredict = model.predict(testX)
# invert predictions
trainPredict = scaler.inverse_transform(trainPredict)
trainY = scaler.inverse_transform()
testPredict = scaler.inverse_transform(testPredict)
testY = scaler.inverse_transform()
# calculate root mean squared error
trainScore = math.sqrt(mean_squared_error(trainY, trainPredict))
print('Train Score: %.2f RMSE' % (trainScore))
testScore = math.sqrt(mean_squared_error(testY, testPredict))
print('Test Score: %.2f RMSE' % (testScore))
 

Vlad_SD

Активный пользователь
Пользователь
Апр 7, 2020
91
45
18
Добрый день, ознакомьтесь с темой и вставьте код правильно (три точки рядом с эмоджи на поняли инструментов)
 

Antonio0608

Новичок
Пользователь
Май 3, 2020
5
0
1
как здесь доделать, чтобы trainX и trainY, а также testX и testY были одного размера.
как вывести результаты работы в процентах?
по идее X это реальные данные, а Y это прогноз. но len показывает что размеры разные.
как вывести 5 первых символов прогноза и 5 последних символов прогноза?
сам код взял с какого то сайта. и доробатывал пока он не начал работать.
но результаты работы не могу посмотреть.
винда
питон 3.6.8

Python:
import numpy
from pandas import read_csv
import math
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
from sklearn.preprocessing import MinMaxScaler
from sklearn.metrics import mean_squared_error
# convert an array of values into a dataset matrix
def create_dataset(dataset, look_back=1):
    dataX, dataY =[],[]
    for i in range(len(dataset)-look_back-1):
         a = dataset[i:(i+look_back), 0]
        dataX.append(a)
        dataY.append(dataset)
return numpy.array(dataX), numpy.array(dataY)
# fix random seed for reproducibility
numpy.random.seed(7)
# load the dataset
dataframe = read_csv('test3.csv', usecols=, engine='python')
dataset = dataframe.values
dataset = dataset.astype('float32')
# normalize the dataset
scaler = MinMaxScaler(feature_range=(0, 1))
dataset = scaler.fit_transform(dataset)
# split into train and test sets
train_size = int(len(dataset) * 0.67)
test_size = len(dataset) - train_size
train, test = dataset, dataset
# reshape into X=t and Y=t+1
look_back = 1
trainX, trainY = create_dataset(train, look_back)
testX, testY = create_dataset(test, look_back)
# reshape input to be
trainX = numpy.reshape(trainX, (trainX.shape, 1, trainX.shape))
testX = numpy.reshape(testX, (testX.shape, 1, testX.shape))
# create and fit the LSTM network
model = Sequential()
model.add(LSTM(4, input_shape(1, look_back)))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(trainX, trainY, epochs=100, batch_size=1, verbose=2)
# make predictions
trainPredict = model.predict(trainX)
testPredict = model.predict(testX)
# invert predictions
trainPredict = scaler.inverse_transform(trainPredict)
trainY = scaler.inverse_transform()
testPredict = scaler.inverse_transform(testPredict)
testY = scaler.inverse_transform()
# calculate root mean squared error
trainScore = math.sqrt(mean_squared_error(trainY, trainPredict))
print('Train Score: %.2f RMSE' % (trainScore))
testScore = math.sqrt(mean_squared_error(testY, testPredict))
print('Test Score: %.2f RMSE' % (testScore))
 

Форум IT Специалистов