Создание функции HDBSCAN на pyspark - PullRequest
0 голосов
/ 26 июня 2019

Я хотел бы выполнить модель HDBSCAN в виде свободной текстовой переменной из набора данных, а затем перекрасить метку в тот же набор данных. Используемый язык: PYSPARK

Вот моя функция PYSPARK:

def apply_hdbscan(tf_idf, input_column, ctx):
    tfidf_matrix = csr_matrix(np.array([x[0] for x in np.array(tf_idf.select(input_column).collect())]))
    clusterer = hdbscan.HDBSCAN(metric='cosine', min_cluster_size=2)
    fitted_values = clusterer.fit(tfidf_matrix)
    id_nc = np.array([x[0] for x in np.array(tf_idf.select("skywise_non_conformity_id").collect())])
    cSchema = StructType([StructField("skywise_non_conformity_id", StringType()), StructField("hdbscan_cluster_id", IntegerType())])
    list_dataframe = []
    for i in range(len(fitted_values.labels_)):
        list_dataframe.append([id_nc[i].item(), fitted_values.labels_[i].item()])
    df_clusters = ctx.spark_session.createDataFrame(list_dataframe, schema=cSchema)
    hdbscan_output = (
        tf_idf
        .join(df_clusters, ["skywise_non_conformity_id"])
    )
    return hdbscan_output

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

...