出现了"invalid value encountered in subtract",请问如何处理?

以下是数据样本的设定:

import matplotlib.pylab as plt
import numpy as np
import pandas as pd
from numpy import *
# 数据集大小 即20个数据点

path =open('D:/ex1-2.txt')
data2 = pd.read_csv(path, header=None, names=['Size', 'Bedrooms', 'Price'])
# x的坐标以及对应的矩阵
X1=data2['Size']
X2=data2['Bedrooms']
# 对应的y坐标
y=data2['Price']
data2.insert(0,'ones',1)
X0=data2['ones']
# 学习率
X0=np.matrix(X0).reshape(47,1)
X1=np.matrix(X1).reshape(47,1)
X2=np.matrix(X2).reshape(47,1)
X=np.hstack((X0,X1,X2))
Y=np.matrix(y).reshape(47,1)

alpha=0.01
#定义代价函数
def cost_function(theta, X, Y):
    diff = dot(X, theta) - Y  # dot() 数组需要像矩阵那样相乘,就需要用到dot()
    return (1/(2*47)) * dot(diff.transpose(), diff)


# 定义代价函数对应的梯度函数
def gradient_function(theta, X, Y):
    diff = dot(X, theta) - Y
    return (1/47) * dot(X.transpose(), diff)


# 梯度下降迭代
def gradient_descent(X, Y, alpha):
    theta = np.array([1,1,1]).reshape(3, 1)
    gradient = gradient_function(theta, X, Y)
    while not all(abs(gradient) <= 1e-5):
        theta = theta - alpha * gradient
        gradient = gradient_function(theta, X, Y)
    return theta



optimal = gradient_descent(X, Y, alpha)
print('optimal:', optimal)
print('cost function:', cost_function(optimal, X, Y)[0][0][0])


# 根据数据画出对应的图像

下面是出问题的地方:

def gradient_descent(X, Y, alpha):
    theta = np.array([1,1,1]).reshape(3, 1)
    gradient = gradient_function(theta, X, Y)
    while not all(abs(gradient) <= 1e-5):
        theta = theta - alpha * gradient
        gradient = gradient_function(theta, X, Y)
    return theta

显示

输出显示错误

具体原因不清楚,我也出现了这个问题,但是对数据归一化之后就好了

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

theta 和 alpha * gradient 是不是同一种数据结构或者类型,或者说两者的shape是否一致。我建议还是写个循环,逐个元素进行减法操作会更加清晰。