本文实例讲述了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程序设计有所帮助。
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
暂无评论...
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
2024年11月26日
2024年11月26日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓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]