集成学习task5

感谢datawhale和知乎账号:小雨姑娘的开源笔记

sklearn构建分类项目

分类模型的度量指标

准确率:metrics.accuracy_score
精度:预测为正且分类正确的样本占预测值为正的比例metrics.precision_score
召回率:预测为正且分类正确的样本占类别为正的比例metrics.recall_score
F1值:综合衡量精度和召回率 metrics.f1_score
ROC曲线:metrics.roc_auc_score

分类模型

1.逻辑回归
逻辑回归是根据线性回归引申而来,只不过加入了sigmoid函数其一般形式为:
在这里插入图片描述
在这里插入图片描述
逻辑回归在二分类模型中使用较多,在多分类模型中如果非要用逻辑回归,可以将其划分2类,一类为1,另一类为其他类集合,并以此类推进行

逻辑回归的损失函数推到类似与极大似然估计
在这里插入图片描述
2.基于线性判别分析
此处为基于降维的线性判别分析,可以进行分类和降维,推导过程类似于PCA
线性判别分析的基本思想是把所有样本投影到一条直线上,使样本在这条直线上最容易分类
在这里插入图片描述
在这里插入图片描述
目标是使两类样本的中心点在线上的投影距离大(两类样本区分度高),同时使每一类样本在线上投影的离散程度尽可能小(类内样本区分度低)

3.朴素贝叶斯
朴素贝叶斯简化了相应的线性判别分析模型,,它将线性判别分析中的协方差矩阵中的协方差全部变成0,只保留各自特征的方差,也就是朴素贝叶斯假设各个特征之间是不相关的。根据上一章节我们知道偏差变小方差会变大,反之亦然 因此朴素贝叶斯也不例外,它比线性判别分析模型的方差小,偏差大。虽然简化了模型,实际中使用朴素贝叶斯的案例非常多,甚至多于线性判别分析,例如鼎鼎大名的新闻分类,垃圾邮件分类等。

4.决策树
可以解决简单的非线性回归和分类问题
决策树的分类步骤大约如下:
在这里插入图片描述
如何从决策树中找出最佳节点和最佳分支
选取不纯度指标最优的特征来分支,不纯度指标可以为entropy信息熵和gini基尼指数
在这里插入图片描述
5.支持向量机
支持向量机可以解决非线性分类问题
在这里插入图片描述
支持向量机的基本原理非常简单,如图所视,白色和蓝色的点各为一类,我们的目标是找到一个分割平面将两个类别分开。通常来说,如果数据本身是线性可分的,那么事实上存在无数个这样的超平面。这是因为给定一个分割平面稍微上移下移或旋转这个超平面,只要不接触这些观测点,仍然可以将数据分开。一个很自然的想法就是找到最大间隔超平面,即找到一个分割平面距离最近的观测点最远。
但是SVM的厉害之处是用于非线性分类问题上
在这里插入图片描述
如果用上面公式将数据映射到高维空间中,数据计算量将会大大增加,为了避免这个问题,SVM内置核函数,可以解决这种数据量问题
在这里插入图片描述
在这里插入图片描述

#导入数据
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()
#逻辑回归
'''
penalty {‘l1’, ‘l2’, ‘elasticnet’, ‘none’}, default=’l2’正则化方式
dual bool, default=False 是否使用对偶形式,当n_samples> n_features时,默认dual = Fal
C float, default=1.0
solver {‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’, ‘saga’}, default=’lbfgs
l1_ratio float, default=None
'''
from sklearn.linear_model import LogisticRegression
log_iris = LogisticRegression()
log_iris.fit(X,y)
log_iris.score(X,y)
# 线性判别分析
'''
参数:
solver:{'svd','lsqr','eigen'},默认='svd'
solver的使用,可能的值:
'svd':奇异值分解(默认)。不计算协方差矩阵,因此建议将此求解器用于具有大量特征的数据。
'lsqr':最小二乘解,可以与收缩结合使用。
'eigen':特征值分解,可以与收缩结合使用。
'''
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
lda_iris = LinearDiscriminantAnalysis()
lda_iris.fit(X,y)
lda_iris.score(X,y)
# 朴素贝叶斯
from sklearn.naive_bayes import GaussianNB
NB_iris = GaussianNB()
NB_iris.fit(X, y)
NB_iris.score(X,y)
# 使用决策树算法对iris分类:
'''
criterion:{“gini”, “entropy”}, default=”gini”
max_depth:树的最大深度。
min_samples_split:拆分内部节点所需的最少样本数
min_samples_leaf :在叶节点处需要的最小样本数。
'''
from sklearn.tree import DecisionTreeClassifier
tree_iris = DecisionTreeClassifier(min_samples_leaf=5)
tree_iris.fit(X,y)
tree_iris.score(X,y)
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from 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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值