настраивать разделенные данные и метки столбцов - PullRequest
0 голосов
/ 27 мая 2019

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

У меня есть отформатированный файл csv , который выглядит как матрица [NxM], где N = 40 общее количество циклов (отметок времени) и M = 1440 пикселей. Для каждого цикла у меня есть 1440 пикселей, соответствующих 1440 пикселям. как следующее:

timestamps[row_index] | feature1  | feature2 | ... | feature1439 | feature1440 |
-----------------------------------------------------------------
       1              |  1.00     |   0.32   |   0.30   |   0.30  |   0.30   | 
       2              |  0.35     |   0.33   |   0.30   |   0.30  |   0.30   | 
       3              |  1.00     |   0.33   |   0.30   |   0.30  |   0.30   | 
      ...             |   ....    |   ....   |   ....   |   ....  |   ....   | 
                      | -1.00     |   0.26   |   0.30   |   0.30  |   0.30   | 
                      |   0.67    |   0.03   |   0.30   |   0.30  |   0.30   | 
       30             |   0.75    |   0.42   |   0.30   |   0.30  |   0.30   |
________________________________________________________________________________ 
      31              |  -0.36    |   0.42   |   0.30   |   0.30  |   0.30   | 
      ...             |   ....    |   ....   |   ....   |   ....  |   ....   | 
      40              |   1.00    |   0.34   |   0.30   |   0.30  |  -1.00   |

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split

df = pd.read_csv('Train.csv', header=None)

# I'm not sure what the label-column is, so i use df[0]
# and exclude this colums in the data via df.loc[:,df.columns!=0]
trainX,testX,trainY,testY = train_test_split(df.loc[:,df.columns!=0],df[0], test_size=0.2, shuffle=False)

Задача 1 До сих пор я просто мог исключить свои заинтересованные столбцы, используя этот цикл for. Мне было интересно, если у нас есть изящный способ обозначить эти заинтересованные столбцы и исключить их из целых столбцов с помощью панд и заменить его на df[0]?!

import pandas as pd

data_train = pd.read_csv("D:\train.csv", header=None)
#select interested columns to predict 980 out of 1440
j=0
index=[]
for i in range(1439):
    if j==2:
        j=0
        continue
    else:
        index.append(i)
        j+=1

Y_train= data_train[index]
data_train = data_train.values
print("data_train size: {}".format(Y_train.shape))

Задача 2 Я бы хотел разделить набор данных на набор поездов и тестовый набор таким образом, чтобы:

Поезд содержит [1-30] меток времени. Информация

Тестовый набор содержит [31-40] меток времени. Информация

Проблема в том, что я не смог добиться правильного непрерывного графика после обучения NN, скорее всего, из-за неправильной техники разделения данных, которую я использовал с помощью train_test_split, но никогда не пробовал TimeSeriesSplit следующим образом:

trainX, testX, trainY, testY = train_test_split(trainX,trainY, test_size=0.2 , shuffle=False) 

учитывая, что я использовал shuffle=False и ожидаю, что 0,2 из конца данных будет считаться тестовыми данными, и я могу получить их правильно, но все равно не могу получить доступ к числу циклов, которое считаются тестовыми данными, поэтому, когда я строю график, он начинается с 0! вместо продолжения последнего цикла данных поезда!

img

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...