Nếu đầu vào để sklearn.clustering.DBSCAN được pre-processeed?Làm thế nào để mở rộng quy mô đầu vào DBSCAN trong scikit-tìm hiểu
Trong ví dụ http://scikit-learn.org/stable/auto_examples/cluster/plot_dbscan.html#example-cluster-plot-dbscan-py khoảng cách giữa các mẫu đầu vào X được tính toán và chuẩn hóa:
D = distance.squareform(distance.pdist(X))
S = 1 - (D/np.max(D))
db = DBSCAN(eps=0.95, min_samples=10).fit(S)
Trong một ví dụ khác cho v0.14 (http://jaquesgrobler.github.io/online-sklearn-build/auto_examples/cluster/plot_dbscan.html) một số mở rộng quy mô được thực hiện:
X = StandardScaler().fit_transform(X)
db = DBSCAN(eps=0.3, min_samples=10).fit(X)
tôi dựa vào mã của tôi trên ví dụ sau và có phân cụm hiển thị hoạt động tốt hơn với quy mô này. Tuy nhiên, quy mô này "Chuẩn hóa các tính năng bằng cách loại bỏ phương tiện trung bình và chia tỷ lệ thành phương sai". Tôi cố gắng tìm các cụm 2d. Nếu tôi có các cụm được phân phối trong một khu vực bình phương - giả sử 100x100 tôi thấy không có vấn đề gì trong việc mở rộng. Tuy nhiên, nếu được phân phối trong một khu vực hình chữ nhật, ví dụ: 800x200 quy mô 'ép' mẫu của tôi và thay đổi khoảng cách tương đối giữa chúng trong một chiều. Điều này làm giảm sự phân cụm, phải không? Hay tôi hiểu sth. sai rồi? Tôi có cần phải áp dụng một số tiền xử lý ở tất cả hay tôi có thể chỉ cần nhập dữ liệu 'thô' của mình?
Cảm ơn bạn rất nhiều vì đã trả lời nhanh.Tôi muốn xác định các nguồn ánh sáng nhấp nháy có thể di chuyển xung quanh một cách ngẫu nhiên dẫn đến một tiếng Gaussian bôi nhọ. Ngoài ra tôi có nhiễu phủ lên. Hiện tại tôi đang bỏ qua các cường độ chớp mắt và chỉ ăn ở vị trí 2d của các sự kiện chớp mắt. Vì vậy, tôi nghĩ rằng khoảng cách Euclide là OK? Từ câu trả lời của bạn Tôi hiểu trong trường hợp của tôi, tôi không phải xử lý trước dữ liệu (đó là vị trí trong nm). Nhưng cách triển khai sklearn thì sao? Liệu nó thực sự cần sự giống nhau như đầu vào hay tôi có thể chỉ cho nó vị trí và nó áp dụng chính phương pháp đo khoảng cách Euclide? – Alex
Nếu bạn có các pixel có khoảng cách bằng nhau trên x và y, thì không bình thường hóa và sử dụng Euclide. Đối với sklearn, bạn sẽ phải đào sâu qua tài liệu và mã nguồn. Tôi tin rằng nếu bạn cung cấp dữ liệu thô, nó sẽ tự tính toán ma trận khoảng cách Euclide. (Nhưng KHÔNG sử dụng các chỉ mục để tăng tốc. Hãy thử ELKI, nó sẽ nhanh hơn rất nhiều với các chỉ mục). –
Ok, cảm ơn tất cả. Tôi sẽ xem xét ELKI và tìm hiểu bản thân thông qua tài liệu sklearn. – Alex