Python中的分层采样,不使用任何机器学习

我有一个包含:(“wordsList”和“classList”文件)的数据集。

wordsList 文件包含 72 封预处理的电子邮件。每行都是从每封电子邮件中提取的单词列表。

classList 文件包含指示电子邮件是普通电子邮件还是广告的类标签(0 表示普通电子邮件,1 表示广告)。

我的任务是开发一个朴素贝叶斯分类器作为Python中的电子邮件过滤器。也就是说,分类器预测电子邮件是普通电子邮件还是广告。

为了开发这个,我需要使用分层采样从72行中选择66行进行训练,其余6行用于测试。然后返回这 6 条记录的分类概率。但对我来说坏消息是,我不能使用任何机器学习库,只能使用NumPy和SciPy。

有没有办法实现这一点?如果是这样,是否有任何从头开始实现此方法的示例代码?提前感谢您!

http://img1.mukewang.com/62e8dcab0001618704970409.jpg

http://img2.mukewang.com/62e8dcb400010adf14520523.jpg

jeck猫
浏览 133回答 1
1回答

一只名叫tom的猫

最简单的解决方案是使用 pandas 的方法,然后应用采样,在你的情况下从 72 行中得到 66 行:groupbyfrac=0.91cL2=cL.groupby(['classList']).apply(lambda x: x.sample(frac=0.91))这将创建一个 MultiIndex 数据帧,该数据帧通过重置索引、删除与该方法关联的列'classList',并选择性地删除一个额外的数据帧(此处参照分组变量的数量命名):将其转换为普通数据帧:groupbylevel_1cL3=cL2.drop(columns=['classList']).reset_index().drop(columns=['level_1'])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python