Pandas使用apply()生成特征向量



我有一个具有两个特征的数据集:class (int)和content (text)。

每行内容需要被向量化为一组匹配正则表达式的布尔特征。我的矢量化函数返回一个具有17个特征的字典,如:

{'email':1, 'phone':0, 'curses':1,....}

现在我的代码是:

vectorized = data[['content', 'class']].join(
    pd.DataFrame(
        data.content.apply(lambda c: vectorize_content(c)).tolist(),
        dtype = int,
        index = data.index
    )
)

期望的结果是:

class content            email phone curse ...
    0 'Hi'               0     0     0 ...
    1 'john@doe.com'     1     0     0 ...

在真实的word数据集(~1mm行)中,这需要很长时间!

我的目标是有一个最终的数据集,类和每一个布尔特征作为列来馈送RandomForestClassifier。

我对sklearn/pandas真的很陌生,所以很有可能我做错了什么。

关于如何优化这个过程有什么建议吗?

谢谢!

我认为用这段代码可以运行得更快。

# Simulate function
def vectorize_content(c):
    return {'email':1, 'phone':0, 'curses':1}
# Simulate test data
data = pd.DataFrame({'class': [0,1], 'content': ['Hi','john@doe.com']})
vectorized = pd.concat([data, vectorized['content'].apply(lambda c: pd.Series(vectorize_content(c)))], axis=1)
# Result
   class       content  curses  email  phone
0      0            Hi       1      1      0
1      1  john@doe.com       1      1      0

相关内容

  • 没有找到相关文章

最新更新