2015-12-11 21 views
6

भविष्यवाणी मैं एक समय श्रृंखला भविष्यवाणी करने कोशिश कर रहा हूँ: 50 पिछले मान को देखते हुए, मैं 5 अगले मूल्यों की भविष्यवाणी करना चाहते हैं।skflow प्रतिगमन से अधिक मान

ऐसा करने के लिए, मैं skflow पैकेज (TensorFlow के आधार पर) का उपयोग कर रहा है, और इस समस्या को अपेक्षाकृत Boston example provided in the Github repo के करीब है।

मेरे कोड इस प्रकार है: प्रशिक्षण के अंत में

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

:

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

इस ओर जाता है।

और जब मैं भविष्यवाणी करने के लिए प्रयास करते हैं, मैं इस समस्या

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

(200, 1) (200, 5)

इसलिए हम देख सकते हैं कि किसी भी तरह मॉडल केवल 1 मूल्य के बजाय 5 चाहता था अनुमान लगा रहा है उसी तरह का है/आशा व्यक्त की।

मैं एक ही मॉडल कैसे इस्तेमाल कर सकते हैं कई मूल्यों के लिए मूल्यों की भविष्यवाणी करने के?

उत्तर

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)) 
+0

धन्यवाद:

मैं भी examples folder को multioutput प्रतिगमन का एक उदाहरण जोड़ा गया! यह काम करता है :) – Julian

+1

मैं इस कोड अब और काम करता है नहीं लगता। जब 'फिट()' कहा जाता है, तो निम्न त्रुटि फेंक दिया जाता है: 'आकार और incompatible' कर रहे हैं (1) (2?)। (मैं संस्करण '0.10.0rc0' का उपयोग कर रहा हूं) मैंने इस समस्या के बारे में एक नया प्रश्न भी बनाया है: http://stackoverflow.com/questions/39192107/multiple-target-columns-with-skflow-tensorflowdnnregressor – twiz

+1

इस पर कोई प्रतिक्रिया सवाल????!!!! – user40780

संबंधित मुद्दे