Python函数返回nan

Python函数返回nan,python,function,machine-learning,nan,Python,Function,Machine Learning,Nan,我已经写了梯度下降函数,并使用熊猫读取csv文件。但当我使用pandas读取的数据时,函数返回“nan”。我不明白为什么 提前谢谢 def gradient_descent(X, Y, w, b, alpha): dl_dw = 0.0 dl_db = 0.0 N = len(X) for i in range(N): dl_dw += -1*float(X[i]) * (float(Y[i]) - (w*float(X[i]) + b))

我已经写了梯度下降函数,并使用熊猫读取csv文件。但当我使用pandas读取的数据时,函数返回“nan”。我不明白为什么

提前谢谢

def gradient_descent(X, Y, w, b, alpha):

    dl_dw = 0.0
    dl_db = 0.0

    N = len(X)

    for i in range(N):
        dl_dw += -1*float(X[i]) * (float(Y[i]) - (w*float(X[i]) + b))
        dl_db += -1*(float(Y[i]) - (float(w*X[i]) + b))


    w = w - (1/float(N)) * dl_dw * alpha
    b = b - (1/float(N)) * dl_db * alpha

return w, b

import pandas as pd                         
data = pd.read_csv("train.csv")               
print(data.head())                          

X = data.iloc[:, 0].values.reshape(-1, 1) 
Y = data.iloc[:, 1].values.reshape(-1, 1)

print(gradient_descent(X, Y, 0.0, 0.0, 100))

检查train.csv中的编码,如果是UTF-8 | UTF-16。。。 您可以检查它,在VSCode中打开train.csv。
示例:如果train.csv是UTF-16 LE,您可以使用pd.read_csv('train.csv',encoding='UTF-16 LE')进行修复。

检查train.csv中的编码,如果它是UTF-8 | UTF-16。。。 您可以检查它,在VSCode中打开train.csv。
示例:如果train.csv是UTF-16 LE,则可以使用pd.read_csv('train.csv',encoding='UTF-16 LE')进行修复。

尝试将alpha值减小到0.01左右。并确保您的数据帧没有任何空值

尝试将alpha值减少到0.01左右。并确保您的数据帧没有任何空值,这可能是一个逐渐消失的渐变问题。您可能会发现渐变非常接近,甚至为零。
尝试用非零值初始化权重。

这可能是一个逐渐消失的梯度问题。您可能会发现渐变非常接近,甚至为零。
尝试使用非零值初始化权重。

如果您能够确定哪些训练数据产生nan结果并向我们显示这些数据,肯定会有帮助:)如果您能够确定哪些训练数据产生nan结果并向我们显示这些数据,肯定会有帮助:)您好,先生,我检查了它,它的编码是='cp1252'。我将代码修改为data=pd.read_csv(“train.csv”,encoding='cp1252'),但它不起作用。你能复制那张打印的输出吗?x y 0 24.0 21.549452 1 50.0 47.464463 2 15.0 17.218656 3 38.0 36.586398 4 87.0 87.288984(nan,nan)嗨,先生,我检查了它,它正在编码='cp1252'。我将代码修改为data=pd.read_csv(“train.csv”,encoding='cp1252'),但它不起作用。你能复制打印的输出吗?x y 0 24.0 21.549452 1 50.0 47.464463 2 15.0 17.218656 3 38.0 36.586398 4 87.0 87.288984(南,南)