2026. május 29., péntek

Ingatlanbecslés AI segítségével python nyelven

Írtam egy python programot, ami a mesterséges intelligenciát modellezi és a gépi tanulást segítő alkalmazás. Egy mesterséges intelligenciát és gépi tanulást bemutató programhoz a legjobb kiindulópont egy lineáris regressziós modell elkészítése a semmiből (külső könyvtárak, mint a scikit-learn nélkül). Ez tökéletesen szemlélteti a gépi tanulás alapjait: a modell adatokat kap, hibát számol, majd a gradiens süllyedés (gradient descent) algoritmus segítségével "tanul", azaz módosítja a saját paramétereit. Egy ingatlan becslő Python kódot írtam, ami AI-t modellez a ház mérete alapján, értékbecsélt végez. A gépi tanulás megértését szolgűlja a z adatok fontossága: A program az X és Y listákból indul ki. Minél pontosabbak és tisztábbak ezek az adatok, annál jobb lesz az AI. A "Tippelés" mechanizmusa: A modell nem bonyolult logikai szabályokat követ, hanem egy matematikai függvényt (y=w⋅x+b). Hiba visszacsatolás (Loss Function): A program méri, hogy mekkorát tévedett a valósághoz képest (error). Gradiens süllyedés: A w_gradient és b_gradient változók határozzák meg, hogy a súlyokat növelni vagy csökkenteni kell-e a hiba minimalizálásához. Tanulási ráta (learning_rate): Ha túl nagyra veszed, a modell "túltanul" vagy összeomlik, ha túl kicsi, örökké tart a tanítás. Nyugodtan kísérletezhetsz az átírásával!

--- Tanítás ELŐTTI állapot ---
Kezdeti súly (w): 0.6303
Kezdeti eltolás (b): 0.4796

Python program forrása;

import random

# 1. Tanulhato adatok (Alapterület négyzetméterben -> Ár millió Ft-ban)
# x = terület, y = valós ár
X = [40, 50, 60, 70, 80, 90, 100, 120]
Y = [22, 28, 32, 38, 42, 49,  55,  64]

# 2. A Modell paramétereinek inicializálása (véletlenszerűen)
# A képletünk: becsült_ár = w * terület + b
w = random.uniform(0.0, 1.0)  # súly (weight)
b = random.uniform(0.0, 1.0)  # eltolás (bias)

# Hiperparaméterek
learning_rate = 0.0001  # Tanulási ráta (milyen gyorsan változzanak a paraméterek)
epochs = 5000           # Hány alkalommal fusson át az összes adaton (tanítási ciklus)

print("--- Tanítás ELŐTTI állapot ---")
print(init_w := f"Kezdeti súly (w): {w:.4f}")
print(init_b := f"Kezdeti eltolás (b): {b:.4f}")
print("-" * 30)

# 3. Önfejlesztés, autodidakta folyamat (Machine Learning)
for epoch in range(epochs):
    w_gradient = 0
    b_gradient = 0
    total_error = 0
    n = len(X)
    
    for i in range(n):
        x = X[i]
        y_valos = Y[i]
        
        # Predikció (Mit tippel most a MI?)
        y_becsult = w * x + b
        
        # Hiba számítása (Valós és becsült érték különbsége)
        error = y_becsult - y_valos
        total_error += error ** 2  # Négyzetes hiba a teljesítmény követéséhez
        
        # Gradiensek (milyen irányba és mennyivel kell módosítani w-t és b-t)
        w_gradient += (2/n) * error * x
        b_gradient += (2/n) * error
        
    # Paraméterek frissítése (A lényegi "tanulás")
    w = w - (learning_rate * w_gradient)
    b = b - (learning_rate * b_gradient)
    
    # Állapotjelentés minden 1000. ciklusban
    if (epoch + 1) % 1000 == 0:
        Átlagos_hiba = total_error / n
        print(f"Ciklus {epoch+1}/{epochs} -> Átlagos hiba: {Átlagos_hiba:.4f}")

print("-" * 30)
print("--- Tanítás UTÁNI állapot ---")
print(f"Optimalizált súly (w): {w:.4f}")
print(f"Optimalizált eltolás (b): {b:.4f}")
print("-" * 30)

# 4. Tesztelés / Predikció új adatokkal
print("--- MI Tesztelése (Predikció) ---")
uj_hazak = [45, 75, 110] # Olyan méretek, amik nem voltak a tanító adatok között

for haz in uj_hazak:
    tippelt_ar = w * haz + b
    print(f"Egy {haz} m²-es ház becsült ára: {tippelt_ar:.2f} millió Ft.")

A program minden lefutásból tanul.

--- Tanítás ELŐTTI állapot ---
Kezdeti súly (w): 0.1027
Kezdeti eltolás (b): 0.8969
------------------------------
Ciklus 1000/5000 -> Átlagos hiba: 0.5184
Ciklus 2000/5000 -> Átlagos hiba: 0.5184
Ciklus 3000/5000 -> Átlagos hiba: 0.5183
Ciklus 4000/5000 -> Átlagos hiba: 0.5183
Ciklus 5000/5000 -> Átlagos hiba: 0.5182 
------------------------------
--- Tanítás UTÁNI állapot ---
Optimalizált súly (w): 0.5295
Optimalizált eltolás (b): 0.8902
------------------------------
--- MI Tesztelése (Predikció) ---
Egy 45 m²-es ház becsült ára: 24.72 millió Ft.
Egy 75 m²-es ház becsült ára: 40.60 millió Ft.
Egy 110 m²-es ház becsült ára: 59.13 millió Ft.



Nincsenek megjegyzések:

Megjegyzés küldése