贝叶斯模型、SVM模型、K均值(Kmeans)聚类、DBSCAN聚类和GDBT模型

贝叶斯模型、SVM模型、K均值聚类、DBSCAN聚类和GDBT模型

  • 贝叶斯模型

  • SVM模型

  • K均值(Kmeans)聚类

  • DBSCAN聚类

  • GDBT模型

贝叶斯模型

概念

通过已知类别的训练数据集,计算样本的先验概率,然后利⽤⻉叶斯
概率公式测算未知类别样本属于某个类别的后验概率
最终以最⼤后验概率所对应的类别作为样本的预测值

高斯贝叶斯分类器

适用于自变量为连续的数值类型的情况

eg:假设某⾦融公司是否愿意给客户放贷会优先考虑两个因素,分别是年龄和收⼊。

多项式贝叶斯分类器

适用于自变量为离散型类型的情况(非数字类型)

eg:假设影响⼥孩是否参加相亲活动的重要因素有三个,分别 是男孩的职业、受教育⽔平和收⼊状况;

伯努利贝叶斯分类器

适用于自变量为二元值的情况(可以自带的 也可以是后期处理“因子化”)

eg:假设对10条评论数据做分词处理后,得到如表 12-5所示的⽂档词条矩阵,矩阵中含有5个词语和1 个表示情感的结果

 

函数:

⾼斯⻉叶斯函数

bayes.GaussianNB()

多项式⻉叶斯分类器函数

MultinomialNB()

伯努利⻉叶斯分类器

BernoulliNB()

 

SVM模型

超平面的概念

将样本点划分成不同的类别(三种表现形式:点、线、面)

超平面最优解

1.先随机选择一条直线
2.分别计算两边距离改直线最短的点距离 取更小的距离
3.以该距离左右两边做分隔带
4.依次直线上述三个步骤得出N多个分隔带 最优的就是分隔带最宽的

线性可分和非线性可分

线性可分:简单的理解为就是一条直线划分类别

非线性可分:一条直线无法直接划分 需要升一个维度再做划分

"""
        核函数:高斯核函数>>>:支持无穷维
"""

函数代码

线性可分函数

LinearSVC(tol=0.0001, C=1.0, multi_class='ovr', fit_intercept=True, intercept_scaling=1,
class_weight=None, max_iter=1000)

参数:

tol:⽤于指定SVM模型迭代的收敛条件,默认为0.0001 
C:⽤于指定⽬标函数中松弛因⼦的惩罚系数值,默认为1 
fit_intercept:bool类型参数,是否拟合线性“超平⾯”的截距项,默认为True 
intercept_scaling:当参数fit_intercept为True时,该参数有效,通过给参数传递⼀个浮点值,就相 当于在⾃变量X矩阵中添加⼀常数列,默认该参数值为1 
class_weight:⽤于指定因变量类别的权重,如果为字典,则通过字典的形式{class_label:weight} 传递每个类别的权重;如果为字符串'balanced',则每个分类的权重与实际样本中的⽐例成反⽐,当 各分类存在严重不平衡时,设置为'balanced'会⽐较好;如果为None,则表示每个分类的权重相等 
max_iter:指定模型求解过程中的最⼤迭代次数,默认为1000

非线性可分函数

SVC(C=1.0, kernel=‘rbf’, degree=3, gamma=‘auto’, coef0=0.0, tol=0.001,
class_weight=None, verbose=False, max_iter=-1, random_state=None)

参数:

C:⽤于指定⽬标函数中松弛因⼦的惩罚系数值,默认为1
kernel:⽤于指定SVM模型的核函数,该参数如果为'linear',就表示线性核函数;如果为'poly',就
表示多项式核函数,核函数中的r和p值分别使⽤degree参数和gamma参数指定;如果为'rbf',表示
径向基核函数,核函数中的r参数值仍然通过gamma参数指定;如果为'sigmoid',表示Sigmoid核函
数,核函数中的r参数值需要通过gamma参数指定;如果为'precomputed',表示计算⼀个核矩阵
degree:⽤于指定多项式核函数中的p参数值
gamma:⽤于指定多项式核函数或径向基核函数或Sigmoid核函数中的r参数值
coef0:⽤于指定多项式核函数或Sigmoid核函数中的r参数值
tol:⽤于指定SVM模型迭代的收敛条件,默认为0.001
class_weight:⽤于指定因变量类别的权重,如果为字典,则通过字典的形式{class_label:weight}
传递每个类别的权重;如果为字符串'balanced',则每个分类的权重与实际样本中的⽐例成反⽐,当
各分类存在严重不平衡时,设置为'balanced'会⽐较好;如果为None,则表示每个分类的权重相等
max_iter:指定模型求解过程中的最⼤迭代次数,默认为-1,表示不限制迭代次数

 

