Алгоритм Средств K-

Код, указанный в вопросе, нуждается в двух изменениях

$host = "ssl://smtp.gmail.com";
$port = "465";

Порт 465 необходим для соединения SSL.

5
задан Ani Menon 17 June 2016 в 06:30
поделиться

6 ответов

OpenCV - одна из самых ужасно написанных библиотек, которые мне когда-либо приходилось использовать. С другой стороны, Matlab делает это очень аккуратно.

Если вам нужно кодировать его самостоятельно, алгоритм невероятно прост, насколько он эффективен.

  1. Выберите количество кластеров (k)
  2. Сделайте k точек (они будут центроидами)
  3. Произвести случайное расположение всех этих точек.
  4. Вычислить евклидово расстояние от каждой точки до всех центроидов
  5. Назначить «принадлежность» каждой точки к ближайшему центроиду
  6. Установить новые центроиды путем усреднения местоположений всех точек, принадлежащих данному кластеру
  7. Перейти к 4 Пока не будет достигнута сходимость или внесенные изменения не имеют значения.
3
ответ дан 18 December 2019 в 07:31
поделиться

Действительно, KMeans - действительно простой алгоритм. Есть ли веская причина, почему бы не написать код самостоятельно? Я сделал это в Qt, а затем без особых проблем портировал код на простой старый STL.

Я начал разделять идею Джоэла: никаких внешних зависимостей, поэтому, пожалуйста, не стесняйтесь рассказывать мне, что хорошего в большом часть программного обеспечения, которое вы не контролируете, и другие, ответившие на этот вопрос, уже упоминали, что это не очень хорошая программа /

Говорить дешево, настоящий мужчина показывает свой код миру: http://github.com/elcuco/data_mining_demo

Я должен немного очистить код, чтобы он был более общим, а текущая версия не портирована на STL, но это только начало!

3
ответ дан 18 December 2019 в 07:31
поделиться

Кажется, все, кто писал, забыли упомянуть библиотеку обработки изображений defacto: OpenCV http://sourceforge.net/projects/opencvlibrary/ . Вам нужно будет написать оболочку JNI вокруг кода C OpenCV, чтобы заставить KMeans работать, но дополнительное преимущество будет

  1. . Вы бы знали, что алгоритм KMeans сильно оптимизирован
  2. OpenCV широко использует ваш графический процессор, поэтому он работает молниеносно.

Главный недостаток заключается в том, что вам придется писать оболочку JNI. Однажды мне потребовалась процедура сопоставления шаблонов, и я столкнулся со многими альтернативами, но я обнаружил, что OpenCV безусловно лучший, хотя мне пришлось написать для него оболочку JNI.

1
ответ дан 18 December 2019 в 07:31
поделиться

В «Программирование коллективного разума» есть очень хорошая реализация Python кластеризации K-средних. Я настоятельно рекомендую его.

Я понимаю, что вам придется переводить на Java, но это не выглядит слишком сложным.

3
ответ дан 18 December 2019 в 07:31
поделиться

Я сам не изучал код, но есть многопоточная реализация K-средних, приведенная в этой статье JavaWorld это выглядит довольно поучительно.

5
ответ дан 18 December 2019 в 07:31
поделиться

Классификация, кластеризация и группировка - хорошо развитые области ИР. Здесь есть очень хорошая (Java) библиотека / программное обеспечение (с открытым исходным кодом) под названием WEKA. Там есть несколько алгоритмов кластеризации. Хотя есть кривая обучения, это может быть полезно, когда вы столкнетесь с более серьезными проблемами.

4
ответ дан 18 December 2019 в 07:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: