贝叶斯模型、SVM模型、K均值(Kmeans)聚类、DBSCAN聚类和GDBT模型
贝叶斯模型、SVM模型、K均值聚类、DBSCAN聚类和GDBT模型
-
-
SVM模型
-
K均值(Kmeans)聚类
-
概念
通过已知类别的训练数据集,计算样本的先验概率,然后利⽤⻉叶斯
概率公式测算未知类别样本属于某个类别的后验概率
最终以最⼤后验概率所对应的类别作为样本的预测值
高斯贝叶斯分类器
适用于自变量为连续的数值类型的情况
eg:假设某⾦融公司是否愿意给客户放贷会优先考虑两个因素,分别是年龄和收⼊。
多项式贝叶斯分类器
适用于自变量为离散型类型的情况(非数字类型)
eg:假设影响⼥孩是否参加相亲活动的重要因素有三个,分别 是男孩的职业、受教育⽔平和收⼊状况;
伯努利贝叶斯分类器
适用于自变量为二元值的情况(可以自带的 也可以是后期处理“因子化”)
eg:假设对10条评论数据做分词处理后,得到如表 12-5所示的⽂档词条矩阵,矩阵中含有5个词语和1 个表示情感的结果
函数:
⾼斯⻉叶斯函数
bayes.GaussianNB()
多项式⻉叶斯分类器函数
MultinomialNB()
伯努利⻉叶斯分类器
BernoulliNB()
将样本点划分成不同的类别(三种表现形式:点、线、面)
超平面最优解
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
1.聚类效果容易受到异常样本点的影响
2.无法准确的将非球形样本进行合理的聚类
'''可以采用密度聚类解决上述两个缺点'''
核心概念
核心对象:内部含有至少大于等于最少样本点的样本
非核心对象:内部少于最少样本点的样本
直接密度可达:在核心对象内部的样本点到核心对象的距离
密度可达:多个直接密度可达链接了多个核心对象(首尾点密度可达)
密度相连:两边的点由中间的核心对象分别密度可达
异常点:不与任何核心或非核心点有密度可达关系
函数代码
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个。