python模型预测结果 取整_sklearn 文本分类器做预测时,如何拿到预测结果。。。...

10

2016-01-28 08:04:01 +08:00

感谢楼上各位的回复!

完整的情况是这样的:

0. sklearn 官方给出的文本分类例子中,常用的是一个叫 20-news-group 的语料,是英文语料;

1. 因为想做中文文本分类,我用的语料是自己从网易新闻的各个二级频道爬出来的一些新闻正文内容,

即:娱乐( 100 篇文章),体育( xx 篇),财经( xx 篇),教育( xx 篇),等等;

前面的频道名称就是分类类别标签,每个分类下面的文章是支持(或者说训练)这个分类的语料;

2. 在 sklearn 中,先 load_files 加载这些分类和各自的语料,作为 training_data ( training_data.target_names 就是所有类别标签的 list );

training_data 可以划分出 x_train(新闻正文)和 y_train(类别标签 list ,与 x_train 一一对应)

3. 然后使用 TFIDFVectorizer (配合 jieba 中文分词器),计算语料中分词的 TFIDF 值,将 x_train 转换为 X_train

4. 使用 X_train 和 y_train 去训练分类器;我选择的分类器有:朴素贝叶斯, SGDClassifier 这两种;

其中朴素贝叶斯分类器下,二八划分的语料,得到的测试结果差得令人发指(准确率 30%),就没有作为预测使用(差的原因还没分析出来,不过这是另外一个问题了)

5. 使用 SGDClassifier 在二八划分的语料中,测试预测准确率在 70%左右;现在就又找了一篇新闻正文,想用这个分类器做分类预测;

上述过程在 sklearn 官方文档的文本分类器 demo 代码中基本都能找到,就不贴代码了。

6. 在 pred = clf.predict(X_new) 中,得到的 pred 是一个 ndarray , 里面的值是 training_data.target_names 中每个标签的 index (不是百分百肯定,也有可能这里有误解),

我猜想:这是对待预测数据中分词结果,就是每个词语属于哪个标签的预测, 所以才会有原 po 中尝试的解决方案,就是统计每个标签的出现次数,将出现次数最多的作为这次预测的结果;

7. 问题是,按照第 6 步的思路,即使我拿原始训练语料(比如训练用的财经类下面的新闻),再用训练好的模型去预测,得到的类别仍然不对,大多数结果都不是财经类。。。

不知道这样描述够清楚吗?

欢迎继续讨论~~~

有问必答,需要的话可以将完整代码贴出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值