我正在从Discogs准备用于k均值聚类算法的数据。问题是专辑的样式在一列中以分隔符的形式表示。
该列看起来像:Pop; Rock; Electronic
如何使用这样的数据训练模型?
我可以尝试做一袋词的方法,对于每种类型,我都会创建一个新列,并将其值设置为0或1(如果专辑具有该类型)。这种方法的问题在于存在许多可能的类型(〜400),我想避免这种方法,因为它会很慢。
答案 0 :(得分:0)
我强烈建议您在列外创建虚拟变量,因为这是解决此类问题的最佳实践。熊猫的get_dummies()是一个非常有用的功能。
要避免这种方法,您可以选择使用熊猫的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]
请注意,要使此方法正常工作,您可能需要先对每个用分号分隔的类型进行排序。