Ich versuche, this tutorial zu folgen.Verwenden Sie Attribut- und Zielmatrizen für lineare TensorFlow-Regression Python
TensorFlow kam gerade heraus und ich versuche es wirklich zu verstehen. Ich kenne bestrafte lineare Regression wie Lasso, Ridge und ElasticNet und seine Verwendung in scikit-learn
.
Für scikit-learn
Lasso Regression, alle I zur Eingabe in den Regressionsalgorithmus müssen, sind DF_X
[eine M x N-dimensionale Attributmatrix (pd.DataFrame)] und SR_y
[M ein dimensionsZielVektor (pd.Series)]. Die Variable
Struktur in TensorFlow ist mir etwas neu und ich bin mir nicht sicher, wie ich meine Eingabedaten so strukturieren soll, wie sie wollen.
Es scheint, als ob Softmax-Regression für die Klassifizierung ist. Wie kann ich meine DF_X
(M x N Attributmatrix) und SR_y
(M dimensionalen Zielvektor) umwandeln in tensorflow
für lineare Regression?
Meine aktuelle Methode für eine lineare Regression verwendet Pandas, Numpy und Sklearn und es ist unten gezeigt. Ich denke, diese Frage wirklich hilfreich sein für Menschen mit TensorFlow immer vertraut:
#!/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 schreiben: 'Tensor' Objekt ist nicht bekam iterable'I diesen Fehler während' Verlust = (sum (y_-y)) ** 2' –
I denke, die 'x'-Matrix und der' W'-Vektor werden im Beispiel des Tutorials getauscht. –
Angenommen, Sie wollen die Summe der quadrierten Fehler, ich denke 'Verlust' sollte definiert werden als:' Verlust = tf.reduce_sum (tf.square (y_ - y)) '. (Der 'nicht iterierbare' Fehler kommt von Pythons eingebauter' sum() '-Funktion und nicht vom TensorFlow-Operator; und ich denke, dass Sie die Summe nach dem Quadrieren übernehmen wollen.) – mrry