补充知识

有监督学习于无监督学习

有监督:有明确需要研究的因变量Y

无监督:没有明确需要研究的因变量Y

 

K均值(Kmeans)聚类

属于无监督学习

K值的求解(K表示分成几类)

1.拐点法

  计算不同K值下类别中离差平方和(看斜率 变化越明显越好)

2.轮廓系数法

  计算轮廓系数(看大小 越大越好)

函数代码

KMeans(n_clusters=8, init='k-means++', n_init=10, max_iter=300, tol=0.0001)

参数:

n_clusters:⽤于指定聚类的簇数
init:⽤于指定初始的簇中⼼设置⽅法,如果为'k-means++',则表示设置的初始簇中⼼之间相距较
远;如果为'random',则表示从数据集中随机挑选k个样本作为初始簇中⼼;如果为数组,则表示⽤
户指定具体的簇中⼼
n_init:⽤于指定Kmeans算法运⾏的次数,每次运⾏时都会选择不同的初始簇中⼼,⽬的是防⽌算
法收敛于局部最优,默认为10
max_iter:⽤于指定单次运⾏的迭代次数,默认为300
tol:⽤于指定算法收敛的阈值,默认为0.0001

 

DBSCAN(密度)聚类

K均值聚类的两大缺点

1.聚类效果容易受到异常样本点的影响

2.无法准确的将非球形样本进行合理的聚类

'''可以采用密度聚类解决上述两个缺点'''

核心概念

核心对象:内部含有至少大于等于最少样本点的样本

非核心对象:内部少于最少样本点的样本

直接密度可达:在核心对象内部的样本点到核心对象的距离

 

 密度可达:多个直接密度可达链接了多个核心对象(首尾点密度可达)

 

 密度相连:两边的点由中间的核心对象分别密度可达

 异常点:不与任何核心或非核心点有密度可达关系

 

GDBT模型

Adaboost算法

由多颗基础决策树组成 并且这些决策树彼此之间有先后关系(既可以解决分类问题也可以解决预测问题)

GBDT算法

GBDT就是⽤来解决这个问题,利⽤损失函数的负梯度值作为该轮基础模型损失值的近似,并利 ⽤这个近似值构建下⼀轮基础模型。

 

SMOTE算法

  通过算法将比例较少的数据样本扩大

函数代码

Adaboost算法函数

AdaBoostClassifier(base_estimator=None, n_estimators=50,
learning_rate=1.0, algorithm='SAMME.R', random_state=None)

AdaBoostRegressor(base_estimator=None, n_estimators=50,
learning_rate=1.0, loss='linear', random_state=None)

参数:

algorithm:⽤于指定AdaBoostClassifier分类器的算法,默认为'SAMME.R',也可以使⽤
'SAMME';使⽤'SAMME.R'时,基础模型必须能够计算类别的概率值;⼀般⽽⾔,'SAMME.R'算法
相⽐于'SAMME'算法,收敛更快、误差更⼩、迭代数量更少。
loss:⽤于指定AdaBoostRegressor回归提升树的损失函数,可以是'linear',表示使⽤线性损失函
数;也可以是'square',表示使⽤平⽅损失函数;还可以是'exponential',表示使⽤指数损失函数;
该参数的默认值为'linear'。
random_state:⽤于指定随机数⽣成器的种⼦。

SMOTE算法

SMOTE(ratio='auto', random_state=None, k_neighbors=5, m_neighbors=10)

参数:

ratio:⽤于指定重抽样的⽐例,如果指定字符型的值,可以是'minority'(表示对少数类别的样本进
⾏抽样)、'majority'(表示对多数类别的样本进⾏抽样)、'not minority'(表示采⽤⽋采样⽅
法)、'all'(表示采⽤过采样⽅法),默认为'auto',等同于'all''not minority'。如果指定字典型的
值,其中键为各个类别标签,值为类别下的样本量。
random_state:⽤于指定随机数⽣成器的种⼦,默认为None,表示使⽤默认的随机数⽣成器。
k_neighbors:指定近邻个数,默认为5个。
m_neighbors:指定从近邻样本中随机挑选的样本个数,默认为10个。

返回目录

posted @ 2021-10-25 20:25  微纯册  阅读(572)  评论(0编辑  收藏  举报