建设银行可以查房贷的网站,官方网站撰写策划书,南阳网站建设8iwang,网站建设实习困难机器学习#xff1a;学习k-近邻#xff08;KNN#xff09;模型建立、使用和评价 文章目录机器学习#xff1a;学习k-近邻#xff08;KNN#xff09;模型建立、使用和评价一、实验目的二、实验原理三、实验环境四、实验内容五、实验步骤1.数据读取2.数据理解3.数据准备4.算…机器学习学习k-近邻KNN模型建立、使用和评价 文章目录机器学习学习k-近邻KNN模型建立、使用和评价一、实验目的二、实验原理三、实验环境四、实验内容五、实验步骤1.数据读取2.数据理解3.数据准备4.算法选择及其超级参数的设置5.具体模型的训练6.用模型进行预测7.模型评价总结一、实验目的
学习kNN(k-Nearest Neighbors)算法
二、实验原理
k-近邻(kNNk-Nearest Neighbors)算法是一种基于实例的分类方法。该方法就是找出与未知样本x距离最近的k个训练样本看这k个样本中多数属于哪一类就把x归为那一类。k-近邻方法是一种懒惰学习方法它存放样本直到需要分类时才进行分类如果样本集比较复杂可能会导致很大的计算开销因此无法应用到实时性很强的场合。
kNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别则该样本也属于这个类别并具有这个类别上样本的特性。该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。 kNN方法在类别决策时只与极少量的相邻样本有关。由于kNN方法主要靠周围有限的邻近的样本而不是靠判别类域的方法来确定所属类别的因此对于类域的交叉或重叠较多的待分样本集来说kNN方法较其他方法更为适合。
K最近邻(k-Nearest NeighborKNN)分类算法是一个理论上比较成熟的方法也是最简单的机器学习算法之一。该方法的思路是如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别则该样本也属于这个类别。KNN算法中所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。 KNN方法虽然从原理上也依赖于极限定理但在类别决策时只与极少量的相邻样本有关。由于KNN方法主要靠周围有限的邻近的样本而不是靠判别类域的方法来确定所属类别的因此对于类域的交叉或重叠较多的待分样本集来说KNN方法较其他方法更为适合。
KNN算法不仅可以用于分类还可以用于回归。通过找出一个样本的k个最近邻居将这些邻居的属性的平均值赋给该样本就可以得到该样本的属性。更有用的方法是将不同距离的邻居对该样本产生的影响给予不同的权值(weight)如权值与距离成反比
例如绿色圆要被决定赋予哪个类是红色三角形还是蓝色四方形如果K3由于红色三角形所占比例为2/3绿色圆将被赋予红色三角形那个类如果K5由于蓝色四方形比例为3/5因此绿色圆被赋予蓝色四方形类。 在KNN中通过计算对象间距离来作为各个对象之间的非相似性指标避免了对象之间的匹配问题在这里距离一般使用欧氏距离或曼哈顿距离 接下来对KNN算法的思想总结一下就是在训练集中数据和标签已知的情况下输入测试数据将测试数据的特征与训练集中对应的特征进行相互比较找到训练集中与之最为相似的前K个数据则该测试数据对应的类别就是K个数据中出现次数最多的那个分类其算法的描述为
1.计算已知类别数据集中的点与当前点之间的距离
2.按照距离递增次序排列
3.选取与当前点距离最小的 K 个点
4.确定前 K 个点所在类别的出现频率
5.返回前 K 个点出现频率最高的类别作为当前点的预测分类
三、实验环境
Python 3.9
Anaconda
IPython Notebook
四、实验内容
学习KNN算法了解模型创建、使用模型及模型评价等操作
五、实验步骤
1.数据读取
1.导入os模块返回当前工作路径
import os
os.getcwd()2.导入pandas和numpy包并改变工作目录
import pandas as pd
import numpy as np
import os
os.chdir(rD:\CSDN\数据分析\KNN)
print(os.getcwd())3.读取该目录下的bc_data.csv文件并返回文件内容
bc_data pd.read_csv(rD:\CSDN\数据分析\KNN\bc_data.csv, header0)
bc_data.head() 其中header参数用来指定数据开始读取行数。设置为0表示从第一行开始读取设置为1表示从第二行开始读取 2.数据理解
1.shape函数是numpy.core.fromnumeric中的函数直接用.shape可以快速读取矩阵的形状使用shape[0]读取矩阵第一维度的长度
bc_data.shape2.查看bc_data的列名
print(bc_data.columns)3.查看bc_data的描述性统计
bc_data.describe()3.数据准备
1.删除bc_data中的id列其中axis使用0值表示沿着每一列或行标签\索引值向下执行方法使用1值表示沿着每一行或者列标签模向执行对应的方法
data bc_data.drop([id],axis 1)
print(data.head())2.删除data文件中的diagnosis列并查看X_data内容
X_data data.drop([diagnosis], axis1)
X_data.head() 3.使用numpy中的ravel()方法将data中的多维数据降为一维并使用切片查询y_data
这里需要注意的是np.ravel()返回的是视图修改时会影响原始矩阵
y_data np.ravel(data[[diagnosis]])
y_data[0:6] 4.导入sklearn库中的train_test_split函数划分训练集和测试集
from sklearn.model_selection import train_test_split
X_trainingSet, X_testSet, y_trainingSet, y_testSet train_test_split(X_data, y_data, random_state1) 参数解释如下
5.使用shape函数查看训练集矩阵形状
print(X_trainingSet.shape)6.使用shape函数查看测试集矩阵形状
print(X_testSet.shape)4.算法选择及其超级参数的设置
1.导入sklearn模块中的KNeighborsClassifier函数并使用kd_tree算法
from sklearn.neighbors import KNeighborsClassifier
myModel KNeighborsClassifier(algorithmkd_tree) 5.具体模型的训练
1.使用.fit方法对训练数据进行模型拟合
myModel.fit(X_trainingSet,y_trainingSet)6.用模型进行预测
1.使用.predict方法用训练好的模型进行预测
y_predictSet myModel.predict(X_testSet) 2.打印输出y_predictSet预测结果
print(y_predictSet) 3.打印输出y_testSet
print(y_testSet)7.模型评价
1.导入sklearn模块中的accuracy_score对模型进行评价
from sklearn.metrics import accuracy_score
print(accuracy_score(y_testSet,y_predictSet))说明模型的正确率为0.937062937063 总结
k-近邻(kNNk-Nearest Neighbors)算法是一种基于实例的分类方法。该方法就是找出与未知样本x距离最近的k个训练样本看这k个样本中多数属于哪一类就把x归为那一类。k-近邻方法是一种懒惰学习方法它存放样本直到需要分类时才进行分类如果样本集比较复杂可能会导致很大的计算开销因此无法应用到实时性很强的场合。
kNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别则该样本也属于这个类别并具有这个类别上样本的特性。