私はthis tutorialに従おうとしています。TensorFlow線形回帰Pythonの属性とターゲット行列を使用
TensorFlowが出てきました。私は本当にそれを理解しようとしています。私はと罰せられた線形回帰(Lasso、Ridge、ElasticNetのように)とその使用法をscikit-learn
によく知っています。 Iは、回帰アルゴリズムに入力する必要があるすべてがDF_X
あるscikit-learn
ラッソの回帰の
、[M次元のターゲットベクター(pd.Series)]とSR_y
[MはN次元の属性マトリックス(pd.DataFrame)をX]。 TensorFlowのVariable
構造は少し新しく、私は自分の入力データをどのようにして自分が望むものにするのかよく分かりません。
ソフトマックス回帰が分類用であるかのようです。 DF_X
(M×N属性行列)とSR_y
(M次元ターゲットベクトル)を線形回帰のためにtensorflow
に入力するにはどうすればよいですか?
私の現在の線形回帰の方法は、pandas、numpy、およびsklearnを使用しています。これは以下のとおりです。私はこの質問をTensorFlowに慣れ人々のために本当に便利になると思う。
#!/usr/bin/python
import pandas as pd
import numpy as np
import tensorflow as tf
from sklearn.linear_model import LassoCV
#Create DataFrames for attribute and target matrices
DF_X = pd.DataFrame(np.array([[0,0,1],[2,3,1],[4,5,1],[3,4,1]]),columns=["att1","att2","att3"],index=["s1","s2","s3","s4"])
SR_y = pd.Series(np.array([3,2,5,8]),index=["s1","s2","s3","s4"],name="target")
print DF_X
#att1 att2 att3
#s1 0 0 1
#s2 2 3 1
#s3 4 5 1
#s4 3 4 1
print SR_y
#s1 3
#s2 2
#s3 5
#s4 8
#Name: target, dtype: int64
#Create Linear Model (Lasso Regression)
model = LassoCV()
model.fit(DF_X,SR_y)
print model
#LassoCV(alphas=None, copy_X=True, cv=None, eps=0.001, fit_intercept=True,
#max_iter=1000, n_alphas=100, n_jobs=1, normalize=False, positive=False,
#precompute='auto', random_state=None, selection='cyclic', tol=0.0001,
#verbose=False)
print model.coef_
#[ 0. 0.3833346 0. ]
'TypeError例外を書くことができます: 'テンソル' オブジェクトがないiterable'Iはこのエラーを得ながら、'損失=(SUM(Y_-Y))** 2 ' –
Iチュートリアルの例で 'x'行列と' W'ベクトルが入れ替えられたと思ってください –
エラーの平方和を計算すると仮定すると、 'loss'は以下のように定義されるべきです:' loss = tf.reduce_sum(tf.square(y_ - y)) 'とする。 ( 'not iterable'というエラーは、TensorFlow演算子ではなく、Pythonの組み込みの' sum() '関数を使うことから来ています;そして、二乗の後に合計を取りたいと思っています) – mrry