Я хочу сгруппировать свои входные данные с помощью DBSCAN и spark_sklearn. Я хотел бы получить метки каждого экземпляра ввода после кластеризации. Является ли это возможным?Кластеризация данных с использованием DBSCAN и spark_sklearn
Чтение документации на http://pythonhosted.org/spark-sklearn, я попытался следующие:
temp_data = Spark DataFrame containing 'key' and 'features' columns,
where 'features' is a Vector.
ke = KeyedEstimator(sklearnEstimator=DBSCAN(), estimatorType="clusterer")
print ke.getOrDefault("estimatorType") --> "clusterer"
ke.fit_pedict(temp_data) --> ERROR: 'KeyedEstimator' object has no attribute 'fit_predict'
k_model = ke.fit(temp_data)
print k_model.getOrDefault("estimatorType") --> "clusterer"
k_model.fit_pedict(temp_data) --> ERROR: 'KeyedModel' object has no attribute 'fit_predict'
k_model.predict(temp_data) --> ERROR: 'KeyedModel' object has no attribute 'predict'
k_model.transform(temp_data) --> ERROR: estimatorType assumed to be a clusterer, but sklearnEstimator is missing fit_predict()
(NOTE: sklearn.cluster.DBSCAN actually have fit_predict() method)
что я обычно делаю с помощью sklearn (без искры), чтобы соответствовать (dbscan_model.fit(temp_data-features)
) и получить этикетки от модели (labels = dbscan_model.labels_
). Это также прекрасно, если я могу получить атрибут 'labels_', используя spark-sklearn.
Если вышеупомянутые вызовы ('transform' или 'pred') не работают, возможно ли получить «метки_» после установки данных с использованием spark-sklearn? Как я могу это сделать? Предполагая, что мы получили «метки_», как я могу сопоставить входные экземпляры с метками_? У них одинаковый порядок?
Избегайте использование программного обеспечения, которое обтекает программное обеспечение, которое обволакивает программное обеспечение ... stackinglayer на слой убивает производительность (и pyspark уже имеет репутацию медленно), и вы не получите все функциональные возможности больше. –