Кластеризация - проблемы со столбцами, которые имеют несколько значений - PullRequest
0 голосов
/ 30 мая 2019

Я готовлю данные из Discogs для алгоритма кластеризации k средних. Проблема в том, что стили альбомов представлены в одном столбце с разделителем между ними.

Колонка выглядит следующим образом: Pop; Rock; Electronic

Как тренировать модель с такими данными?

Я могу попытаться использовать подход с набором слов, где для каждого жанра я создаю новый столбец и присваиваю ему значение 0 или 1 (если альбом имеет этот жанр). Проблема с этим подходом состоит в том, что существует много возможных жанров (~ 400), и я хотел бы избежать этого подхода, потому что он будет медленным.

1 Ответ

0 голосов
/ 30 мая 2019

Я настоятельно рекомендую вам создавать манекены из столбца, так как это наилучшая практика при решении такой проблемы, как эта.Очень полезная функция - pandas's get_dummies () .

. Чтобы избежать этого метода, вы можете альтернативно создать фактор из уникальных жанров в столбцах, используя pandas's factorize () :

# Import libraries
import pandas as pd
import numpy as np

# Create dataframe with genres
df = pd.DataFrame(np.array(
[["Pop;Rock;HipHop"], 
["Rock;HipHop"], 
["Country;HipHop"], 
["Pop"],
["Pop;Rock;HipHop"], 
["Pop"]]), columns = ["genre"])

# Factorize the genre column (i.e., assign a value to each unique combination)
labels, uniques = pd.factorize(df["genre"], sort=True)

# Print the numerical representation of each unique combination
print(labels)

Вывод: [0 1 2 3 0 3]

Обратите внимание, что для правильной работы этого метода может потребоваться сначала отсортировать каждый из разделенных точкой с запятой жанров.

...