5

Tôi tham gia vào một số poroject Django và chúng tôi sử dụng dữ liệu địa lý (với GeoDjango). Tôi đã cài đặt PostGis như được mô tả trên tài liệu AWS.Cài đặt phần mở rộng Kmeans PostgreSQL trên Amazon RDS

Chúng tôi có rất nhiều điểm (điểm đánh dấu) trên bản đồ. Và chúng ta cần phải nhóm chúng lại.

Tôi đã tìm thấy một thư viện anycluster. Thư viện này cần phần mở rộng PostgreSQL có tên là kmeans-postgresql được cài đặt trên cơ sở dữ liệu Postgre.

Nhưng cơ sở dữ liệu của tôi nằm trên Amazon RDS. Và tôi không thể kết nối với nó bằng SSH để cài đặt tiện ích mở rộng ...

Bất kỳ ai biết cách cài đặt tiện ích mở rộng kmeans-postgresql trên cơ sở dữ liệu Amazon RDS của tôi?

Hoặc có thể bạn có thể tư vấn cho tôi các cách phân cụm khác?

Trả lời

5

K-có nghĩa là nó là một tính toán thực sự phức tạp đó là hữu ích để khai thác dữ liệu và phân tích cụm (bạn có thể xem chi tiết về nó trong wikipedia trang https://en.wikipedia.org/wiki/K-means_clustering). Nó có một phức tạp lớn khi phải đối phó với nhiều điểm. Phần mở rộng K-nghĩa là postgresql http://pgxn.org/dist/kmeans/doc/kmeans.html nó được viết bằng C và được biên dịch trong máy cơ sở dữ liệu. Điều này mang lại một hiệu suất tốt hơn so với một thủ tục trong plpgsql. Thật không may là @estevao_lucas trả lời, phần mở rộng này nó không được kích hoạt vào Amazon RDS.

Nếu bạn thực sự cần kết quả k-means, tôi đã dịch thực hiện này, được tạo bởi Joni Salonen trong http://jonisalonen.com/2012/k-means-clustering-in-mysql/ và được đổi thành plpgsql https://gist.github.com/thiagomata/a9737c3455d6248bef9f. Hàm này sử dụng bảng tạm thời. Có thể thay đổi nó để chỉ sử dụng các mảng Ghim, nếu bạn muốn.

Nhưng, nếu bạn chỉ cần hiển thị một số ghim trên bản đồ, có thể bạn sẽ hài lòng với chức năng thực sự nhanh hơn và đơn giản hơn để nhóm các kết quả vào ma trận [x, y]. Tôi đã tạo ra chức năng như vậy bởi vì các chức năng kmeans đã dành quá nhiều thời gian để xử lý cơ sở dữ liệu của tôi (với rất nhiều hơn 400K yếu tố). Vì vậy, việc triển khai này thực sự nhanh hơn, nhưng không có tất cả các tính năng bạn mong đợi từ mô-đun K-means. Bên cạnh đó, chức năng lưới này https://gist.github.com/thiagomata/18ea14853998468c1a1d trả lại kết quả rất tốt, khi mục tiêu nó là để hiển thị một số lượng lớn các chân trong bản đồ. Example of Grid Result

+0

Cảm ơn bạn! Chức năng của bạn rất hữu ích! Tôi quyết định không sử dụng k-means vì tôi cần giải pháp động. Và tôi phải đánh dấu các điểm đánh dấu của tôi ở phía máy chủ. Điểm đánh dấu của tôi thường được người dùng lọc. Giải pháp của tôi dựa trên Quadtree. Mỗi điểm đánh dấu có mã tứ của nó (lat, lon là hằng số). Vì vậy, bạn có thể truy vấn nó và phân cụm thông qua PostGis và một yêu cầu SQL nhỏ. – Anton

1

Bạn chỉ có thể cài đặt các tiện ích được hỗ trợ trên Amazon RDS và Kmeans chứ không phải.

ERROR: Extension "kmeans" is not supported by Amazon RDS DETAIL: Installing the extension "kmeans" failed, because it is not on the list of extensions supported by Amazon RDS. HINT: Amazon RDS allows users with rds_superuser role to install supported extensions. See: SHOW rds.extensions; alexandria_development=> SHOW rds.extensions

RDS phần mở rộng:

btree_gin, btree_gist, chkpass, citext, cube, dblink, dict_int, dict_xsyn, earthdistance, fuzzystrmatch, hstore, intagg, intarray, isn, ltree, pgcrypto, pgrowlocks, pg_prewarm, pg_stat_statements, pg_trgm, plcoffee, plls, plperl, plpgsql, pltcl, plv8, postgis, postgis_tiger_geocoder, postgis_topology, postgres_fdw, sslinfo, tablefunc, test_parser, tsearch2, unaccent, uuid-ossp

Các vấn đề liên quan