Python:ValueError: Formen (3) und (118,1) nicht ausgerichtet: 3 (dim, 0) != 118 (dim 0)
Ich versuche zu tun, Logistische regression mit fmin aber es ist ein Fehler zeigt sich aufgrund der unterschiedlichen Formen von array. Hier ist der code.
import numpy as np
import scipy.optimize as sp
data= #an array of dim (188,3)
X=data[:,0:2]
y=data[:,2]
m,n=np.shape(X)
y=y.reshape(m,1)
x=np.c_[np.ones((m,1)),X]
theta=np.zeros((n+1,1))
def hypo(x,theta):
return np.dot(x,theta)
def sigmoid(z):
return 1/(1+np.exp(-z))
def gradient(x,y,theta):#calculating Gradient
m=np.shape(x)[0]
t=hypo(x,theta)
hx=sigmoid(t)
J=-(np.dot(np.transpose(np.log(hx)),y)+np.dot(np.transpose(np.log(1-hx)),(1-y)))/m
grad=np.dot(np.transpose(x),(hx-y))/m
J= J.flatten()
grad=grad.flatten()
return J,grad
def costFunc(x,y,theta):
return gradient(x,y,theta)[0]
def Grad():
return gradient(x,y,theta)[1]
sp.fmin( costFunc, x0=theta, args=(x, y), maxiter=500, full_output=True)
Fehler, der zeigt
File "<ipython-input-3-31a0d7ca38c8>", line 35, in costFunc
return gradient(x,y,theta)[0]
File "<ipython-input-3-31a0d7ca38c8>", line 25, in gradient
t=hypo(x,theta)
File "<ipython-input-3-31a0d7ca38c8>", line 16, in hypo
return np.dot(x,theta)
ValueError: shapes (3,) and (118,1) not aligned: 3 (dim 0) != 118 (dim 0)
Jede Art von Hilfe wird geschätzt
InformationsquelleAutor Sahil Dahiya | 2015-02-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
also nach diesem
Diese
x
undtheta
könnendotted
-np.dot(x,theta)
, und (188,3) (3,1) - passend zu den 3.Aber das ist nicht das, was Ihr
costFunc
ist immer. Zurückgehend von der Fehlermeldung sieht es aus wiex
ist(3,)
, undtheta
ist(118,1)
. was natürlich nichtdotted
.Müssen Sie überprüfen, wie
fmin
ruft Ihre Funktion. Haben Sie die Parameter in der richtigen Reihenfolge? Zum Beispiel, vielleichtcostFunc(theta, x, y)
ist die richtige Reihenfolge ist (vorausgesetzt, diex
undy
imcostFunc
gemeint sind, in übereinstimmung mit derargs=(x,y)
.Den docs für
fmin
gehören:Sieht es aus wie
fmin
ist die Fütterung IhrercostFunc
3 Argumente, entsprechend in der Größe Ihrer(theta, x, y)
, d.h.(3,)
,(118,3)
,(118,1)
. Die zahlen nicht ganz übereinstimmen, aber ich denke, Sie bekommen die Idee. Das erste argumentconsFunc
ist die eine, diefmin
variieren, die Ruhe, die Sie inargs
.InformationsquelleAutor hpaulj