如何对列中的多个字符串进行因式分解或矢量化以应用TFIDF构建词汇表

时间:2018-10-15 07:36:53

标签: python vectorization tf-idf factorization

下面是一个名为df的数据帧的示例,其中包含两个重要列。我希望我的模型学习Composition列中的内容,并使用TFIDF构建词汇表,然后帮助预测Item列。

UID    Item                 Composition
1      [Sweater]            [Wool, knitting, handmade, knitting needle]
2      [Jeans]              [Denim, cotton, orange thread, stonewash, blue dye]
3      [CottonTrouser]      [Cotton, littlepolyster, weaving, handstitch, vcut]
4      [SilkShirt]          [wormsilk, artificialsilk, weaving, hand looming, color dying, coating]
5      [Carpet]             [Wool, cotton, organic cotton, knitting, sewing]

我应用了以下内容

df['Item'] = df['Item'].apply(lambda x: ''.join(str(x).strip('[]') if isinstance(x, list) else x))
df['Composition'] = df['Composition'].apply(lambda x: ''.join(str(x).strip('[]') if isinstance(x, list) else x))

现在看起来像下面。它由两列充满字符串的列组成。

UID    Item                 Composition
1      'Sweater'            'Wool', knitting', 'handmade', 'knitting' 'needle'
2      'Jeans'              'Denim', 'cotton', 'orange thread', 'stonewash', 'blue dye'
3      'CottonTrouser'      'Cotton', 'littlepolyster', 'weaving', 'handstitch', 'vcut'
4      'SilkShirt'          'wormsilk', 'artificialsilk', 'weaving', 'hand looming', 'color dying', 'coating'
5      'Carpet'             'Wool', 'cotton', 'organic cotton', 'knitting', 'sewing'

我正在尝试将pd.factorize()应用于数据,但效果不佳。我想将字符串转换为整数并使模型学习单词。

print(df['Indexer'])
0       [0, 1, 2, 3, 4, 5]
1       Index([''Denim ', 'cotton', 'orange thread...
2                                                     NaN
3                                                     NaN
4                                                     NaN

我想使用每个Item列中找到的字符串的组合来预测Composition列的值。需要一些有关如何使用TFIDF的专家建议。完成此操作后,我希望将其通过MultinomialNB分类器或任何此类分类器进行预测。

0 个答案:

没有答案