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