DDR爱好者之家 Design By 杰米
本文实例讲述了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 = 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程序设计有所帮助。
DDR爱好者之家 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
DDR爱好者之家 Design By 杰米
暂无评论...
更新日志
2024年11月27日
2024年11月27日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]