• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Python机器学习之scikit-learn库中KNN算法的封装与使用方法

python 搞代码 4年前 (2022-01-08) 14次浏览 已收录 0个评论

这篇文章主要介绍了Python机器学习之scikit-learn库中KNN算法的封装与使用方法,结合实例形式分析了scikit-learn库中KNN算法的相关调用与使用技巧,需要的朋友可以参考下

本文实例讲述了Python机器学习之scikit-learn库中KNN算法的封装与使用方法。分享给大家供大家参考,具体如下:

1、工具准备,python环境,pycharm

2、在机器学习中,KNN是不需要训练过程的算法,也就是说,输入样例可以直接调用predict预测结果,训练数据集就是模型。当然这里必须将训练数据和训练标签进行拟合才能形成模型。

3、在pycharm中创建新的项目工程,并在项目下新建KNN.py文件。

 import numpy as np from math import sqrt from collections import Counter class KNNClassifier: def __init__(self,k): """初始化KNN分类器""" assert k >= 1 """断言判断k的值是否合法""" self.k = k self._X_train = None self._y_train =<b style="color:transparent">来源gao@!dai!ma.com搞$$代^@码网</b> None def fit(self,X_train,y_train): """根据训练数据集X_train和Y_train训练KNN分类器,形成模型""" assert X_train.shape[0] == y_train.shape[0] """数据和标签的大小必须一样 assert self.k <= X_train.shape[0] """k的值不能超过数据的大小""" self._X_train = X_train self._y_train = y_train return self def predict(self,X_predict): """必须将训练数据集和标签拟合为模型才能进行预测的过程""" assert self._X_train is not None and self._y_train is not None """训练数据和标签不可以是空的""" assert X_predict.shape[1]== self._X_train.shape[1] """待预测数据和训练数据的列(特征个数)必须相同""" y_predict = [self._predict(x) for x in X_predict] return np.array(y_predict) def _predict(self,x): """给定单个待测数据x,返回x的预测数据结果""" assert x.shape[0] == self._X_train.shape[1] """x表示一行数据,即一个数组,那么它的特征数据个数,必须和训练数据相同 distances = [sqrt(np.sum((x_train - x)**2))for x_train in self._X_train] nearest = np.argsort(distances) topk_y = [self._y_train[i] for i in nearest[:self.k]] votes = Counter(topk_y) return votes.most_common(1)[0][0] 

4、新建test.py文件,引入KNNClassifier对象。

 from KNN.py import KNNClassifier raw_data_x = [[3.393,2.331], [3.110,1.781], [1.343,3.368], [3.582,4.679], [2.280,2.866], [7.423,4.696], [5.745,3.533], [9.172,2.511], [7.792,3.424], [7.939,0.791]] raw_data_y = [0,0,0,0,0,1,1,1,1,1] X_train = np.array(raw_data_x) y_train = np.array(raw_data_y) x = np.array([9.880,3.555]) # 要将x这个矩阵转换成2维的矩阵,一行两列的矩阵 X_predict = x.reshape(1,-1) """1,创建一个对象,设置K的值为6""" knn_clf = KNNClassifier(6) """2,将训练数据和训练标签融合""" knn_clf.fit(X_train,y_train) """3,经过2才能跳到这里,传入待预测的数据""" y_predict = knn_clf.predict(X_predict) print(y_predict) 

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数学运算技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

以上就是Python机器学习之scikit-learn库中KNN算法的封装与使用方法的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Python机器学习之scikit-learn库中KNN算法的封装与使用方法

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址