Untitled

mail@pastecode.io avatar
unknown
plain_text
2 months ago
1.4 kB
1
Indexable
Never
from sklearn.ensemble import IsolationForest

# Подготовка данных для обнаружения аномалий
features_anomaly = df[['MO_dealer_monthly_ton_GZPN', 'KP_dealer_monthly_ton_GZPN', 'total_monthly_ton_dil']].dropna()
scaler = StandardScaler()
scaled_features = scaler.fit_transform(features_anomaly)

# Обучение модели Isolation Forest
iso_forest = IsolationForest(n_estimators=100, contamination=0.05, random_state=42)
iso_forest.fit(scaled_features)

# Определение аномалий
y_pred = iso_forest.predict(scaled_features)

# Применение PCA для визуализации в 3D
pca = PCA(n_components=3)
features_pca_3d = pca.fit_transform(scaled_features)

# Создание 3D графика для визуализации аномалий
fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, projection='3d')

# Отображение нормальных данных
ax.scatter(features_pca_3d[y_pred == 1, 0], features_pca_3d[y_pred == 1, 1], features_pca_3d[y_pred == 1, 2], 
           c='blue', label='Normal')

# Отображение аномалий
ax.scatter(features_pca_3d[y_pred == -1, 0], features_pca_3d[y_pred == -1, 1], features_pca_3d[y_pred == -1, 2], 
           c='red', label='Anomaly')

ax.set_title('3D Visualization of Anomalies')
ax.set_xlabel('PC1')
ax.set_ylabel('PC2')
ax.set_zlabel('PC3')
ax.legend()

plt.show()
Leave a Comment