我有一个具有两个特征的数据集: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