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


Posted in Python onDecember 14, 2018

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

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

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

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

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实现识别相似图片小结
Feb 22 Python
Python实现完整的事务操作示例
Jun 20 Python
Python爬虫包BeautifulSoup学习实例(五)
Jun 17 Python
Python 打印中文字符的三种方法
Aug 14 Python
python pytest进阶之xunit fixture详解
Jun 27 Python
python logging模块的使用总结
Jul 09 Python
详解python中docx库的安装过程
Nov 08 Python
python的range和linspace使用详解
Nov 27 Python
Django框架models使用group by详解
Mar 11 Python
pytorch查看模型weight与grad方式
Jun 24 Python
python实现数字炸弹游戏程序
Jul 17 Python
Python批量将csv文件转化成xml文件的实例
May 10 Python
Python面向对象之类的内置attr属性示例
Dec 14 #Python
python模糊图片过滤的方法
Dec 14 #Python
python 随机打乱 图片和对应的标签方法
Dec 14 #Python
对python打乱数据集中X,y标签对的方法详解
Dec 14 #Python
Python实现带参数的用户验证功能装饰器示例
Dec 14 #Python
Python面向对象之类和对象属性的增删改查操作示例
Dec 14 #Python
用python爬取租房网站信息的代码
Dec 14 #Python
You might like
php mssql 分页SQL语句优化 持续影响
2009/04/26 PHP
深入php常用函数的使用汇总
2013/06/08 PHP
基于PHP CURL用法的深入分析
2013/06/09 PHP
php使用cookie保存登录用户名的方法
2015/01/26 PHP
php简单日历函数
2015/10/28 PHP
php中通过eval实现字符串格式的计算公式
2017/03/18 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
php实现支付宝当面付(扫码支付)功能
2018/05/30 PHP
php基于Redis消息队列实现的消息推送的方法
2018/11/28 PHP
为调试JavaScript添加输出窗口的代码
2010/02/07 Javascript
浅谈tudou土豆网首页图片延迟加载的效果
2010/06/23 Javascript
document.write的几点使用心得
2014/05/14 Javascript
JavaScript知识点总结(十一)之js中的Object类详解
2016/05/31 Javascript
NodeJS整合银联网关支付(DEMO)
2016/11/09 NodeJs
js 获取本地文件及目录的方法(推荐)
2016/11/10 Javascript
Json按某个键的值进行排序
2016/12/22 Javascript
React Native之ListView实现九宫格效果的示例
2017/08/02 Javascript
elementui的默认样式修改方法
2018/02/23 Javascript
Vue.js 中 axios 跨域访问错误问题及解决方法
2018/11/21 Javascript
JS实现点击发送验证码 xx秒后重新发送功能
2019/07/30 Javascript
jQuery 移除事件的方法
2020/06/20 jQuery
vue实现广告栏上下滚动效果
2020/11/26 Vue.js
python字符串连接的N种方式总结
2014/09/17 Python
python开发之thread线程基础实例入门
2015/11/11 Python
详解Python的Flask框架中生成SECRET_KEY密钥的方法
2016/06/07 Python
浅谈python为什么不需要三目运算符和switch
2016/06/17 Python
pytorch载入预训练模型后,实现训练指定层
2020/01/06 Python
python 链接sqlserver 写接口实例
2020/03/11 Python
pytorch Dataset,DataLoader产生自定义的训练数据案例
2021/03/03 Python
美国酒店控股公司:Choice Hotels
2018/06/15 全球购物
小蚁科技官方商店:YI Technology
2019/08/23 全球购物
Timberland澳大利亚官网:全球领先的户外品牌
2019/12/10 全球购物
简历中的自我评价怎么写
2014/01/29 职场文书
学习决心书
2014/03/11 职场文书
财务人员担保书
2014/05/13 职场文书
市场营销策划方案
2014/06/11 职场文书