Sklearn 与 TensorFlow 机器学习实用指南
https://hand2st.apachecn.org/#/
文章目录
一. 分类问题种类
- 二分类
- 多类分类
- 多标签分类
- 多输出分类
- 层级分类
二. 评价指标
-
预备知识——混淆矩阵
-
准确率
-
召回率
-
F1值
-
ROC曲线
三.分类流程(预处理、分词、去停用词、取名词、特征提取、特征加权tf_idf、构造分类器)
3.1.分词(以jieba库为例)
1.算法:基于概率图模型的条件随机场
概率图模型:是一类用图模式来表达基于概率相关的模型的总称。
(1)模型表示2种:贝叶斯网络(有向、因果)、马尔科夫随机场(无向、相互作用)
(2)模型学习:转化为数学公式
(3)模型预测:
2.条件随机场(判别式无向图模型)
(1)基本思路:对汉字进行标注即由字构成词(组词),不仅考虑文字词语出现的频率信息,而且考虑上下文语境,具备较好的学习能力,对歧义词和未登录词的识别具有良好的效果;
缺点:训练周期长、运营时计算量大,性能不如词典分词
(2)具体实现:
CRF认为一个字有四种状态:词头(Begin,B)、词中(Middle,M)、词尾(End,E)、单字成词(Single,S)。
分词过程:对词进行标注后、将B和E之间的字以及S单字构成分词。
训练集:已经标注好的语料库
特征学习过程4步走:
a)统计某个字出现的总次数;
b) 统计某个字出现为B、M、E、S的概率(在某种状态下出现的次数/总次数)
c)统计某个字在某个状态下,转移到下一个状态的概率(状态转移概率的计算)疑问,怎么计算
d)a、b、c过程与隐马尔可夫过程相似,但是条件随机场会学习上下文关系。如当前状态为B的“我”,下一个字是“们”的概率,当前状态为S的“我”,上一个字是“的”的概率,下一个字是“爱”的概率。
分词:将输入变成字符数组,如“我喜欢吃芒果”变为【‘我’,‘喜’,‘欢’,‘吃’,‘芒’,‘果’】;
取出特征学习过程中学习到的每个字的特征;
为确定每个字的状态,可绘制一个表格;
利用维特比算法求出概率最大路径,取出路径中对应的状态,完成分词。
代码实现:
# jieba库的分词算法:基于概率图模型的条件随机场
# git https://github.com/xgli/jieba
import jieba
seg_list = jieba.cut("我喜欢吃芒果",cut_all=True,HMM=True)
#分词两种模式,全模式、精确模式(默认),搜索引擎模式;是否使用HMM模