Datawhale 集成学习(上)—— sklearn构建分类项目(1)
前言
主要是通过sklearn进行分类项目的构建,本节主要内容是逻辑回归和基于贝叶斯公式的线性判别分析
一、使用sklearn中的数据集构建分类项目:
代码如下:
from sklearn import datasets
iris = datasets.load_iris()
X = iris.data
y = iris.target
feature = iris.feature_names
data = pd.DataFrame(X,columns=feature)
data['target'] = y
data.head()
二、选择度量模型性能的指标
度量分类模型的指标和回归的指标有很大的差异,首先是因为分类问题本身的因变量是离散变量,因此像定义回归的指标那样,单单衡量预测值和因变量的相似度可能行不通。其次,在分类任务中,我们对于每个类别犯错的代价不尽相同,例如:我们将癌症患者错误预测为无癌症和无癌症患者错误预测为癌症患者,在医院和个人的代价都是不同的,前者会使得患者无法得到及时的救治而耽搁了最佳治疗时间甚至付出生命的代价,而后者只需要在后续的治疗过程中继续取证就好了,因此我们很不希望出现前者,当我们发生了前者这样的错误的时候会认为建立的模型是很差的。为了解决这些问题,我们必须将各种情况分开讨论,然后给出评价指标。
真阳性TP:预测值和真实值都为正例;
真阴性TN:预测值与真实值都为正例;
假阳性FP:预测值为正,实际值为负;
假阴性FN:预测值为负,实际值为正;
分类指标在语义分割中已经有过介绍。
三、logistic regression
主要是基于问题种类的不同,由于回归问题和分类问题的目标不同,回归问题中因变量是连续的,而分类问题中因变量是离散的。所有我们
(1)需要将线性回归转换成逻辑回归:
z ( x ) = − w T x z(x) = - {w^T}x z(x)=−wTx通过sigmoid函数将线性回归转换成逻辑回归:
p 1 = p ( y = 1 ∣ x ) = 1 1 + e − w T x p_1=p(y = 1|x) = \frac{1}{
{1 + {e^{ - {w^T}x}}}} p1=p(y=1∣x)=1+e−wTx1
这样用过sigmoid函数转换之后得到的就是一个概率值,这样的一个概率值表示为:
p ( y = 1 ∣ x ) = p 1 y ( 1 − p 1 ) 1 − y p(y = 1|x) = p_1^y{(1 - {p_1})^{1 - y}} p(y=1∣x)=p1y(1−p1)1−y
也就是当 y=1时 p ( y ∣ x ) = p 1 p(y|x)=p_1 p(y∣x)=