Я хочу сгруппировать свои входные данные с помощью 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.
Если вышеупомянутые вызовы ('преобразование' или 'прогнозирование') не работают, можно ли получить метки_ после подбора данных с помощью spark-sklearn? Как я могу это сделать? Предполагая, что мы получили метки_, как я могу сопоставить входные экземпляры с метками_? У них такой же порядок?