1、机器学习课程day05,Contents,目,录,k近邻算法的实现过程(重点)k近邻算法的距离度量方式(重点)k近邻算法的超参数k值的取值对算法的影响(重点)kd-tree的构建和搜索实现过程(重点)使用KNeighborsClassifier实现分类 交叉验证的概念及其作用(重点),Section,章,节,k近邻算法的实现过程 K-近邻算法简介 K近邻算法api初步使用,1.k近邻算法的实现过程,1.1 视频讲解,KNN算法解决的是什么问题?,1.k近邻算法的实现过程,1.2 知识检测,KNN解决的是什么问题?,1)KNN:K Nearest Neighbor。即解决的是寻找与未知样本 _
2、的K个样本,并对未知样本所属的分类或者属性进行预测的问题。2)距离度量:空间中两个样本的距离默认是通过 _ 来度量的。,答案:最近邻;欧氏距离。,Section,章,节,k近邻算法的实现过程 K-近邻算法简介 K近邻算法api初步使用,1.k近邻算法的实现过程,2.1 视频讲解,如何应用KNN算法的API?,1.k近邻算法的实现过程,2.2 知识检测,1)导入算法对象:from sklearn.neighbors import KNeighborsClassifier-A2)构造数据:x=0,1,2,3 y=0,0,1,13)实例化算法API:estimator=KNeighborsClass
3、ifier(n_neighbors=2)-B4)训练模型并预测:estimator.fit(x,y)-C estimator.predict(1)-D,以下关于KNN算法API的使用有误的一项是?,答案:D。正确代码应为:estimator.predict(1),Section,章,节,k近邻算法的距离度量方式机器学习中距离度量介绍,2.k近邻算法的距离度量方式,3.1 视频讲解,KNN算法中有哪些距离度量方式?,2.k近邻算法的距离度量方式,3.2 知识检测,KNN算法中的距离度量方式有哪些?,2.k近邻算法的距离度量方式,3.2 知识检测,对于n维空间中的两个点 a(x11,x12,x1n
4、)和 b(x21,x22,x2n)来说,下列哪个公式是闵可夫斯基距离的一般表达式?,A:,B:,C:,D:,答案:D。其中A是Boston距离,B是欧氏距离,C是切比雪夫距离。,Section,章,节,k近邻算法的超参数k值的取值对算法的影响K值的选择介绍,3.k近邻算法的超参数k值的取值对算法的影响,4.1 视频讲解,KNN算法中K的取值需要注意什么?,3.k近邻算法的超参数k值的取值对算法的影响,4.2 知识检测,以下说法中正确的是?(多选),A)若k值过小,训练误差会减小,对应的测试误差会增大,模型有过拟合的风险。B)若k值过大,训练误差会增大,对应的测试误差会减小,模型会变的相对简单,
5、结果更容易受到异常值的影响。C)若k值与训练集样本数相同,会导致最终模型的结果都是指向训练集中类别数 最多的那一类,忽略了数据当中其它的重要信息,模型会过于简单。D)实际工作中经常使用交叉验证的方式去选取最优的k值,而且一般情况下,k值都是比较小的数值。,答案:ABCD。,Section,章,节,kd-tree的构建和搜索实现过程 kd树和kd树的构造过程 kd树案例实现,4.kd-tree的构建和搜索实现过程,5.1 视频讲解,如何构造kd树?,4.kd-tree的构建和搜索实现过程,5.2 知识检测,kd树的构造过程是怎样的?,1)kd-tree是基于 _ 来度量的。2)kd-tree是每
6、个节点都为k维点的二叉树。3)根节点的选取:选取数据 _ 的那一维数据开始划分。4)所有非叶子节点可以被视为一个超平面把空间分区成两个半空间。5)随着树的深度加深,轮流选择 _ 当作分区面。6)左右子节点由当前分区面的轴座标的中位数进行区分并放入左右子树(左小右大)。,答案:欧氏距离;相对离散(方差较大);坐标轴。,Section,章,节,kd-tree的构建和搜索实现过程 kd树和kd树的构造过程 kd树案例实现,4.kd-tree的构建和搜索实现过程,6.1 视频讲解,如何构造kd树?,4.kd-tree的构建和搜索实现过程,6.2 知识检测,给以下搜索点(2.1,3.1)的最近邻域 的过
7、程进行排序:,B)以kd-tree的创建规则对点(2.1,3.1)进行划分,可以找到划分路线search_path 为(7,2),(5,4),(2,3)。C)找到当前搜索路径中的根节点为(2,3),计算点(2.1,3.1)与它之间的距离为R=0.1414。,A)然后我们以点(2.1,3.1)为圆心,R为半径 画圆,观察此圆是否与search_path中各 节点所处分割超平面相交(例如点(5,4)所在超平面为y=4),如果相交则需要跳 到该节点的右子节点中去搜索,否则该点 的右子节点中没有满足要求的点存在。,最近邻域的搜索过程为:B C A。,Section,章,节,使用KNeighborsCl
8、assifier实现分类数据集获取和属性介绍数据可视化介绍数据集的划分特征预处理简介归一化和标准化介绍鸢尾花种类预测KNN算法总结,5.使用KNeighborsClassifier实现分类,7.1 视频讲解,如何获取sklearn中的数据集?,5.使用KNeighborsClassifier实现分类,7.2 知识检测,如何获取sklearn中的数据集?有哪些属性?,1、_ 的数据集获取:sklearn.datasets.load_*2、_ 的数据集获取:sklearn.datasets.fetch_*3、返回的数据集类型:bunch,本质上是一个 _ 类型。4、常用数据集的属性:data、fe
9、ature_names、target、target_names、DESCR,答案:小规模;大规模;字典。,Section,章,节,使用KNeighborsClassifier实现分类数据集获取和属性介绍数据可视化介绍数据集的划分特征预处理简介归一化和标准化介绍鸢尾花种类预测KNN算法总结,5.使用KNeighborsClassifier实现分类,8.1 视频讲解,如何可视化鸢尾花数据集中的数据?,5.使用KNeighborsClassifier实现分类,8.2 知识检测,以下对鸢尾花数据进行可视化代码的顺序正确的是?,A)绘图:plot_iris(iris_d,Petal_Width,Sepa
10、l_Length)B)把数据转换成dataframe的格式:iris_d=pd.DataFrame(irisdata,columns=Sepal_Length,Sepal_Width,Petal_Length,Petal_Width)iris_dSpecies=iris.targetC)定义绘图函数:def plot_iris(iris,col1,col2):sns.lmplot(x=col1,y=col2,data=iris,hue=Species,fit_reg=False)plt.xlabel(col1)plt.ylabel(col2)plt.title(鸢尾花种类分布图)plt.sho
11、w(),选项:A、ABCB、BACC、BCAD、CBA,答案:CD。,Section,章,节,使用KNeighborsClassifier实现分类数据集获取和属性介绍数据可视化介绍数据集的划分特征预处理简介归一化和标准化介绍鸢尾花种类预测KNN算法总结,5.使用KNeighborsClassifier实现分类,9.1 视频讲解,如何对数据集进行划分?,5.使用KNeighborsClassifier实现分类,9.2 知识检测,关于数据集的划分正确的用法是?,1、导包:from sklearn.model_selection import train_test_split2、划分数据集:A)x_
12、train,y_train,x_test,y_test=train_test_split(data,target,test_size,random_state)B)x_test,y_test,x_train,y_train=train_test_split(data,target,test_size,random_state)C)x_train,x_test,y_train,y_test=train_test_split(data,target,test_size,random_state),答案:C。,Section,章,节,使用KNeighborsClassifier实现分类数据集获取和属
13、性介绍数据可视化介绍数据集的划分特征预处理简介归一化和标准化介绍鸢尾花种类预测KNN算法总结,5.使用KNeighborsClassifier实现分类,10.1 视频讲解,什么是特征预处理?,5.使用KNeighborsClassifier实现分类,10.2 知识检测,特征预处理解决的是什么问题?,1)将不同维度的 _ 数据进行无量纲化(缩放到相同的范围水平)2)机器学习算法对 _ 的特征有偏好,这样对其它特征而言有失公正,而且,算法不能够充分学习到更多的特征信息。为了消除这种影响,我们 首先会对这样的特征进行特征预处理。,答案:数值型;数值较大。,Section,章,节,使用KNeighbo
14、rsClassifier实现分类数据集获取和属性介绍数据可视化介绍数据集的划分特征预处理简介归一化和标准化介绍鸢尾花种类预测KNN算法总结,5.使用KNeighborsClassifier实现分类,11.1 视频讲解,什么是归一化、标准化?,5.使用KNeighborsClassifier实现分类,11.2 知识检测,归一化,标准化,在 _ 的情况下,异常值对样本的均值和标准差的影响可以忽略不计。,度量值 X容易受到样本中 _ 的影响,鲁棒性差。,填空:,答案:异常值;样本数量较大。,Section,章,节,使用KNeighborsClassifier实现分类数据集获取和属性介绍数据可视化介绍
15、数据集的划分特征预处理简介归一化和标准化介绍鸢尾花种类预测KNN算法总结,5.使用KNeighborsClassifier实现分类,12.1 视频讲解,如何实现完整的鸢尾花种类的预测?,5.使用KNeighborsClassifier实现分类,12.2 知识检测,分别说明KNN算法API中下列参数的意义:,KNeighborsClassifier(n_neighbors,algorithm=auto)1)n_neighbors:integer;2)algorithm:auto,ball_tree,kd_tree,brute3)metric:(default=minkowski)4)p:inte
16、ger,optional(default=2),搜索最近邻样本的最大数量;最近邻样本搜索所使用的方法;距离度量方法;指定闵可夫斯基距离中的P值。,Section,章,节,使用KNeighborsClassifier实现分类数据集获取和属性介绍数据可视化介绍数据集的划分特征预处理简介归一化和标准化介绍鸢尾花种类预测KNN算法总结,5.使用KNeighborsClassifier实现分类,13.1 视频讲解,KNN算法的优缺点有哪些?,5.使用KNeighborsClassifier实现分类,13.2 知识检测,KNN算法的优缺点是什么?应用在什么场景?(填空),1)优点:思想简单,效果强大,可用
17、于解决回归问题KNeighborsRegressor。2)缺点:效率 _,数据的预测结果可解释性 _;对k值的取值比较 _,对于高维度的数据的处理效果不明显。3)适用于 _ 数据集场景。,答案:低下;不强;敏感;小中型。,Section,章,节,交叉验证的概念及其作用交叉验证、网格搜索概念介绍交叉验证、网格搜索案例实现,6.交叉验证的概念及其作用,14.1 视频讲解,交叉验证和网格搜索解决了什么问题?,6.交叉验证的概念及其作用,14.2 知识检测,交叉验证和网格搜索的目的是什么?(填空),1)在数据量较少的情况下,为了让数据被 _,并且为了让被评估的 模型更加 _,一般会使用交叉验证去完成任
18、务。2)有些算法模型本身自带较多的超参数,无法 _ 的去筛选比较合适的 超参数组合。3)使用交叉验证和网格搜索可以提升模型的 _ 和查找最佳参数组合 的 _。,答案:充分利用;准确可信;高效;可信度;效率。,Section,章,节,交叉验证的概念及其作用交叉验证、网格搜索概念介绍交叉验证、网格搜索案例实现,6.交叉验证的概念及其作用,15.1 视频讲解,如何应用交叉验证和网格搜索?,6.交叉验证的概念及其作用,15.2 知识检测,说出以下API参数的意义:,sklearn.model_selection.GridSearchCV(estimator,param_grid,cv)estimator:object of estimator;param_grid:dict;cv:integer;,答案:实例化后的算法模型对象;待被筛选的超参数字典;指定筛选超参数时使用的是几折交叉验证。,