我有calcularBeta1办法。当我运行该程序时,出现此错误:ZeroDivisionError:浮点除以零 resultadoB1 = (sumaXY - ((sumaX * sumaY ) / totalElementos )) / (sumaXCuadrada - math.pow(sumaX, 2) / totalElementos)方法calcularBeta1def calcularBeta1(self, lista): actual = lista.nodoInicio sumaXY = 0 sumaX = 0 sumaY = 0 sumaXCuadrada = 0 totalElementos = 0 while actual != None: dato1 = actual.dato1 dato2 = actual.dato2 sumaXY += dato1 * dato2 sumaX += dato1 sumaY += dato2 sumaXCuadrada += math.pow(dato1, 2) totalElementos += 1 actual = actual.siguienteNodo resultadoB1 = (sumaXY - ((sumaX * sumaY ) / totalElementos )) / (sumaXCuadrada - math.pow(sumaX, 2) / totalElementos) return resultadoB1讲座档案类class LecturaArchivo: datosArchivo = ListaEnlazada() operaciones = Operaciones() xTemporal = 0 yTemporal = 0 nombreArchivo = input('Nombre del archivo: ') archivo = open(nombreArchivo, "r") lineas = archivo.read() datos = lineas.split(',') datoProxy = float(input('Proxy: ')) while lineas: lineas = archivo.readlines() xTemporal = datos[0] yTemporal = datos[1] datosArchivo.agregarNodoFinal(float(xTemporal), float(yTemporal)) print(datos) sumaElementos = sum(datosArchivo.obtenerNodos()) mediaElementos = operaciones.media(sumaElementos, datosArchivo.tamano()) beta1 = operaciones.calcularBeta1(datosArchivo) print('Beta1: ', beta1) beta0 = operaciones.calcularBeta0(beta1, media) print('Beta0: ', beta0) yk = operaciones.calcularYK(beta0, beta1, datoProxy) print('Regresión Líneal: ', yk)
3 回答

幕布斯7119047
TA贡献1794条经验 获得超8个赞
Python 无法将数字除以 0。如果您尝试除以 0,python 会抛出一个ZeroDivisionError
,这就是您遇到的情况。修复它的最佳方法是不除以零。您可以使用if
语句来确保值不为零。

慕运维8079593
TA贡献1876条经验 获得超5个赞
不要除以零。
在它抱怨的表达中
resultadoB1 = (sumaXY - ((sumaX * sumaY ) / totalElementos )) / (sumaXCuadrada - math.pow(sumaX, 2) / totalElementos)
要么要么totalElementos
结果sumaXCuadrada - math.pow(sumaX, 2)
为零。
在尝试计算该公式之前,您需要添加代码来处理这些情况的可能性。
添加回答
举报
0/150
提交
取消