У меня есть набор данных о продажах домов, и я применяю линейную регрессию.После получения уклона и 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)
И вывод приведенного выше фрагмента:
Итак, мои вопросы:
1.Это правильный способ построить прямую линию на графике x против y?
2.Почему значение стоимости слишком велико, и возможно ли иметь значение стоимости, чтобы быть таким большим, даже если параметры хорошо соответствуют данным.
Редактировать 1
m в выражении print является значением наклона, а не размером X, то есть len (X)