1、分类-K近邻王秋月中国人民大学信息学院什么是分类?一家花店想根据某顾客最近买花的情况,来预测某种新来的花是否会被该顾客购买?什么是分类??什么是分类??什么是分类??什么是分类?分类需要什么?数据:将对象表示为量化的一组特征 给定类别标签 对象间相似性的度量060SurvivedDid notsurvive40Age201020Number of Malignant NodesK近邻(KNN)分类06040Age201020Number of Malignant Nodes预测预测K近邻(KNN)分类近邻数目(K=1):0106040Age201020Number of Malignant N
2、odes预测预测K近邻(KNN)分类06040Age201020Number of Malignant NodesK近邻(KNN)分类近邻数目(K=2):11预测预测06040Age201020Number of Malignant NodesK近邻(KNN)分类近邻数目(K=3):21预测预测06040Age201020Number of Malignant NodesK近邻(KNN)分类近邻数目(K=4):31预测预测0 正确的“K”值 如何度量相邻两点之间的相似性/距离?6040201020Number of Malignant NodesK近邻模型需要选择40AgeK值的选择值的选择K
3、=106040Age201020Number of Malignant NodesK近邻模型的判定边界K=All01020Number of Malignant Nodes6040Age20K近邻模型的判定边界01020Number of Malignant Nodes6040200K=16040201020Number of Malignant NodesK=AllK值的大小会影响判定边界决定最佳决定最佳K的方法将在下节课讨论的方法将在下节课讨论距离的度量距离的度量06040Age201020Number of Malignant NodesK近邻模型中的距离测度06040Age201020
4、Number of Malignant NodesK近邻模型中的距离测度06040Age201020Number of Malignant Nodes欧几里得距离0Age6040201020Number of Malignant Nodes=2+2AgedNodes欧几里得距离(L2距离)0Age6040201020Number of Malignant NodesAgeNodes=+曼哈顿距离(L1或街区距离)数据缩放数据缩放12345Number ofSurgeries6040Age20缩放比例对计算距离非常重要12345Number ofSurgeriesAge6040202422201
5、8缩放比例对计算距离非常重要Age6040202422201812345Number ofSurgeriesNearest Neighbors!缩放比例对计算距离非常重要特征缩放1506040Age20234Number ofSurgeries缩放比例对计算距离非常重要特征缩放1506040Age20234Number ofSurgeries缩放比例对计算距离非常重要特征缩放1506040Age20234Number ofSurgeriesNearest Neighbors!缩放比例对计算距离非常重要 Standard Scaler:即标准化,尽量将数据转化为均值为0,方差为1的数据,形如标准
6、正态分布(高斯分布)。Minimum-Maximum Scaler:将数据缩放到某一给定范围(通常是0,1)。Maximum Absolute Value Scaler:通过除以最大绝对值,将数据缩放到-1,1。使各特征的数值都处于同一数量级上。特征缩放的不同方法导入包含缩放方法的类:导入包含缩放方法的类:from sklearn.preprocessing import StandardScaler创建该类的一个对象:创建该类的一个对象:StdSc=StandardScaler()拟合缩放的参数,然后对数据做转换:拟合缩放的参数,然后对数据做转换:StdSc=StdSc.fit(X_data
7、)X_scaled=StdSc.transform(X_data)或者或者 X_scaled=StdSc.fit_transform(X_data)特征缩放的语法导入包含缩放方法的类:导入包含缩放方法的类:from sklearn.preprocessing import StandardScaler创建该类的一个对象:创建该类的一个对象:StdSc=StandardScaler()拟合缩放的参数,然后对数据做转换:拟合缩放的参数,然后对数据做转换:StdSc=StdSc.fit(X_data)X_scaled=StdSc.transform(X_data)特征缩放的语法其他缩放方法其他缩放方
8、法:MinMaxScaler,MaxAbsScaler.KNN多分类、多分类、KNN回归回归K=5Full remissionPartialremission06040AgeDid notsurvive201020Number of Malignant NodesK近邻多分类的判定边界投票决定:投票决定:少数服从多数,近邻中哪个类别的点最多就分为该类。加权投票法:加权投票法:根据距离的远近,对近邻的投票进行加权,距离越近则权重越大(权重为距离平方的倒数)K=1K=3K=20K近邻回归KNN模型特点及语法模型特点及语法 建模快,因为它只是简单地存储数据 运行速度慢,因为需要计算很多的距离 占用内
9、存多,如果数据集大的话K近邻模型的特点导入包含分类方法的类:导入包含分类方法的类:from sklearn.neighbors import KNeighborsClassifier创建该类的一个对象:创建该类的一个对象:KNN=KNeighborsClassifier(n_neighbors=3)拟合数据集,即训练拟合数据集,即训练KNN模型,并用训练好的模型预测数据模型,并用训练好的模型预测数据的标签:的标签:KNN=KNN.fit(X_data,y_data)y_predict=KNN.predict(X_data)K近邻模型的语法http:/scikit-learn.org/stabl
10、e/modules/generated/sklearn.neighbors.KNeighborsClassifier.html导入包含分类方法的类:导入包含分类方法的类:from sklearn.neighbors import KNeighborsClassifier创建该类的一个对象:创建该类的一个对象:KNN=KNeighborsClassifier(n_neighbors=3)拟合数据集,即训练拟合数据集,即训练KNN模型,并用训练好的模型预测数据模型,并用训练好的模型预测数据的标签:的标签:KNN=KNN.fit(X_data,y_data)y_predict=KNN.predict
11、(X_data)K近邻模型的语法这种这种 fit 和和 predict/transform 语法会贯穿整个课程语法会贯穿整个课程导入包含分类方法的类:导入包含分类方法的类:from sklearn.neighbors import KNeighborsClassifier创建该类的一个对象:创建该类的一个对象:KNN=KNeighborsClassifier(n_neighbors=3)拟合数据集,即训练拟合数据集,即训练KNN模型,并用训练好的模型预测数据模型,并用训练好的模型预测数据的标签:的标签:KNN=KNN.fit(X_data,y_data)y_predict=KNN.predict(X_data)K近邻模型的语法回归使用回归使用KNeighborsRegressor案例研究:鸢尾花数据集 150个鸢尾花样例 来自3个不同的属种 Setosa,Versicolor,Virginica 每种50个样例 用4个特征度量 花萼的长度和宽度,花瓣的长度和宽度 分类问题:给定一株鸢尾花,判定其属种鸢尾花数据集样例特征类别标签创建机器学习应用路线图数据预处理学习评价预测演示第4章-K近邻.ipynb