我有一个数据集,其中包含:(“wordsList”和“classList”文件)。
wordsList 文件包含 72 封预处理过的电子邮件。每一行都是从每封电子邮件中提取的单词列表。
classList 文件包含指示电子邮件是普通电子邮件还是广告电子邮件的类标签(0 表示普通电子邮件,1 表示广告电子邮件)。
我的任务是用 Python 开发一个朴素贝叶斯分类器作为电子邮件过滤器。即,分类器预测电子邮件是普通电子邮件还是广告。
为了开发此功能,我需要使用分层抽样从 72 行中选择 66 行进行训练,其余 6 行进行测试。然后返回这6条记录的分类概率。 但对我来说坏消息是我不能使用任何机器学习库,只能使用 NumPy 和 SciPy。
有什么办法可以实现吗?如果是的话,是否有任何示例代码可以从头开始实现此方法?预先感谢您!
最佳答案
最简单的解决方案是使用 pandas 的 groupby
方法,然后使用 frac=0.91
应用采样,以在您的情况下从 72 行中获取 66 行:
cL2=cL.groupby(['classList']).apply(lambda x: x.sample(frac=0.91))
这会创建一个 MultiIndex 数据帧,通过重置索引、删除与 groupby
方法关联的列“classList”,并可选择删除一个额外的数据帧(根据分组变量的数量,level_1
此处):
cL3=cL2.drop(columns=['classList']).reset_index().drop(columns=['level_1'])
关于python - 在 Python 中进行分层采样,无需使用任何机器学习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60261183/