我正试图为scikit learn准备一个数据集,计划构建pandas数据帧,将其提供给决策树分类器。
数据代表不同的公司,具有不同的标准,但有些标准可以有多个值,例如"客户细分市场",对于任何给定的公司,它可以是SMB、中端市场、企业等中的任何一个或全部。还有其他类似的标准/列,具有多个可能的值。我需要根据个人价值做出决定,而不是根据总体价值做出决定——因此,A公司适用于SMB,A公司适合于中端市场,而不是将客户A"分组"用于SMB和中端市场。
有关于如何处理这一问题的指导吗?我是否需要为给定公司的每个变体生成行,以便将其输入到学习例程中?这样一个输入:
Company,Segment
A,SMB:MM:ENT
变为:
A, SMB
A, MM
A, ENT
以及可能来自其他标准/列的任何其他变体,例如"客户垂直",也可能包括多个值?这似乎会大大增加数据集的大小。有没有更好的方法来构建这些数据和/或处理这种情况?
我的最终目标是让用户用简单的问题完成一个简短的调查,并将他们的回答映射到价值观中,以获得对给定细分市场、垂直领域、产品类别等"正确"公司的预测。但我正在努力构建正确的学习数据集来实现这一点。
让我们试试。
df = pd.DataFrame({'company':['A','B'], 'segment':['SMB:MM:ENT', 'SMB:MM']})
expended_segment = df.segment.str.split(':', expand=True)
expended_segment.columns = ['segment'+str(i) for i in range(len(expended_segment.columns))]
wide_df = pd.concat([df.company, expended_segment], axis=1)
result = pd.melt(wide_df, id_vars=['company'], value_vars=list(set(wide_df.columns)-set(['company'])))
result.dropna()