KNN算法基本原理与sklearn实现


''' KNN 近邻算法,有监督学习算法 用于分类和回归 思路: 1.在样本空间中查找 k 个最相似或者距离最近的样本 2.根据这 k 个最相似的样本对未知样本进行分类 步骤: 1.对数据进行预处理 提取特征向量,对原来的数据重新表达 2.确定距离计算公式 计算已知样本空间中所有样本与未知样本的距离 3.对所有的距离按升序进行排列 4.选取与未知样本距离最小的 k 个样本 5.统计选取的 k 个样本中每个样本所属类别的出现概率 6.把出现频率最高的类别作为预测结果,未知样本则属于这个类别 程序要点: 1.创建模型需要用到的包 sklearn.neighbors.KNeighborsClassifier 2.创建模型,k = 3 knn = KNeighborsClassifier(n_neighbors = 3) n_neighbors 数值不同,创建的模型不同 3.训练模型,进行拟合 knn.fit(x,y) x 为二维列表数据 x = [[1,5],[2,4],[2.2,5], [4.1,5],[5,1],[5,2],[5,3],[6,2], [7.5,4.5],[8.5,4],[7.9,5.1],[8.2,5]] y 为一维分类数据,将数据分为 0 1 2 三类 y = [0,0,0, 1,1,1,1,1, 2,2,2,2] 4.进行预测未知数据,返回所属类别 knn.predict([[4.8,5.1]]) 5.属于不同类别的概率 knn.predict_proba([[4.8,5.1]]) ''' from sklearn.neighbors import KNeighborsClassifier # 导包 x = [[1,5],[2,4],[2.2,5], [4.1,5],[5,1],[5,2],[5,3],[6,2], [7.5,4.5],[8.5,4],[7.9,5.1],[8.2,5]] # 设置分类的数据 y = [0,0,0, 1,1,1,1,1, 2,2,2,2] # 对 x 进行分类,前三个分为 0类,1类和2类 knn = KNeighborsClassifier(n_neighbors=3) # 创建模型 k = 3 knn.fit(x,y) # 开始训练模型 ''' KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski', metric_params=None, n_jobs=None, n_neighbors=3, p=2, weights='uniform') ''' knn.predict([[4.8,5.1]]) # array([1]) 预测 4.8,5.1 在哪一个分组中 knn = KNeighborsClassifier(n_neighbors=9) # 设置参数 k = 9 knn.fit(x,y) ''' KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski', metric_params=None, n_jobs=None, n_neighbors=9, p=2, weights='uniform') ''' knn.predict([[4.8,5.1]]) # array([1]) knn.predict_proba([[4.8,5.1]]) # 属于不同类别的概率 # array([[0.22222222, 0.44444444, 0.33333333]]) # 返回的是在不同组的概率 ''' 总结: knn = KNeighborsClassifier(n_neighbors=3) 使用 KNeighborsClassifier 创建模型 n_neighbors 为 k 使用 knn.fit() 进行预测 第一个参数为 二维列表 第二个参数为 一维列表 使用 predict_proba([[num1,num2]]) 查看num1,num2 在模型中出现的概率 '''

2020-04-10


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM