我正在嘗試關注this tutorial。使用屬性和目標矩陣進行TensorFlow線性迴歸Python
TensorFlow剛出來的時候,我真的想了解它。我熟悉懲罰線性迴歸像Lasso,Ridge和ElasticNet及其在scikit-learn
中的用法。
對於scikit-learn
套索迴歸,所有我需要輸入到迴歸算法是DF_X
[一個M×N的二維屬性矩陣(pd.DataFrame)]和SR_y
[的M維目標矢量(pd.Series)]。 TensorFlow中的Variable
結構對我來說有點新意,我不知道如何將輸入數據組織成想要的結果。
看起來好像SOFTMAX迴歸是一種分類。 我怎樣才能調整自己DF_X
(M×N個屬性矩陣)和SR_y
(M維目標矢量),以輸入到tensorflow
線性迴歸?
我做一個線性迴歸的方法目前使用的大熊貓,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. ]
'類型錯誤: '張量' 的對象不是iterable'I得到這個錯誤,而'損失=(SUM(Y_-Y))** 2' –
我認爲'x'矩陣和'W'向量在教程的例子中被交換了 –
假設你想要平方誤差的總和,我認爲'loss'應該被定義爲:'loss = tf.reduce_sum(tf.square(y_ - Y))'。 ('不可迭代'錯誤來自使用Python內置的'sum()'函數,而不是TensorFlow運算符;我認爲你想在平方後取這個和。) – mrry