Создание массива Numpy, вызывающее ValueError: недопустимый литерал для int() с базой 10: 'n'

Я пытаюсь запустить предиктивную RNN из этого репозитория https://github.com/jgpavez/LSTM---Stock-prediction. "python lstm_forex.py"
Кажется, возникли проблемы с созданием пустого массива Numpy.

Функция, вызывающая у меня проблемы, начинается со строки «дни», четвертой снизу.

def read_data(path="full_USDJPY.csv", dir="/Users/Computer/stock/LSTM2/",
    max_len=30, valid_portion=0.1, columns=4, up=False, params_file='params.npz',min=False):

    '''
    Reading forex data, daily or minute
    '''
    path = os.path.join(dir, path)

    #data = read_csv(path,delimiter=delimiter)
    data = genfromtxt(path, delimiter=',',skip_header=1)
    # Adding data bu minute
    if min == False:
        date_index = 1
        values_index = 3
        hours = data[:,2]
    else:
        date_index = 0
        values_index = 1

    dates = data[:,date_index]
    print (dates)
    days = numpy.array([datetime.datetime(int(str(date)[0:-2][0:4]),int(str(date)[0:-2][4:6]),
                int(str(date)[0:-2][6:8])).weekday() for date in dates])
    months = numpy.array([datetime.datetime(int(str(date)[0:-2][0:4]),int(str(date)[0:-2][4:6]),
                int(str(date)[0:-2][6:8])).month for date in dates])

Выдает ошибку...

Traceback (most recent call last):  
  File "lstm_forex.py", line 778, in <module>  
tick=tick  
  File "lstm_forex.py", line 560, in train_lstm  
train, valid, test, mean, std = read_data(max_len=n_iter, path=dataset, params_file=params_file,min=(tick=='minute'))  
  File "/Users/Computer/stock/LSTM2/forex.py", line 85, in read_data
int(str(date)[0:-2][6:8])).weekday() for date in dates])  
ValueError: invalid literal for int() with base 10: 'n'  

Я видел похожую проблему, связанную с добавлением «.strip» в конец чего-либо. Этот код настолько сложен, что я даже не знаю, куда его поместить. Я пробовал везде и обычно получал ту же ошибку «не имеет атрибута» на других. Теперь я не уверен, что это может исправить.


person Renoldus    schedule 25.02.2018    source источник
comment
В чем разница между s[0:-2][6:8] и s[6:8]? Imho нет, если только у вас нет строки длиной 8 или 9. Во всяком случае, по крайней мере один из символов 6 и 7 не является числом.   -  person Mr. T    schedule 26.02.2018


Ответы (1)


Вы пытаетесь int() ввести строку 'n' в своем утверждении. Чтобы получить ту же ошибку:

int('n')

ValueError                                Traceback (most recent call last)
<ipython-input-18-35fea8808c96> in <module>()
----> 1 int('n')

ValueError: invalid literal for int() with base 10: 'n'

Что именно вы пытаетесь извлечь из этого понимания списка? Это похоже на кортеж информации о дате, но немного больше информации о том, что вы пытаетесь извлечь, или комментарии в коде, более ясно объясняющие логику, помогут нам найти решение.

РЕДАКТИРОВАТЬ: Если вы используете pandas.Timestamp, он может сделать все это преобразование для вас - теперь, когда я смотрю на код, похоже, что вы просто пытаетесь вытащить день недели и месяц. Это может не сработать, если он не может преобразовать временную метку для вас, но вполне вероятно, что сработает. Небольшая выборка данных CSV, которую вы используете, достаточно легко подтвердит.

days = numpy.array(pandas.Timestamp(date).weekday() для даты в датах]) month = numpy.array(pandas.Timestamp(date).month() для даты в датах])

person bubthegreat    schedule 25.02.2018
comment
Спасибо за этот ответ и рассказ о том, что, по вашему мнению, делает эта штука. Я на самом деле не знал. Ваша помощь в решении этой проблемы помогает моему дополнительному обучению Python сегодня. Данные представлены в виде минутных чисел USDJPY. histdata.com/ загрузить-бесплатно-исторические-данные-форекс/?/metatrader/ - person Renoldus; 26.02.2018
comment
Сценарий сейчас ищет файл _params.npz, поэтому я думаю, что это решило мою ошибку и переходит к следующей. Теперь, если бы я мог просто понять, зачем мне нужен файл параметров npz в дополнение к моему файлу csv. Путешествие продолжается. - person Renoldus; 26.02.2018
comment
Похоже, что по умолчанию он ищет: params_file='params.npz' в функции read_data из forex.read_data, которая вызывает numpy.savez. Похоже, что файл, который он ищет, относится к функции numpy.savez, поэтому чтение этого может указать вам правильное направление. docs.scipy.org/doc/numpy/reference/generated/ numpy.savez.html - person bubthegreat; 26.02.2018