机器学习简单入门-分类算法

一.数据集

1.scikit-learn 数据集

scikit-learn 自带数据集,可以直接获取,也可以从网上获取
API *表示通用具体的实际中是不同名字
在这里插入图片描述
load* 和fetch*返回的数据类型datasets.base.Bunch(字典格式),key值如下

data:特征数据数组,是 [n_samples * n_features] 的二维 numpy.ndarray 数组

target:标签数组,是 n_samples 的一维 numpy.ndarray 数组

DESCR:数据描述

feature_names:特征名,新闻数据,手写数字、回归数据集没有

target_names:标签名,回归数据集没有

2.数据集的划分

机器学习一般的数据集会划分为两个部分:
训练数据:用于训练,构建模型 大约占75%
测试数据大约占25%:在模型检验时使用,用于评估模型是否有效
数据集划分API:sklearn.model_selection.train_test_split
在这里插入图片描述x_train,x_test,y_train,y_test = train_test_split(iris.data,iris.target,test_size=0.25)

3.估计器

在这里插入图片描述
估计器的工作流程
在这里插入图片描述

二.k-近邻算法

1.原理:

定义:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。相似的样本,对应的特征的值是相似的
判断相似度是通过“距离”来判断,距离公式如下:
在这里插入图片描述
有公式就可以看出需要在计算距离之前,要进行归一化

2.API

在这里插入图片描述

3.优缺点

优点:
简单,易于理解,易于实现,无需估计参数,无需训练
缺点:
懒惰算法,对测试样本分类时的计算量大,内存开销大必须指定K值,K值选择不当则分类精度不能保证
如果k的值较大容易造成比例变化,比如训练样本中和检测样本的距离近的只要几个,可是k取了很多就会导致距离最近的比例反而不高,如果k值太小的化,很可能受异常点的影响。

4.鸢尾花案例

# 读取数据集细节资料
from sklearn.datasets import load_iris

iris = load_iris()
print(iris)

# 对数据集进行随机分割
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target,
                                                    test_size=0.25, random_state=33)

# 对数据进行标准化
from sklearn.preprocessing import StandardScaler
ss = StandardScaler()
X_train = ss.fit_transform(X_train)
X_test = ss.transform(X_test)

# 使用K近邻分类器对数据进行类别预测
from sklearn.neighbors import KNeighborsClassifier
knc = KNeighborsClassifier()
knc.fit(X_train, y_train)
y_predict = knc.predict(X_test)

# 对K近邻分类器的预测性能进行评估
print('The accuracy of K-Nearest Neighbor Classifier is', knc.score(X_test, y_test))

from sklearn.metrics import classification_report

print(classification_report(y_test, y_predict, target_names=iris.target_names))

在这里插入图片描述

三.分类模型评估

1.混淆矩阵

不管是几分类,每个标签值,每个检测集合的样本的预测值只有是这个标签和不是这个标签,前者称为正例,后者称为反例
在这里插入图片描述

2.准确率,精确率,召回率

(1)准确率(预测准确的数量占所有预测的数量)
在这里插入图片描述
准确率越高,说明越有可能预测正确
(2)精确率
预测结果为正例样本中真实为正例的比例(查得准)
在这里插入图片描述
精确率越高:说明预测正例的可信度越高
(3)召回率:真实为正例的样本中预测结果为正例的比例(查的全,对正样本的区分能力)
在这里插入图片描述
召回率越高表示越不容易把正确的漏掉
(3)其他分类标准
其他分类标准,F1-score,反映了模型的稳健型
在这里插入图片描述
(4)API
sklearn.metrics.classification_report
在这里插入图片描述
iris的预测评估在这里插入图片描述最后两个一个是平均值,还有一个是加权平均值

四.朴素贝叶斯算法

朴素的意思就是样本特征值直接互相独立
在这里插入图片描述

1.原理

通过计算,在文章这些特征值出现的情况下,文章是某一分类的概率
根据贝叶斯公式
在这里插入图片描述
P©每个文档类别的概率
P(W|C)给定类别下特征的概率
P(F1,F2…|C)=P(F1|C)P(F2=|C)
以上F1…FN是训练集中的特征值,概率是在训练集训练的模型基础上得到
例子
在这里插入图片描述
这里只需要比较概率大小,所以下面相同的特征值的概率就可以抵消,这里概率为0显然是不合适的需要进行拉普拉斯平滑
在这里插入图片描述

2.API在这里插入图片描述

3.优缺点

优点:
朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率。对缺失数据不太敏感,算法也比较简单,常用于文本分类。分类准确度高,速度快
缺点:
需要知道先验概率P(F1,F2,…|C),因此在某些时候会由于假设的先验模型的原因导致预测效果不佳。
有时候没有办法刚好完全的条件独立

五.模型的选择与调优

1.交叉验证

为了让被评估的模型更加准确可信
方法:将拿到的数据,分为训练和验证集。以下图为例:将数据分成5份,其中一份作为验证集。然后经过5次(组)的测试,每次都更换不同的验证集。即得到5组模型的结果,取平均值作为最终结果。又称5折交叉验证。n折将数据分成n行,n列在这里插入图片描述

2.网格搜索

通常情况下,有很多参数是需要手动指定的(如k-近邻算法中的K值,表示取多少相似的),这种叫超参数。但是手动过程繁杂,所以需要对模型预设几种超参数组合。每组超参数都采用交叉验证来进行评估。最后选出最优参数组合建立模型。(对数据分割进行优化)

API:sklearn.model_selection.GridSearchCV
在这里插入图片描述
最好结果是在交叉验证中的是不包含测试集合,即得出来的是在某个超参数的取值下,训练集训练出的模型的得分(因为在交叉验证中又会分出测试集合)。

六.决策树与随机森林

1.决策树

(1)简介

决策树就是用来分类的一棵树,叶子节点是类别,分支是针对特征值的条件
在这里插入图片描述

(2)信息增益

决策树的划分依据之一就是信息增益
信息增益表示得知特征X的信息而使得类Y的信息的不确定性减少的程度
特征A对训练数据集D的信息增益g(D,A),定义为集合D的信息熵H(D)与特征A给定条件下D的信息条件熵H(D|A)之差,即公式为:
在这里插入图片描述

(3)生成决策树的方法

ID3(通过信息增益选择特征)C4.5(通过信息增益比选择特征)CART(平方误差最小的方式)
详细介绍添加链接描述

(4)API

在这里插入图片描述

(5)决策树的本地保存

在这里插入图片描述

2.随机森林

定义:在机器学习中,随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。
原理:
根据下列算法而建造每棵树:
用N来表示训练用例(样本)的个数,M表示特征数目。输入特征数目m,用于确定决策树上一个节点的决策结果;其中m应远小于M。从N个训练用例(样本)中以有放回抽样的方式,取样N次,形成一个训练集(即bootstrap取样),并用未抽到的用例(样本)作预测,评估其误差。在这里插入图片描述
API:
在这里插入图片描述

 # 随机森林进行预测 (超参数调优)
    rf = RandomForestClassifier()

    param = {"n_estimators": [120, 200, 300, 500, 800, 1200], "max_depth": [5, 8, 15, 25, 30]}

    # 网格搜索与交叉验证
    gc = GridSearchCV(rf, param_grid=param, cv=2)

    gc.fit(x_train, y_train)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值