skflow回归预测多个值

Posted

技术标签:

【中文标题】skflow回归预测多个值【英文标题】:skflow regression predict multiple values 【发布时间】:2016-03-17 10:37:00 【问题描述】:

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

为此,我使用的是skflow包(基于TensorFlow),这个问题和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)

在培训结束时。

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

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

(200, 1) (200, 5)

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

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

【问题讨论】:

【参考方案1】:

我刚刚在skflow 中添加了对多输出回归的支持,因为这个#e443c734,所以请重新安装包再试一次。如果还是不行,请关注 Github。

我还向examples folder添加了一个多输出回归示例:

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

【讨论】:

我认为这段代码不再有效。调用fit() 时,会抛出以下错误:Shapes (?, 1) and (?, 2) are incompatible。 (我正在使用版本0.10.0rc0)我还创建了一个关于这个问题的新问题:***.com/questions/39192107/… 看到这个答案***.com/questions/39935394/… 您的示例文件夹 404 的 我相信这是 Learn... 中的一个错误提交:github.com/tensorflow/tensorflow/issues/6849

以上是关于skflow回归预测多个值的主要内容,如果未能解决你的问题,请参考以下文章

多元线性回归中自变量减少预测误差变大回归平方怎么变化

我们可以在 python 中使用逻辑回归预测数据集的未来值吗?

使用逻辑回归预测参数值

集成学习模型(xgboostlightgbmcatboost)进行回归预测构建实战:异常数据处理缺失值处理数据重采样resample独热编码预测特征检查特征可视化预测结构可视化模型

使用线性回归模型预测单个值时出错

挖掘建模