Python 预处理多值特征?

Python 预处理多值特征?,python,scikit-learn,feature-extraction,Python,Scikit Learn,Feature Extraction,如何预处理多值特征(类型ID) 因为我需要为一列中的每一行分配一个数值,但预处理此ID的效率如何 msno |city |bd |gender| song_id| song_length| genre_ids| artist_name 1 12 33 0 11 222 372 89 2 11 23 1 1 202 372|374|

如何预处理多值特征(类型ID)

因为我需要为一列中的每一行分配一个数值,但预处理此ID的效率如何

msno  |city |bd  |gender| song_id| song_length| genre_ids| artist_name 
1      12   33    0       11       222          372                89   
2      11   23    1       1        202          372|374|375        99
3      14   22    1       2        300          386                78
您可以使用软件包解决您的任务:

import pandas as pd

df = pd.DataFrame({'msno': [1, 2, 3],
                   'city': [12, 11, 14],
                   'bd': [33, 23, 22],
                   'gender': [0, 1, 1],
                   'song_id': [11, 1, 2],
                   'song_length': [222, 202, 300],
                   'genre_ids': ['372', '372|374|375', '386'],
                   'artist_name': [89, 99, 78]})

genre_ids_dummies = (pd.get_dummies(df.genre_ids.apply(lambda x: x.split('|'))
                                                .apply(pd.Series)
                                                .stack()).sum(level=0))
df_processed = pd.concat(objs=[df.drop(labels='genre_ids', axis=1), 
                               genre_ids_dummies], axis=1)

所以单向war为每个类型id构造一个列,并将其编码为sparsematrix(一个热编码)。然而,为了压缩这个巨大的矩阵,你可以尝试使用一些无监督的学习方法吗?