博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Datawhale集成Task5——掌握基本的回归模型
阅读量:3950 次
发布时间:2019-05-24

本文共 3482 字,大约阅读时间需要 11 分钟。

sklearn构建完整回归模型

2.2使用sklearn构建完整的分类项目(参考Datawhale集成学习资料)

剩余问题

1、各类分类模型的适用场景及优缺点

2、支持向量机和决策树的理解

一、搜集数据,并选择合适的变量,此处选用鸢尾花数据集

import numpy as npimport pandas as pdfrom sklearn import datasetsiris = datasets.load_iris()X= iris.datay = iris.targetfeature = iris.feature_namesdata = pd.DataFrame(X,columns= feature)data['target']=ydata.head()

在这里插入图片描述

二、选择度量模型的指标

度量分类问题的指标是和度量回归问题的指标有很大的差别,因为其预测变量都是离散变量,像回归模型一般去度量预测值和实际值的相似程度是行不通的,同时在分类任务中,我们对于每个类别犯错的代价不尽相同。

例:在对癌症进行预测时,将实际患癌的患者预测为不患癌症的错误,显然比实际不患癌而预测为患癌的错误后果要严重很多,因为前者的错误会使得患者失去及时有效的治疗机会,关系的是患者的生命。而后者可以在之后的治疗过程中进一步的对情况进行判断。
因此对分类问题进行度量,需要依照情况来分开讨论,给出具体关注的指标。
真阳性TP:预测值和真实值都为正例;
真阴性TN:预测值与真实值都为正例;
假阳性FP:预测值为正,实际值为负;
假阴性FN:预测值为负,实际值为正;
在这里插入图片描述
分类模型的指标
在这里插入图片描述

三、选择具体模型进行训练

1、逻辑回归

在一般的线性模型,预测变量y是有实际意义的,但对于二分类问题,预测变量的取值只有0和1,这种情况下,0和1没有实际意义。同时如果仍然建立一般线性模型,随着自变量取值的不同,预测变量的取值范围是实数域,按照预测结果进行分类,无法设定阈值,因此引入Logistic函数。

在这里插入图片描述
在这里插入图片描述
该函数值域在[0,1],x轴在0点对应的结果为0.5,可以看成0或1两类问题,大于0.5可以认为是1类问题,反之是0类问题.
利用一般线性模型进行分析。会存在上述问题,因此引入Logistic变换。
在这里插入图片描述
在这里插入图片描述
概率p变换如下,体现了概率p与因变量之间的非线性关系。以0.5为界限,预测p大于0.5时,我们判断此时y更可能为1,否则y为0。
在这里插入图片描述
最后只需要和线性回归一样,拟合出参数即可。

from sklearn.linear_model import LogisticRegressionlog_iris = LogisticRegression()log_iris.fit(X,y)log_iris.score(X,y)

在这里插入图片描述

如果因变量是多元分类问题,可以采用多元logistic回归进行,但一般实际效果不是很好,可以借助其他模型来解决这个问题。

2、贝叶斯判别

简述:贝叶斯判别,是建立在贝叶斯公式的基础上,将样本信息作为已知信息求在已知信息的情况下,该样本属于各个类别的概率乘上各个类别的先验概率作为判定标准,其中哪个类别的概率之积大,就判定为哪个类别。其中先验概率可以通过各类样本数目占总样本数的比例来确定,样本属于各个类别的概率服从于一定分布,分布的参数值虽类别的改变而改变,可以通过样本数据进行估计出来。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、降维分类的判别分析

简述:降维分类的判别分析,就是将样本的多维特征进行一个坐标旋转,从而使得坐标旋转后,特征转化为一维数据,在旋转时要求,旋转结束后,各类别之间具有较大的距离,各类自己具有较小方差和,实现一种聚类,寻找出最好的旋转向量,然后再对新样本旋转,看距离那个类别近,就判定为该类。

在这里插入图片描述
在这里插入图片描述

# 线性判别分析'''参数:solver:{'svd','lsqr','eigen'},默认='svd'solver的使用,可能的值:'svd':奇异值分解(默认)。不计算协方差矩阵,因此建议将此求解器用于具有大量特征的数据。'lsqr':最小二乘解,可以与收缩结合使用。'eigen':特征值分解,可以与收缩结合使用。'''from sklearn.discriminant_analysis import LinearDiscriminantAnalysislda_iris = LinearDiscriminantAnalysis()lda_iris.fit(X,y)lda_iris.score(X,y)

4、朴素贝叶斯分类

