我正在尝试获取this数据集并预测一段时间内的新闻受欢迎程度。
数据集由145列组成(1是在单独的文件中链接到实际新闻报道的ID,在144个20分钟的时间片中为2-145,其中行中的每个单元格都记录了相应的受欢迎程度新闻故事)。
我已经将数据集“ Facebook_Economy.csv”标准化为0到1。目前,我只能将单个时间序列集输入模型(训练约100个时间片并测试约44个时间片)。我的目标是要对144个时间片进行多行训练,并在其他几行上进行测试,例如,获取新闻报道1-20的时间序列数据并接受新闻报道21-30等。
这是我目前将数据馈入模型的方式:
def run(filename):
series = read_csv(filename, header=0, index_col=0)
repeats = 1
results = DataFrame()
timesteps = 1
for i in range(len(series)):
results['results'] = experiment(repeats, series.iloc[i].squeeze(), timesteps)
# Where experiment(repeats, series, timesteps)
print(results.describe())
同样(为了深入了解其余代码的外观),我一直在遵循Jason Brownlee的this教程进行指导。
答案 0 :(得分:0)
我不确定我是否很好地理解了这个问题,但我想我已经做了类似的事情。首先,您必须将所有功能堆叠在一个阵列中。我发现此链接非常有用:https://machinelearningmastery.com/how-to-develop-lstm-models-for-multi-step-time-series-forecasting-of-household-power-consumption/
这是我使用的代码:(fen_pred =输入大小,n_output =输出大小)
dataset_train_features = np.hstack((dataset_train,new_features_train,ssa_feature1_train,ssa_feature2_train))
dataset_train_labels = dataset_train
features_set = list()
labels = list()
# X_train
for i in range(fen_pred, len_train):
if(len(dataset_train_features[i:i+n_output])<n_output):
break
features_set.append(dataset_train_features[i-fen_pred:i])
for i in range(fen_pred, len_train):
if(len(dataset_train_labels[i:i+n_output])<n_output):
break
labels.append(dataset_train_labels[i:i+n_output])
X_train=np.array(features_set)
y_train=np.array(labels)
(请注意,我想预测一个时表的时间步长,这就是为什么我不预测多个功能)
在您的情况下,我将编辑数组dataset_train_features,添加在该数组中训练模型所需的每个功能,然后重现此技术以创建测试集。