Код, указанный в вопросе, нуждается в двух изменениях
$host = "ssl://smtp.gmail.com";
$port = "465";
Порт 465 необходим для соединения SSL.
OpenCV - одна из самых ужасно написанных библиотек, которые мне когда-либо приходилось использовать. С другой стороны, Matlab делает это очень аккуратно.
Если вам нужно кодировать его самостоятельно, алгоритм невероятно прост, насколько он эффективен.
Действительно, KMeans - действительно простой алгоритм. Есть ли веская причина, почему бы не написать код самостоятельно? Я сделал это в Qt, а затем без особых проблем портировал код на простой старый STL.
Я начал разделять идею Джоэла: никаких внешних зависимостей, поэтому, пожалуйста, не стесняйтесь рассказывать мне, что хорошего в большом часть программного обеспечения, которое вы не контролируете, и другие, ответившие на этот вопрос, уже упоминали, что это не очень хорошая программа /
Говорить дешево, настоящий мужчина показывает свой код миру: http://github.com/elcuco/data_mining_demo
Я должен немного очистить код, чтобы он был более общим, а текущая версия не портирована на STL, но это только начало!
Кажется, все, кто писал, забыли упомянуть библиотеку обработки изображений defacto: OpenCV http://sourceforge.net/projects/opencvlibrary/ . Вам нужно будет написать оболочку JNI вокруг кода C OpenCV, чтобы заставить KMeans работать, но дополнительное преимущество будет
Главный недостаток заключается в том, что вам придется писать оболочку JNI. Однажды мне потребовалась процедура сопоставления шаблонов, и я столкнулся со многими альтернативами, но я обнаружил, что OpenCV безусловно лучший, хотя мне пришлось написать для него оболочку JNI.
В «Программирование коллективного разума» есть очень хорошая реализация Python кластеризации K-средних. Я настоятельно рекомендую его.
Я понимаю, что вам придется переводить на Java, но это не выглядит слишком сложным.
Я сам не изучал код, но есть многопоточная реализация K-средних, приведенная в этой статье JavaWorld это выглядит довольно поучительно.
Классификация, кластеризация и группировка - хорошо развитые области ИР. Здесь есть очень хорошая (Java) библиотека / программное обеспечение (с открытым исходным кодом) под названием WEKA. Там есть несколько алгоритмов кластеризации. Хотя есть кривая обучения, это может быть полезно, когда вы столкнетесь с более серьезными проблемами.