skflow回归预测多个值 [英] skflow regression predict multiple values

查看:248
本文介绍了skflow回归预测多个值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试预测时间序列:给定50个先前值,我想预测5个下一个值.

I'm trying to forecast a time series: given 50 previous values, I want to predict the 5 next values.

为此,我使用了skflow包(基于TensorFlow),这个问题相对接近

To do so, I'm using the skflow package (based on TensorFlow), and this problem is relatively close to the Boston example provided in the Github repo.

我的代码如下:

%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))

这导致:

ValueError:y_true和y_pred具有不同数量的输出(1!= 5)

ValueError: y_true and y_pred have different number of output (1!=5)

在培训结束时

.

at the end of the training.

当我尝试预测时,我遇到了同样的问题

And when I try to predict, I have the same kind of problem

ypred = regressor.predict(X_test)
print ypred.shape, y_test.shape

(200,1)(200,5)

(200, 1) (200, 5)

因此,我们可以看到模型以某种方式仅预测了1个值,而不是5个期望/希望的值.

We can therefore see that the model is somehow predicting only 1 value instead of the 5 wanted/hoped.

如何使用相同的模型来预测多个值的值?

How could I use the same model to predict values for several values ?

推荐答案

自此

I've just added support for multi-output regression into skflow since this #e443c734, so please reinstall the package are try again. If it doesn't work, please follow up on 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))

这篇关于skflow回归预测多个值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