逻辑回归logistic regression:
- 分类问题与回归问题的区别:在于回归问题与分类问题需要预测的因变量不一样。在回归问题中,因变量是连续性变量;但是在分类问题中,因变量往往是一个离散集合中的某个元素。
- 逻辑回归在实际中不太用于多分类问题,因为实际效果不是很好。
基于概率的分类模型
线性判别分析
-
基于于贝叶斯公式
-
基于降维分类
朴素贝叶斯
- 朴素贝叶斯算法对线性判别分析作进一步的模型简化,它将线性判别分析中的协方差矩阵中的协方差全部变成0,只保留各自特征的方差,也就是朴素贝叶斯假设各个特征之间是不相关的。
# 逻辑回归
'''
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)
决策树
- 在分类树中,均方误差无法作为确定分裂节点的准则,一个很自然的替代指标是分类错误率(此区域内的训练集中非常见类所占的类别)。
E = 1 − m a x k ( p ^ m k ) E = 1- max_{k}(\hat{p}_{mk}) E=1−maxk(p^mk) - 分类错误率在构建决策树时不够敏感,一般在实际中用如下两个指标代替.
- 基尼系数: G = ∑ k = 1 K p ^ m k ( 1 − p ^ m k ) G = \sum^{K}_{k=1}{\hat{p}_{mk}(1-\hat{p}_{mk})} G=∑k=1Kp^mk(1−p^mk)
- 交叉熵: D = − ∑ k = 1 K p ^ m k l o g p ^ m k D = -\sum^{K}_{k=1}{\hat{p}_{mk}}log{\hat{p}_{mk}} D=−∑k=1Kp^mklogp^mk
# 使用决策树算法对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)
支持向量机
非线性支持向量机
- 使用支持向量机处理非线性问题的方法,将数据投影至更加高的维度。为了避免无穷维的情况,使用核函数。
多项式核函数:
高斯核函数:
sigmoid核函数:
余弦相似度核函数:
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)
参考资料:
https://github.com/datawhalechina/team-learning-data-mining/tree/master/EnsembleLearning