线性判别分析中,假设每种分类类别下的特征遵循同一个协方差矩阵,每两个特征之间是存在协方差的因此在线性判别分析中各种特征是不是独立的。但是,朴素贝叶斯算法对线性判别分析作进一步的模型简化,它将线性判别分析中的协方差矩阵中的协方差全部变成0,只保留各自特征的方差,也就是朴素贝叶斯假设各个特征之间是不相关的。在之前所看到的偏差-方差理论中,我们知道模型的简化可以带来方差的减少但是增加偏差,因此朴素贝叶斯也不例外,它比线性判别分析模型的方差小,偏差大。虽然简化了模型,实际中使用朴素贝叶斯的案例非常多,甚至多于线性判别分析。

# 朴素贝叶斯             from sklearn.naive_bayes import GaussianNBNB_iris = GaussianNB()NB_iris.fit(X, y)NB_iris.score(X,y)

5、决策树

回归问题中,决策树选择分割点的标准是均方误差,但是在分类问题中,由于因变量是类别变量而不是连续变量,因此用均方误差显然不合适,一个很自然的替代指标是分类错误率。分类错误率就是:此区域内的训练集中非常见类所占的类别,即:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
决策树分类算法的完整步骤
a. 选择最优切分特征j以及该特征上的最优点s:
遍历特征j以及固定j后遍历切分点s,选择使得基尼系数或者交叉熵最小的(j,s)
b. 按照(j,s)分裂特征空间,每个区域内的类别为该区域内样本比例最多的类别。
c. 继续调用步骤1,2直到满足停止条件,就是每个区域的样本数小于等于5。
d. 将特征空间划分为J个不同的区域,生成分类树。

# 使用决策树算法对iris分类:'''criterion:{“gini”, “entropy”}, default=”gini”max_depth:树的最大深度。min_samples_split:拆分内部节点所需的最少样本数min_samples_leaf :在叶节点处需要的最小样本数。'''from sklearn.tree import DecisionTreeClassifiertree_iris = DecisionTreeClassifier(min_samples_leaf=5)tree_iris.fit(X,y)tree_iris.score(X,y)

6、支持向量机SVM(线性可分,非线性)

(1)线性可分

在这里插入图片描述

基本想法:
如图所视,白色和蓝色的点各为一类,我们的目标是找到一个分割平面将两个类别分开。通常来说,如果数据本身是线性可分的,那么事实上存在无数个这样的超平面。这是因为给定一个分割平面稍微上移下移或旋转这个超平面,只要不接触这些观测点,仍然可以将数据分开。一个很自然的想法就是找到最大间隔超平面,即找到一个分割平面距离最近的观测点最远。
推导过程:
在这里插入图片描述
在这里插入图片描述

(2)非线性

在这里插入图片描述

若出现上图这种无法通过线性方式有效分开的情况,我们就需要先对数据进行更高维度的投影,从而实现线性可分。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

from sklearn.pipeline import make_pipelinefrom sklearn.preprocessing import StandardScalerfrom sklearn.svm import SVC'''C:正则化参数。正则化的强度与C成反比。必须严格为正。惩罚是平方的l2惩罚。kernel:{'linear','poly','rbf','sigmoid','precomputed'},默认='rbf'degree:多项式和的阶数gamma:“ rbf”,“ poly”和“ Sigmoid”的内核系数。shrinking:是否软间隔分类,默认true'''svc_iris = make_pipeline(StandardScaler(), SVC(gamma='auto'))svc_iris.fit(X, y)svc_iris.score(X,y)

转载地址:http://oagwi.baihongyu.com/

你可能感兴趣的文章
1004 成绩排名 (20 分)
查看>>
1005 继续(3n+1)猜想 (25 分)
查看>>
1006 换个格式输出整数 (15 分)
查看>>
1007 素数对猜想 (20 分)
查看>>
1008 数组元素循环右移问题 (20 分)
查看>>
1009 说反话 (20 分)
查看>>
1010 一元多项式求导 (25 分)
查看>>
1011 A+B 和 C (15 分)
查看>>
1012 数字分类 (20 分)
查看>>
1013 数素数 (20 分)
查看>>
1014 福尔摩斯的约会 (20 分)
查看>>
1015 德才论 (25 分)
查看>>
1016 部分A+B (15 分)
查看>>
1017 A除以B (20 分)
查看>>
1018 锤子剪刀布 (20 分)
查看>>
1019 数字黑洞 (20 分)
查看>>
1020 月饼 (25 分)
查看>>
1021 个位数统计 (15 分)
查看>>
1022 D进制的A+B (20 分)
查看>>
1023 组个最小数 (20 分)
查看>>