一切过往,皆为序章,一切未知,皆为终章。

分类器、logistic回归

相关性

1.相关性是一种测度,用来表示两个变量在同一方向上发生变化的程度,如果x和y在变化方向上相同,那么这两个变量就是正相关;如果变化方向相反,就是负相关;如果变量之间没有关系,那么相关性就是0。

分类器

1.分类模型也称为分类器,用于对样本进行标注,表明这个样本属于一个有限的类别集合中的那个类。
2.单分类学习中,训练集中的数据仅来自一个类别,目标是学习一个模型以预测某个样本是否属于这个类别;
3.二分类学习中,训练集中的样本全部来自两个类别(通常称为阳性和阴性),目标是找到一个可以区分两个类别的边界;
4.多分类学习的目标是可以找到可以将多个类别区分开来的边界。

分类器的评估

1.每种分类器在训练 数据上的准确度可以计算如下:
准确度 = (真阳性+真阴性)/(真阳性+真阴性+假阳性+假阴性)
当两个类的大小差不多时,用准确度评价分类器是非常合适的。存在严重类别不平衡时,用准确度评价分类器会得到非常糟糕的结果。
2.当存在类别不平衡时,仍有一些统计量评估分类器:
灵敏度 = 真阳性 / (真阳性 + 假阴性)
特异度 = 真阴性 / (真阴性 + 假阳性)
阳性预测值 = 真阳性 / (真阳性 + 假阳性)
阴性预测值 = 真阴性 /(真阴性 + 假阴性)
灵敏度(某些领域称为召回率)即真阳性率,也就是正确识别阴性数量与实际阳性数量的比例;
特异度(某些领域称为精确率)即真阴性率,也就是正确识别阴性数量与实际阴性数量的比例;
阳性预测值是一个被分类为阳性的样本确实是阳性的概率;
阴性预测值是一个被分类为阴性的样本确实是阴性的概率。

K近邻

1.K最近邻可能是最简单的分类算法。通过这种方法“学习”的模型就是训练集本身。对新样本进行标注时,就是根据他们与训练集样本的相似度而进行的。
2.kNN是一种基本的分类和回归方法。kNN的输入是测试数据和训练样本数据集,输出是测试样本的类别。kNN没有显示的训练过程,在测试时,计算测试样本和所有训练样本的距离,根据最近的K个训练样本的类别,通过多数投票的方式进行预测。
3.KNN算法三要素,分别是距离度量、K的大小、分类规则,在KNN中,当训练数据集和三要素确定后,相当于将特征空间划分为一些子空间,对于每个训练实例xi,距离该点比距离其他店更近的所有点组成了一个区域,每个区域的类别由决策规则确定且唯一,从而将整个区域划分。对于任何一个测试点,找到其所属的子空间,其类别即为该子空间的类别。

logistic回归

1.Python库sklearn对logistic回归进行了非常好的实现,并提供了很多与机器学习相关的实用函数和类;
LogisticRegression类包含在模块sklearn.linear_model中,这个类的__init__方法有很多参数 可以进行设置,比如用来求解回归方程的最优化算法;这些参数都有默认值,在多数情况下,实用默认值即可;
LogisticRegression类的核心方法是fit,这个方法使用两个同样长度的序列(元组、列表、数组)作为参数,第一个参数是特征向量序列,第二个参数是与特征向量对应的标签序列,在文献中,这些标签通常被称为结果;
fit方法返回一个LogisticRegression类型的对象,对于其中特征向量的每个特征,已经通过学习得到了相应的系数,这些系数通常称为特征权重,反映了特征与结果之间的关系,特征权重为正,表明特征与结果是正相关;特征权重为否,表明特征与结果负相关。权重的绝对值则会影响相关性的强度,这些权重的值可以通过LogisticRegression的属性coef_进行访问。因为可以训练处具有多个结果的LogisticRegression对象,所以coef_的值是一个序列,序列中每个元素都是对应于某个结果的权重序列。eg:model.coef_[1][0]表示第二个结果的第一个特征的系数的值。
一旦学习了这些写系数,就可以使用LogisticRegresion类的predict_proba方法预测与某个特征向量对应的结果。predict_proba方法只需要1个参数,即特征向量的序列。它返回一个数组的数组,每个数组表示一个特征向量。在返回的数组中,每个元素都包含一个相应特征向量的预测值。预测值也是一个数组,因为它包含了建立model时所用的标签的概率。
2.对于线性回归模型,知道改变决策阈值所带来的影响非常容易,因此人们通常使用受试者工作曲线,或称ROC曲线,来形象地表示灵敏度和特异度之间的折中关系。这种曲线可以绘制出多个决策阈值的真阳性率(灵敏度)和假阳性率(1-特异度)之间的关系。
posted @ 2018-09-12 10:58  爱吃帮帮糖  阅读(334)  评论(0编辑  收藏  举报