Python 一个热编码验证数据
我有一个热编码特征矩阵,其中特征是训练数据的子串 我只有最后一个数据帧,它包含Python 一个热编码验证数据,python,pandas,one-hot-encoding,Python,Pandas,One Hot Encoding,我有一个热编码特征矩阵,其中特征是训练数据的子串 我只有最后一个数据帧,它包含行=样本,列=子字符串(一个热编码)。 现在我想对一组新数据进行热编码。 数据由rows=samples,columns=String组成,我需要检查每个示例的字符串是否包含任何子字符串(特征),并对其进行热编码 循环遍历所有字符串和子字符串的速度不够快,因为我有大量的数据。 解决这个问题的快速方法是什么 编辑: 例子: 我在一个列表中有一些字符串,并且有一个热编码矩阵,其中包含以下子字符串: strings = ['
行=样本,列=子字符串(一个热编码)
。
现在我想对一组新数据进行热编码。
数据由rows=samples,columns=String
组成,我需要检查每个示例的字符串是否包含任何子字符串(特征),并对其进行热编码
循环遍历所有字符串和子字符串的速度不够快,因为我有大量的数据。
解决这个问题的快速方法是什么
编辑:
例子:
我在一个列表中有一些字符串,并且有一个热编码矩阵,其中包含以下子字符串:
strings = ['foobarista', 'foobar']
substrings = {'foo' : [1,1] ,
'bar' : [1,1],
'ist' : [0,1],
'sta' : [0,1]}
df_one_hot = pd.DataFrame(substrings)
假设这是我的训练数据,所以我有功能foo、bar、ist、sta
现在我有了新的数据:
new_strings = ['barista', 'barfoo', 'house']
并且要检查这些新字符串,如果它们包含上面数据帧中的任何子字符串
new_substrings = {'foo' : [0,1,0] ,
'bar' : [1,1,0],
'ist' : [1,0,0],
'sta' : [1,0,0]}
new_df = pd.DataFrame(new_substrings)
获取新的子字符串可以通过双列表理解来完成。内部理解贯穿
新字符串
中的所有条目,外部理解为所有子字符串
创建字典:
import re
new_strings = ['barista', 'barfoo', 'house']
sub_strings = ['foo', 'bar', 'ist', 'sta']
new_substrings= {sub_s: [ (re.search(sub_s, s) is not None)*1 for s in new_strings] for sub_s in sub_strings}
print(new_substrings)
这将返回:
{'foo': [0, 1, 0], 'bar': [1, 1, 0], 'ist': [1, 0, 0], 'sta': [1, 0, 0]}
然后,您可以使用
df=pd创建数据帧。数据帧(新的子字符串)
您可以发布一个数据示例,理想情况下作为一段可以在python中运行的代码吗?此外,您希望您的输出是什么样子的,也将其显示为一个表格,而不是用文本进行解释。我编辑了这篇文章并添加了一个示例