Есть ли простой способ использовать DBSCAN в python с размерами выше 2? - PullRequest
0 голосов
/ 17 апреля 2020

Я работал над проектом машинного обучения с использованием алгоритмов кластеризации, и я изучаю использование DBSCAN scikit-learn на основе данных, с которыми я работаю. Однако всякий раз, когда я пытаюсь запустить его с моими массивами объектов, он выдает следующую ошибку:

ValueError: Found array with dim 3. Estimator expected <= 2.

Это создает у меня впечатление, что DBSCAN от Scikit поддерживает только двумерные функции. Я ошибаюсь, думая об этом? Если нет, то есть ли реализация DBSCAN, которая поддерживает массивы пространственных объектов? Спасибо за любую помощь, которую вы можете предложить.

Редактировать

Вот код, который я использую для моего сценария DBSCAN. Идея состоит в том, чтобы прочитать данные из нескольких различных CSV, сохранить их в массив, а затем выгрузить их в файл выбора, чтобы модель могла загрузить их в будущем и запустить DBSCAN.

def get_clusters(fileList, arraySavePath):
    # Create empty array
    fitting = [];

    # Get values from all files, save to singular array
    for filePath in fileList:
        df = pd.read_csv(filePath, usecols=use_cols);
        fitting.append(df.values.tolist());

    # Save array to it's own csv file    
    with open(arraySavePath, "wb") as fp:
        pickle.dump(fitting, fp);


def predict_cluster(modelPath, predictInput):
    # Load the cluster data
    with open(modelPath, "rb") as fp:
        fitting = pickle.load(fp);

    # DBSCAN fit
    clustering = DBSCAN(eps=3, min_samples=2);
    clustering.fit(fitting);

    # Predict the label
    return clustering.predict_fit(predictInput);
...