Untitled
unknown
python
2 years ago
869 B
8
Indexable
from sklearn.cluster import DBSCAN import numpy as np def detect_outliner_by_DBSCAN(self, col1, col2, eps, min_samples=2): data = self.df[[col1, col2]].values.reshape(-1, 1) db = DBSCAN(eps=eps, min_samples=min_samples).fit(data) labels = db.labels_ # Вычисление количества элементов в каждом кластере unique, counts = np.unique(labels, return_counts=True) clusters_counts = dict(zip(unique, counts)) # Поиск кластеров с количеством элементов <= 2 small_clusters = [cluster for cluster, count in clusters_counts.items() if count <= 2] # Возвращение индексов строк для этих кластеров outlier_indices = self.df.index[np.isin(labels, small_clusters)].tolist() return outlier_indices
Editor is loading...