Ok, dnes o5 vylepšujme našu SVR ML analýzu a skúsme použiť na model algo zvaný ká-najbližších, vďaka nemu četbot uvidí nie rovnú čiaru, ale zhluky podobných slov. Nakreslím:

Ok, dnes o5 vylepšujme našu SVR ML analýzu a skúsme použiť na model algo zvaný ká-najbližších, vďaka nemu četbot uvidí nie rovnú čiaru, ale zhluky podobných slov. Nakreslím:

Uvažujme dnes ďalej, čo spraví regresia SVR v našom predošlom modeli: https://hrubos.tech/blogy/2025/12/co-tak-vlastny-ai-bot-ktory-inteligentne-odpoveda-v-projekte-commie A mohli by sme túto regresnú rovnú čiaru vylepšovať? Ukážme si algoritmus SVR, naozaj vytvára v modeli vizuálne rovnú čiaru:

SVR algo model rovna ciara

Vlastne v modeli ^^^ SVR mašín lérningu dostávame rovnú čiaru, akoby sme združovali len kľúče poľa a spätnou väzbou hľadali daný podkľúčik, čo nám vytvorilo rovnú čiarku. Pre toto som sa rozhodol použiť na skúšku algo ká najbližších a ten nám nevytvára rovnú čiaru, ale v modeli vyberie tzv klástre alebo inak rovnaké podoblasti a toto už vyzerá pre tréning aj predikciu lepšie ako na titulnom obrázku:

K-nearest

Následne ^^^ by sme mohli orezať tzv core layer alebo alpha/gamma layer, ktorú nám vďaka SVR vidno na K-NEAREST obraze s clusteringom ^^^

Julia lang src pre clusters:

using Pkg
Pkg.add("Plots")
Pkg.add("JSON")
Pkg.add("Clustering")
Pkg.add("Statistics")
using JSON
using Plots
using Clustering
using Statistics
# Načítanie JSON súboru
data = JSON.parsefile("model.json")
# Zozbierame všetky y do jedného zoznamu
ys_all = Float64[]
for (key, subdict) in data
    ys = collect(values(subdict))
    if maximum(ys) < 100
        append!(ys_all, ys)
    end
end
# Pripravíme normalizované dáta
N = length(ys_all)
xs_raw = collect(1:N)          # pôvodné indexy
ys_raw = ys_all                # pôvodné hodnoty
# NORMALIZÁCIA 0–1
xs = (xs_raw .- minimum(xs_raw)) ./ (maximum(xs_raw) - minimum(xs_raw))
ys = ys_raw ./ 100.0  # keďže max < 100, toto je validné
# Vytvoríme dataset pre KMeans (2×N matica)
X = hcat(xs, ys)'
k = 5
# Clustering
res = kmeans(X, k)
# Farby
palette = distinguishable_colors(k)
# Vizualizácia
plt = scatter(title = "Normalizované clustre (ys < 100)",
              xlabel = "Index (0–1)",
              ylabel = "Hodnota (0–1)",
              legend = :topright)
for c in 1:k
    idx = findall(res.assignments .== c)
    xs_c = xs[idx]
    ys_c = ys[idx]
    # Scatter bodov clustra
    scatter!(plt, xs_c, ys_c; label="Cluster $c", color=palette[c])
    # Centroid
    cx, cy = res.centers[:, c]
    # Polomer clustra (priemerná vzdialenosť od centroidu)
    dist = [sqrt((x-cx)^2 + (y-cy)^2) for (x,y) in zip(xs_c, ys_c)]
    r = mean(dist)
    # Kreslíme kruh
    θ = range(0, 2π, length=200)
    circle_x = cx .+ r .* cos.(θ)
    circle_y = cy .+ r .* sin.(θ)
    plot!(plt, circle_x, circle_y; lw=2, color=palette[c], label=false)
end
display(plt)
if !Base.isinteractive()
    println("Press enter to quit:")
    readline()
end

Ták a toto by bolo k dnešnému učeniu modelu a jeho vylepšovaniu, aby náš četbot lepšie videl na slovnú zásobu. Takto ho budeme učiť a vylepšovať chápať, čo mu hovoríme ;)


Author: AarNoma

The first Slovak cyborg 1 system

Comments “Ok, dnes o5 vylepšujme našu SVR ML analýzu a skúsme použiť na model algo zvaný ká-najbližších, vďaka nemu četbot uvidí nie rovnú čiaru, ale zhluky podobných slov. Nakreslím:”