机器学习oneclass进行文本分类
2022-01-30 本文已影响0人
刘小白DOER
今天实践一个bbc-text-oneclass-classificaiton,使用单样本训练然后预测文本进行分类,判断是否属于此类样本。oneclass在实际生产中是有应用场景的,负样本获取成本高,样本严重的不平衡、负类样本太过多样化等等,那么oneclass分类就排上用场了。
整个算法分为五个部分。
1、Data Preparation
数据集包含两个类型:category类型和text文本,一共2225行数据。
![](https://img.haomeiwen.com/i24447700/ffda7cd1b1cd875b.png)
数据集中 2225 没有空值,各个类别分布算是均匀,接下来就是使用511个sport样本进行单样本训练,然后预测全部的样本是否属于整个sport样本。
![](https://img.haomeiwen.com/i24447700/8653ec6eaba8ba2e.png)
目标sport样本类别数字化修改为1,其他类别数字化为-1。全部目标sport样本作为训练集,所有类别数据作为测试集。
![](https://img.haomeiwen.com/i24447700/b063cbed7828bafd.png)
2、Cleaning and Tokenization
定义CleanTextTransformer类来清洗数据,将文本转为小写,同时将换行符替换为空格。
![](https://img.haomeiwen.com/i24447700/e5fee3c461c73bdb.png)
定义STOPLIST和SYMBOLS,在分析文本时需要剔除这些无意义的文本。
![](https://img.haomeiwen.com/i24447700/7e2dfc4ab5643ed6.png)
定义函数tokenizeText完成text文本筛选、转换和输出。
![](https://img.haomeiwen.com/i24447700/8c47a816a0feb3f5.png)
3、Feature Extraction
使用HashingVectorizer哈希技巧向量化大文本向量,提取文本特征。
![](https://img.haomeiwen.com/i24447700/7886910909399b45.png)
4、Train One-class classificaiton model
使用OneClassSVM进行模型训练,使用训练好的模型在train训练集上再次预测验证,成功率为82%。
![](https://img.haomeiwen.com/i24447700/dcfe36b62be1ac46.png)
5、Predict one-class on test data
使用模型在测试集上执行预测,成功率为62%。
![](https://img.haomeiwen.com/i24447700/628334405a28f08e.png)