を出力:単変量線形回帰私は現在のpythonの単変量線形回帰の実装を書いているのNaN
# implementation of univariate linear regression
import numpy as np
def cost_function(hypothesis, y, m):
return (1/(2 * m)) * ((hypothesis - y) ** 2).sum()
def hypothesis(X, theta):
return X.dot(theta)
def gradient_descent(X, y, theta, m, alpha):
for i in range(1500):
temp1 = theta[0][0] - alpha * (1/m) * (hypothesis(X, theta) - y).sum()
temp2 = theta[1][0] - alpha * (1/m) * ((hypothesis(X, theta) - y) * X[:, 1]).sum()
theta[0][0] = temp1
theta[1][0] = temp2
return theta
if __name__ == '__main__':
data = np.loadtxt('data.txt', delimiter=',')
y = data[:, 1]
m = y.size
X = np.ones(shape=(m, 2))
X[:, 1] = data[:, 0]
theta = np.zeros(shape=(2, 1))
alpha = 0.01
print(gradient_descent(X, y, theta, m, alpha))
このコードシータのための出力NaNは、無限大に行くの後になります - 私は何が起こっているのかを把握することはできません間違っていますが、それは確かに私の勾配降下関数におけるthetaの変更に関係しています。
私が使用しているデータは、私がオンラインになった単純な線形回帰ペアのデータセットであり、正しくロードされます。
誰でも正しい方向に向けることができますか?
残念ながら、これは問題を解決していないようだ - 同じ出力前と同じように。 – bag
また、X [:、1]の形を変える必要があります。私は編集します –
まだ運がない!以前と同じ出力。 if __name__ブロックのmの宣言の直後に、y = y.reshape((m、1))を挿入しました。また、x1 = X [:, 1] .reshape((m、1)) gradient_descent。 – bag