线性回归中输入数据的numpy标准化哪里出了问题?

线性回归中输入数据的numpy标准化哪里出了问题?,numpy,machine-learning,linear-regression,standard-deviation,Numpy,Machine Learning,Linear Regression,Standard Deviation,在完成Andrew Ng的机器学习课程作业-练习1时, 我必须根据房子的面积(平方英尺)和卧室的数量,用多元线性回归预测房子的价值 在一个新的例子X=[11650,3]中,我们必须预测房子的成本,其中1是偏差项,1650是房子的大小,3是卧室的数量,我使用以下代码对输出进行规范化和预测: X_vect = np.array([1,1650,3]) X_vect[1:3] = (X_vect[1:3] - mu)/sigma pred_price = np.dot(X_vect,theta) pr

在完成Andrew Ng的机器学习课程作业-练习1时, 我必须根据房子的面积(平方英尺)和卧室的数量,用多元线性回归预测房子的价值

在一个新的例子X=[11650,3]中,我们必须预测房子的成本,其中1是偏差项,1650是房子的大小,3是卧室的数量,我使用以下代码对输出进行规范化和预测:

X_vect = np.array([1,1650,3])
X_vect[1:3] = (X_vect[1:3] - mu)/sigma
pred_price = np.dot(X_vect,theta)
print("the predicted price for 1650 sq-ft,3 bedroom house is ${:.0f}".format(pred_price))
这里,
mu
是先前作为
[2000.68085106 3.17021277]
计算的训练集的平均值,
sigma
是先前作为
[7.86202619e+02 7.52842809e-01]计算的训练数据的
标准偏差
theta
[340412.65957447 109447.79558639-6578.3539709]
。计算后
X_vect
的值为
[1 0]
。因此预测代码:

pred_price = np.dot(X_vect,theta_vals[0])
给出的结果是:1650平方英尺三居室房屋的预计价格为340413美元。 但根据答案键,这是错误的。因此我手动执行了以下操作:

print((np.array([1650,3]).reshape(1,2) - np.array([2000.68085106,3.17021277]).reshape(1,2))/sigma)
这是
X_vect
的标准化形式的值,输出为
[-0.44604386-0.22609337]

计算假设的下一行代码是:

print(340412.65957447 + 109447.79558639*-0.44604386 + 6578.3539709*-0.22609337)
或以更清晰的代码:

X1_X2 = (np.array([1650,3]).reshape(1,2) - np.array([2000.68085106,3.17021277]).reshape(1,2))/sigma

xo = 1

x1 = X1_X2[:,0:1]

x2 = X1_X2[:,1:2]

hThetaOfX = (340412.65957447*xo + 109447.79558639*x1 + 6578.3539709*x2)

print("The price of a 1650 sq-feet house with 3 bedrooms is ${:.02f}".format(hThetaOfX[0][0]))
这使得预测价格的结果为290106.82美元。这与答案键相匹配


我的问题是我在第一种方法中哪里出错了?

您只需要将
X_vect
数据类型更改为float,否则赋值操作将使用整数除法,导致
[1,0,0]
而不是
[1.,-0.44604386,-0.22609337]
。非常感谢!我不相信这是我的错误。在将其更改为X_vect=np.array([11650,3],dtype=“f”)后,我得到了正确的答案。