"""
=============================================================
SKALOWANIE CECH – Standaryzacja StandardScaler (Z-score)
Materiał dydaktyczny
=============================================================
"""
import numpy as np
from sklearn import preprocessing
# ── Przykładowa cecha ─────────────────────────────────────────────────────────
x = np.array([[-1000.1],
[ -200.2],
[ 500.5],
[ 600.6],
[ 9000.9]])
print("Oryginalna cecha:")
print(x)
# ── Utworzenie przelicznika StandardScaler ────────────────────────────────────
scaler = preprocessing.StandardScaler()
# ── Dopasowanie i transformacja cechy ────────────────────────────────────────
standardized = scaler.fit_transform(x)
print("\nPo standaryzacji (Z-score):")
print(standardized)
# ── Parametry wyznaczone przez scaler ────────────────────────────────────────
print(f"\nŚrednia (μ) : {scaler.mean_[0]:.4f}")
print(f"Odchylenie standardowe (σ): {scaler.scale_[0]:.4f}")
# ── Weryfikacja: średnia i odchylenie po standaryzacji ────────────────────────
print(f"\nŚrednia po standaryzacji : {standardized.mean():.10f} (≈ 0)")
print(f"Odch. std po standaryzacji: {standardized.std():.10f} (≈ 1)")
# ── Odwrotna transformacja – powrót do oryginalnych wartości ──────────────────
odwrocona = scaler.inverse_transform(standardized)
print("\nOdwrotna transformacja (powrót do oryginału):")
print(odwrocona)
# ── Porównanie w tabeli ───────────────────────────────────────────────────────
print("\n{:>12} {:>22}".format("Oryginał", "Po standaryzacji (Z-score)"))
print("-" * 38)
for orig, std_val in zip(x.flatten(), standardized.flatten()):
print(f"{orig:>12.1f} {std_val:>22.4f}")