Python RuntimeWarning:在渐变下降中双_标量中遇到溢出
我正在尝试将梯度下降算法应用于线性回归。我想我已经解决了数学部分,但在Python中它不起作用Python RuntimeWarning:在渐变下降中双_标量中遇到溢出,python,gradient-descent,Python,Gradient Descent,我正在尝试将梯度下降算法应用于线性回归。我想我已经解决了数学部分,但在Python中它不起作用 from sklearn.datasets import load_boston import pandas as pd import numpy as np import random data = load_boston() df = pd.DataFrame(data['data'], columns=data['feature_names']) y = data['target'] X =
from sklearn.datasets import load_boston
import pandas as pd
import numpy as np
import random
data = load_boston()
df = pd.DataFrame(data['data'], columns=data['feature_names'])
y = data['target']
X = df.TAX
def RMSE(y, y_hat):
return np.sqrt(sum((y - y_hat) ** 2) / len(y))
def partial_k(x, y, y_hat):
n = len(y)
gradient = 0
for x_i, y_i, y_hat_i in zip(list(x), list(y), list(y_hat)):
gradient += (y_i - y_hat_i) * x_i
return -2 / n * gradient
def partial_b(y, y_hat):
n = len(y)
gradient = 0
for y_i, y_hat_i in zip(list(y), list(y_hat)):
gradient += (y_i - y_hat_i)
return -2 / n * gradient
def gradient(X, y, n, alpha=0.01, loss=RMSE):
loss_min = float('inf')
k = random.random() * 200 - 100
b = random.random() * 200 - 100
for i in range(n):
y_hat = k * X + b
loss_new = loss(y, y_hat)
if loss_new < loss_min:
loss_min = loss_new
print(f"round: {i}, k: {k}, b: {b}, {loss}: {loss_min}")
k_gradient = partial_k(X, y, y_hat)
b_gradient = partial_b(y, y_hat)
k += -k_gradient * alpha
b += -b_gradient * alpha
return (k, b)
gradient(X, y, 200)
看起来您的一个操作溢出了类型
如果您可以使用调试器运行代码,您将能够找到导致溢出的行,并将您的类型更改为更大的类型。看起来您的操作之一溢出了类型
如果您可以使用调试器运行代码,您将能够找到导致溢出的行,并将您的类型更改为更大的类型。梯度下降的主要功能是将θ的值降低到最佳值,但当alpha(学习速率)降低时大梯度下降可能超过最小值,并在图上以振荡方式增加。这是溢出发生的主要原因 尝试降低alpha(学习率)或应用功能规范化
梯度下降的主要特点是将θ值降低到最佳值,但当α(学习率)较大时,梯度下降可能超过最小值,并以振荡方式在图形上增加。这是溢出发生的主要原因 尝试降低alpha(学习率)或应用功能规范化
/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:5: RuntimeWarning: overflow encountered in double_scalars
"""
/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:12: RuntimeWarning: overflow encountered in double_scalars
if sys.path[0] == '':
/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:29: RuntimeWarning: invalid value encountered in double_scalars
/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:30: RuntimeWarning: invalid value encountered in double_scalars