2015-05-19 1 views
3

В настоящее время я работаю над набором данных изображений (250 000 изображений, поэтому столько же, сколько и векторы объектов, каждый из которых состоит из 132 функций) и пытается для использования функции KMeans, предоставляемой sklearn.Python scikit-learn KMeans убивается (9) при вычислении показателя силуэта

Я запустить его на Mac OS X 10.10, Python 2.7 и sklearn 0.15.2, и через некоторое время я только получу:

Убитые: 9

Ошибки при выполнении этой команды линии:

nb_cls = int(raw_input("Number of clusters chosen :")) 
clusterer = sklearn.cluster.KMeans(n_clusters=nb_cls) 
clusters_labels = clusterer.fit_predict(X) 
silhouette = sklearn.metrics.silhouette_score(X, clusters_labels) 
print "n clusters =", nb_cls, "/ silhouette_score =", silhouette 

Пожалуйста, обратите внимание, что whitout расчет силуэт балла, код не убил

Для меньших наборов данных (± 2 500 изображений) тот же алгоритм эффективен и нет такой ошибки Python.

Как я могу избежать этой ошибки? Является ли этот расчет слишком амбициозным для моего ноутбука?

ответ

1

Это означает, что ваш скрипт был убит ОС. В большинстве случаев это потому, что он использовал слишком много памяти. В вашем случае это кажется вероятным, так как ваш код отлично работает, когда вы используете только 2 500 изображений.

Если это проблема с памятью, вам придется либо получить больше ОЗУ (не возможно на Mac?), Использовать другой компьютер с большим объемом оперативной памяти или уменьшить размер набора данных.

+0

Хорошо. Я работаю с 16 ГБ оперативной памяти, но этого может быть недостаточно, согласен. Но есть ли способ предотвратить работу ОС от сценария, даже если это займет больше времени? – Julian

+0

Не знаю. Но если silhouette_score требует, чтобы все данные загружались в память, это, вероятно, вообще не будет возможным. Я думаю, вы должны сначала убедиться, что это проблема памяти, отслеживая выполнение. – TheWalkingCube