传统机器学习
一、朴素贝叶斯
朴素贝叶斯(naïve Bayes)法是基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布;然后基于此模型,对给定的输入x,利用贝叶斯定理求出后验概率最大的输出y。
高斯朴素贝叶斯(sklearn)
#利用GaussianNB建立简单模型
import numpy as np
from sklearn.naive_bayes import GaussianNB
X = np.array([[-1, -1], [-2, -2], [-3, -3],[-4,-4],[-5,-5], [1, 1], [2, 2], [3, 3]])
y = np.array([1, 1, 1, 1, 1, 2, 2, 2])
clf = GaussianNB()#默认priors=None
clf.fit(X,y)
#priors属性:获取各个类标记对应的先验概率
clf.priors
#class_prior_属性:同priors一样,都是获取各个类标记对应的先验概率,区别在于priors属性返回列表,class_prior_返回的是数组
clf.class_count_
#class_count_属性:获取各类标记对应的训练样本数
clf.class_count_
#theta_属性:获取各个类标记在各个特征上的均值
clf.theta_
#sigma_属性:获取各个类标记在各个特征上的方差
clf.sigma_
#partial_fit(X, y, classes=None, sample_weight=None):增量式训练,当训练数据集数据量非常大,不能一次性全部载入内存时,可以将数据集划分若干份,重复调用partial_fit在线学习模型参数,在第一次调用partial_fit函数时,必须制定classes参数,在随后的调用可以忽略
clf.partial_fit(X,y,classes=[1,2],sample_weight=np.array([0.05,0.05,0.1,0.1,0.1,0.2,0.2,0.2]))
#predict(X):直接输出测试集预测的类标记
clf.predict([[-6,-6],[4,5]])
#predict_proba(X):输出测试样本在各个类标记预测概率值
clf.predict_proba([[-6,-6],[4,5]])
#predict_log_proba(X):输出测试样本在各个类标记上预测概率值对应对数值
clf.predict_log_proba([[-6,-6],[4,5]])
#score(X, y, sample_weight=None):返回测试样本映射到指定类标记上的得分(准确率)
clf.score([[-6,-6],[-4,-2],[-3,-4],[4,5]],[1,1,2,2])
多项式朴素贝叶斯(sklearn)
"""
多项式朴素贝叶斯:sklearn.naive_bayes.MultinomialNB(alpha=1.0, fit_prior=True, class_prior=None)主要用于离散特征分类,例如文本分类单词统计,以出现的次数作为特征值
参数说明:
alpha:浮点型,可选项,默认1.0,添加拉普拉修/Lidstone平滑参数
fit_prior:布尔型,可选项,默认True,表示是否学习先验概率,参数为False表示所有类标记具有相同的先验概率
class_prior:类似数组,数组大小为(n_classes,),默认None,类先验概率
"""
#利用MultinomialNB建立简单模型
import numpy as np
from sklearn.naive_bayes import MultinomialNB
X = np.array([[1,2,3,4],[1,3,4,4],[2,4,5,5],[2,5,6,5],[3,4,5,6],[3,5,6,6]])
y = np.array([1,1,4,2,3,3])
clf = MultinomialNB(alpha=2.0)
clf.fit(X,y)
'''
class_log_prior_:各类标记的平滑先验概率对数值,其取值会受fit_prior和class_prior参数的影响
1、若指定了class_prior参数,不管fit_prior为True或False,class_log_prior_取值是class_prior转换成log后的结果
2、若fit_prior参数为False,class_prior=None,则各类标记的先验概率相同等于类标记总个数N分之一
3、若fit_prior参数为True,class_prior=None,则各类标记的先验概率相同等于各类标记个数除以各类标记个数之和
'''
clf.class_log_prior_
#intercept_:将多项式朴素贝叶斯解释的class_log_prior_映射为线性模型,其值和class_log_propr相同
clf.intercept_
#feature_log_prob_:指定类的各特征概率(条件概率)对数值,返回形状为(n_classes, n_features)数组
clf.feature_log_prob_ #特征的条件概率=(指定类下指定特征出现的次数+alpha)/(指定类下所有特征出现次数之和+类的可能取值个数*alpha)
#coef_:将多项式朴素贝叶斯解释feature_log_prob_映射成线性模型,其值和feature_log_prob相同
clf.coef_
#feature_count_:各类别各个特征出现的次数,返回形状为(n_classes, n_features)数组
clf.feature_count_