我正在尝试遵循本教程。
TensorFlow 刚刚问世,我真的很想理解它。我熟悉Lasso、Ridge 和 ElasticNet 等惩罚线性回归scikit-learn
及其在.
对于scikit-learn
Lasso 回归,我需要输入到回归算法中的是DF_X
[一个 M x N 维属性矩阵 (pd.DataFrame)] 和SR_y
[一个 M 维目标向量 (pd.Series)]。TensorFlow 中的Variable
结构对我来说有点新,我不确定如何将输入数据构造成它想要的结构。
似乎 softmax 回归是用于分类的。 如何重构我的DF_X
(M x 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. ]