【发布时间】:2019-03-09 14:48:02
【问题描述】:
我有一个房屋销售数据集,我正在应用线性回归。在得到斜率和 y 截距后,我绘制图形并计算成本,得到的结果对我来说有点奇怪,因为
- 参数线与数据拟合得很好
- 但同一参数的成本价值巨大
这是绘制直线的代码
def plotLine(slope, yIntercept, X, y):
abline_values = [slope * i + yIntercept for i in X]
plt.scatter(X, y)
plt.plot(X, abline_values, 'black')
plt.title(slope)
plt.show()
以下是计算成本的函数
def computeCost(m, parameters, x, y):
[yIntercept, slope] = parameters
hypothesis = yIntercept - np.dot(x, slope)
loss = hypothesis - y
cost = np.sum(loss ** 2) / (2 * m)
return cost
下面的代码行给出了 x vs y 图,其中包含计算参数(为了这个问题的简单起见,我手动设置了参数)和成本值。
yIntercept = -70000
slope = 0.85
print("Starting gradient descent at b = %d, m = %f, error = %f" % (yIntercept, slope, computeCost(m, parameters, X, y)))
plotLine(slope, yIntercept, X, y)
上面sn-p的输出是
所以,我的问题是:
1.这是在 x vs y 图上绘制直线的正确方法吗?
2。为什么成本价值太大,即使参数很好地拟合数据,成本价值也可能如此之大。
编辑 1
print语句中的m是斜率值而不是X的大小,即len(X)
【问题讨论】:
标签: python machine-learning linear-regression