Gradientenabstieg, der in der linearen Regression in die Luft jagtPython

Python-Programme
Anonymous
 Gradientenabstieg, der in der linearen Regression in die Luft jagt

Post by Anonymous »

Ich kodiere einen linearen Regressionscode in Python, ich habe die Formeln verwendet, die ich gelernt und überprüft habe, und versuchte auch, den Datensatz zu normalisieren, was dann passiert ist und die Werte des Gewichts und die Vorspannung die exponentielle Zunahme von Werten verändert haben, aber immer noch einige Fehler gibt, da die Bias immer noch im Bereich von 10^-18 I-Verwendung des Immobiliendatensatzes aus dem Kaggle-Here ist. />https://www.kaggle.com/datasets/nitinsh ... is-dataset
Hier ist der Code, den ich geschrieben habe.

Code: Select all

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

def gradient_descent(x, y, m, c, n):
delta_m = (-2/n) * np.sum(x * (y - (m*x + c)))
delta_c = (-2/n) * np.sum(y - (m*x + c))
return delta_m, delta_c

def linear_regression(epochs, m, c, learning_rate, x, y):
n = len(x)
for i in range(epochs):
delta_m, delta_c = gradient_descent(x, y, m, c, n)
m -= learning_rate * delta_m
c -= learning_rate * delta_c
if (i+1) % 1000 == 0:
print(f"After {i+1} epochs: m = {m}, c = {c}")
return m, c

df = pd.read_csv("archive/real_estate.csv")

df = df[['apartment_total_area', 'price_in_USD']].dropna()

df['apartment_total_area'] = (
df['apartment_total_area']
.astype(str)
.str.replace(' m²', '', regex=False)
.str.replace(' ', '', regex=False)
.str.replace(',', '.', regex=False)
.astype(float)
)

# Clean price_in_USD
df['price_in_USD'] = (
df['price_in_USD']
.astype(str)
.str.replace('$', '', regex=False)
.str.replace(',', '', regex=False)
.str.strip()
.astype(float)
)

x = df['apartment_total_area'].to_numpy()
y = df['price_in_USD'].to_numpy()

x_mean, x_std = x.mean(), x.std()
y_mean, y_std = y.mean(), y.std()
x_s = (x - x_mean)/x_std
y_s = (y - y_mean)/y_std

m, c = 0, 0
epochs = 20000
learning_rate = 0.0001

m_s, c_s = linear_regression(epochs, m, c, learning_rate, x_s, y_s)

m_orig = m_s * (y_std / x_std)
c_orig = y_mean + c_s * y_std - m_orig * x_mean

print(f"Final slope (m): {m_orig}")
print(f"Final intercept (c): {c_orig}")

plt.scatter(x, y, color="blue")
plt.plot(x, m_orig*x + c_orig, color="red")
plt.xlabel("Apartment Total Area (m²)")
plt.ylabel("Price in USD")
plt.show()

Kann mir jemand helfen, herauszufinden, was das Problem ist?>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post