Algorytm isolation forrest - wykrywanie anomalii
Algorytm isolation forrest stosowany jest do wykrywania naomalii. Ten kod pokazuje: Generowanie przykładowych danych (normalne + anomalie), Trening modelu IsolationForest, Wykrywanie anomalii, Wizualizację wyników. Isolation Forest "izoluje" punkty, które wyglądają inaczej niż większość – im łatwiej dany punkt odizolować, tym bardziej podejrzany. contamination=0.1 zakłada, że 10% danych to anomalie – to ważny parametr. Predykcja: 1 – normalny punkt -1 – anomaliaimport numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.ensemble import IsolationForest # 1. Generowanie danych - 100 normalnych punktów + 10 anomalii rng = np.random.RandomState(42) # Dane "normalne" X_normal = 0.3 * rng.randn(100, 2) X_normal = np.r_[X_normal + 2, X_normal - 2] # wokół (2,2) i (-2,-2) # Anomalie X_outliers = rng.uniform(low=-4, high=4, size=(10, 2)) # Połączenie danych X = np.r_[X_normal, X_outliers] # 2. Model Isolation Forest model = IsolationForest(contamination=0.1, random_state=42) model.fit(X) # 3. Predykcja: -1 = anomalia, 1 = normalny punkt y_pred = model.predict(X) df = pd.DataFrame(X, columns=["x1", "x2"]) df["label"] = y_pred # 4. Wizualizacja plt.figure(figsize=(8, 6)) plt.title("Isolation Forest – Wykrywanie anomalii") # Punkty normalne normal = df[df["label"] == 1] plt.scatter(normal["x1"], normal["x2"], c='blue', label="Normalne", alpha=0.6) # Anomalie outliers = df[df["label"] == -1] plt.scatter(outliers["x1"], outliers["x2"], c='red', label="Anomalie", edgecolors='k') plt.legend() plt.xlabel("x1") plt.ylabel("x2") plt.grid(True) plt.tight_layout() plt.show()