Skflow回归预测多个值。

7
我想预测一个时间序列:给出50个先前的值,我希望预测接下来的5个值。为了达到这个目的,我使用了基于TensorFlow的skflow包,这个问题与Github库中提供的波士顿示例相对接近。我的代码如下:
%matplotlib inline
import pandas as pd

import skflow
from sklearn import cross_validation, metrics
from sklearn import preprocessing

filepath = 'CSV/FILE.csv'
ts = pd.Series.from_csv(filepath)

nprev = 50
deltasuiv = 5

def load_data(data, n_prev = nprev, delta_suiv=deltasuiv):  

    docX, docY = [], []
    for i in range(len(data)-n_prev-delta_suiv):
        docX.append(np.array(data[i:i+n_prev]))
        docY.append(np.array(data[i+n_prev:i+n_prev+delta_suiv]))
    alsX = np.array(docX)
    alsY = np.array(docY)

    return alsX, alsY

X, y = load_data(ts.values) 
# Scale data to 0 mean and unit std dev.
scaler = preprocessing.StandardScaler()
X = scaler.fit_transform(X)
X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y,
    test_size=0.2, random_state=42)
regressor = skflow.TensorFlowDNNRegressor(hidden_units=[30, 50],
    steps=5000, learning_rate=0.1, batch_size=1)
regressor.fit(X_train, y_train)
score = metrics.mean_squared_error(regressor.predict(X_test), y_test)
print('MSE: {0:f}'.format(score))

这会导致以下问题:

数值错误:y_true 和 y_pred 的输出数量不同(1!=5)

在训练结束时出现。
而且当我尝试预测时,也遇到了同样的问题。
ypred = regressor.predict(X_test)
print ypred.shape, y_test.shape

(200, 1) (200, 5)

因此,我们可以看出该模型仅预测了1个值,而不是需要/期望的5个值。

我如何使用同一模型来预测多个值?

1个回答

6

自从这个#e443c734提交以来,我已经在skflow中添加了对多输出回归的支持,请重新安装软件包并重试。如果仍然无法正常工作,请在Github上跟进。

我还在示例文件夹中添加了一个多输出回归的示例:

# Create random dataset.
rng = np.random.RandomState(1)
X = np.sort(200 * rng.rand(100, 1) - 100, axis=0)
y = np.array([np.pi * np.sin(X).ravel(), np.pi * np.cos(X).ravel()]).T

# Fit regression DNN model.
regressor = skflow.TensorFlowDNNRegressor(hidden_units=[5, 5])
regressor.fit(X, y)
score = mean_squared_error(regressor.predict(X), y)
print("Mean Squared Error: {0:f}".format(score))

1
我认为这段代码已经不能正常工作了。当调用fit()函数时,会抛出以下错误:Shapes (?, 1) and (?, 2) are incompatible。(我使用的是版本0.10.0rc0)我还创建了一个新问题来解决这个问题:http://stackoverflow.com/questions/39192107/multiple-target-columns-with-skflow-tensorflowdnnregressor - twiz
1
请查看此答案 https://dev59.com/UZvga4cB1Zd3GeqP2HWU#40164742 - drenerbas
您的示例文件夹出现404错误。 - JeffHeaton
我认为这是Learn中的一个错误...已提交:https://github.com/tensorflow/tensorflow/issues/6849 - JeffHeaton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接