1. sklearn数据集
1. 数据集划分
- 数据集划分:训练集(通常75%)和测试集(通常25%),训练集用来建立模型,测试集用来评估模型。
- API:sklearn.model_selectioon.train_test_split
2. sklearn数据集接口介绍
- 加载sklearn中的流行数据集
- 获取数据集返回的类型:
- sklearn中的流行分类数据集:
3. sklearn分类数据集
- 利用sklearn中的iris分类数据集
- 模型划分API:sklearn.model_selectioon.train_test_split
该方法的返回结果是(训练集特征值,测试集特征值,训练集目标值,测试集目标值);该方法的参数原数据集的特征值和目标值。
4. sklearn回归数据集
- sklearn回归数据集(需注意:回归数据及没有特征名和目标名(feature_names,target_names))
- 实例:
from sklearn.datasets import load_boston lb = load_boston() print(lb.data) print(lb.target) print(len(lb.data)) print(len(lb.data[0])) print(lb.DESCR)
2. 转换器和估计器
- sklearn中的估计器简介:
1. K-近邻算法(KNN)
- 定义:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。
- 求解距离的公式:各特征的欧氏距离
- 需要注意的是,对于一个数据集,为了防止某个特征的量级过大或者过小,要先对数据进行标准化,然后再使用该KNN算法。
- KNN算法的API:
- 实例流程:
- k值取过小,会受异常点的影响,k过大,会受数量(类别)波动。算法默认是5。
- 计算距离的时间复杂度很高。
- KNN算法优缺点:
- 数据的处理
2. 朴素贝叶斯算法
- 基础知识:联合概率和条件概率
- 朴素贝叶斯的前提就是特征之间互相独立。
- 拉普拉斯平滑:
- 朴素贝叶斯API:sklearn.native_bayes.MultinomialNB(alpha=1.0),其中alpha表示拉普拉斯平滑系数,此参数不算超参数,不需要调。
- native_bayes算法优缺点分析:
3. 交叉验证和网格搜索
- 交叉验证的目的是为了让评估的模型更新准确可行,前提是有超参数。
- 交叉验证是将数据分成n份,其中一份作为验证集。然后经过n次(组)的测试,每次都更换不同的验证集。即得到n组模型的结果,取平均值作为最终结果。又称n折交叉验证。一般采用的是10折。
- 超参数搜索-网格搜索API:
其中估计器的超参数是一个字典类型;
3. 决策树
- 基础知识:比特和信息熵
- 决策树的划分依据之一:信息熵
- 决策树的划分依据之二:基尼系数gini,在sklearn中是默认的划分原则
- 决策树的API:
- 备注:将DataFrame转化为字典的的方法:DataFrame数据.to_dict(orient=“records”)
- 决策树的优缺点:
4. 集成学习方法:随机森林
- 集成学习通过建立几个模型组合的来解决单一预测问题。她的工作原理是生成多个分类器/模型,格子独立地学习和做出预测。这些预测最后结合成单预测,因此优于任何一个单分类的做出预测。
- 随机森林:在机器学习中,随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别数输出的类别的众数而定。其中的随机其实就是随机又放回的抽样。
- 随机森林的API:
- 在数据量非常大的时候,优势非常明显。
- 随机森林的超参数的调节可以使用交叉选择方法。
- 步骤:
- 对训练样本进行采样,产生出若干个不同的子集。
- 从每个数据子集中训练出一个基学习器(同质)。
- 由上,训练数据不同,所以获得的基学习器可能差异比较大。但是为了获得良好的集成,同时还希望个体学习器不能太差。
- 如果采样得到的每个子集都完全不同,则每个基学习器只用到了一小部分训练数据,不足以有效学习,所以采用相互有交叠的采样子集。
- 综上:基训练集不能太差,同时相互之间要有交叠的采样子集。
- 在集成得到的最后结果进行处理时:回归问题采用平均法,分类问题采用投票法。
- 随机森林不仅样本采样随机,还属性特征选择随机