Untitled
unknown
plain_text
a year ago
1.4 kB
5
Indexable
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()
Editor is loading...
Leave a Comment