2017-07-18 9 views
0

私は、自分の見積もりを構築するのではなく、あらかじめ構築された推定子tf.contrib.learn.LinearRegressorを使用して、PythonでTensorFlowを使っておもちゃの線形回帰を試みています。 私が使用している入力は0と1の間の実数値です。出力はちょうど3 *入力です。 TensorFlowはデータに合っているように見えますが(エラーは発生していませんが)、出力には何も関係がありません。Tensorflow LinearRegressorが収束しない

予測が正しく行われているかどうかわからないのですが、predict()関数のドキュメントは非常にまばらです。

フィッティングを改善する方法はありますか? LinearRegressorにposterity- 私の入力機能のためにここで答える、答えを考え出した

import numpy as np 
import pandas as pd 
import tensorflow as tf 
import itertools 
import matplotlib.pyplot as plt 

#Defining data set 
x = np.random.rand(200) 
y = 3.0*x 
data = pd.DataFrame({'X':x, 'Y':y}) 
training_data = data[50:] 
test_data= data[:50] 

COLUMNS = ['Y','X'] 
FEATURES = ['X'] 
LABELS = 'Y' 

#Wrapper function for the inputs of LinearRegressor 
def get_input_fn(data_set, num_epochs=None, shuffle=True): 
    return tf.estimator.inputs.pandas_input_fn(
     x=pd.DataFrame(data_set[FEATURES]), 
     y=pd.Series(data_set[LABELS]), 
     num_epochs=num_epochs, 
     shuffle=shuffle) 


feature_cols = [tf.feature_column.numeric_column(k) for k in FEATURES] 
regressor = tf.contrib.learn.LinearRegressor(feature_columns=feature_cols) 
regressor.fit(input_fn=get_input_fn(test_data), steps=100) 

results = regressor.predict(input_fn=get_input_fn(test_data, 
num_epochs=1)) 
predictions = list(itertools.islice(results, 50)) 

#Visualizing the results 
fig = plt.figure(figsize=[8,8]) 
ax = fig.add_subplot(111) 
ax.scatter(test_data[LABELS], predictions) 

ax.set_xlabel('Actual') 
ax.set_ylabel('Predicted') 
plt.show() 

Scatter plot of results

答えて

0

は、引数としてシャッフル= Trueのセットを持っていたし、私の予測()の呼び出しは、シャッフル= Falseを設定しませんでした。それで、アウトプットは、収束していないように見せかけるように、シャッフルされました!

関連する問題