2017-12-25 28 views
0

私は機械学習でコルセラコースを受講しています。私は最初の週コスト関数をPythonに変換しようとしています。numpy - 費用関数を計算しようとしたときに形状エラーが発生しました

import numpy as np 

def computeCost(X, y, theta): 
    inner = np.power(((X.dot(theta)) - y), 2) 
    return np.sum(inner)/(2 * len(X)) 

これは最初から機能します。しかし、私が3D空間にプロットしようとすると、コストはそれ以上は働かないように見えます。

私はしかし、私は "328.0929"

を取得する必要があり、私は "30109.7923098" を取得し、この print(computeCost(X, y, [theta0_vals[0], theta1_vals[0]]))

を実行して、私はこの試みた:私は、寸法誤差を取得

inner = np.power(((X * (theta.T)) - y), 2) 
return np.sum(inner)/(2 * len(X)) 

を。

私はこの試みた:ValueErrorを::形状(2,97)と(1,2)に整列していない:97(1薄暗い)= 1(0薄暗い)

!私はエラーを取得する

m = len(y)     #number of training examples 
#X = np.array([np.ones(m), X])  #I did this beofre calling the function 
X = X.transpose() 

theta = theta.transpose() 
c = np.dot(X, theta)   #Matrix multiplication X*theta 
c = c.transpose() - y 
J = np.sum(c**2)/(2*m)   #Calculating cost 
return J 

詳細情報が必要な場合はお知らせください。

+0

のようにXとYの形状は何ですか? –

+0

行列の寸法は一致しません。これを修正するために形状を変更してください。 – gurpinars

答えて

0

あなたは、マトリックスdimensions.Myソリューションを修正するためにリシェイプを使用しなければならないこと

theta = theta - (alpha/m) * np.dot(X.T.reshape(2, 97), np.dot(X, theta).flatten() - y).reshape(2, 1) 
関連する問題