我正在尝试关注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