我有一个包含两个功能的数据集: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 ...
在真正的单词数据集(~1mm行)中,这需要很长时间!
我的目标是拥有一个包含类的最终数据集,并将每个布尔特征作为列来提供RandomForestClassifier。
我对sklearn / pandas真的很陌生,所以我很可能做错了。
有关如何优化此过程的任何提示?
谢谢!
答案 0 :(得分:0)
我认为使用此代码可以更快地运行。
# 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