今天做机器学习knn的实现想使用sklearn这个模块,但是里面的函数不懂,无奈只能查文档,但是一大片英文看见我就烦,也不是说不能看  但是以我低下的英语水平实在是太费劲了。幸好找到一篇前人翻译的比较好的解释。给大家推荐一下:一位来自简书的作者:吃着苹果写代码   感谢作者的分享,希望能帮到更多的人。

sklearn 翻译笔记:KNeighborsClassifier - 简书

顺便把今天实现的代码也分享出来吧:诚然,代码实现顺利运行的呢一刻真的很开心

本代码是在python 中文文本分类 - 相国大人 - CSDN博客(相国大人)的代码基础上实现的

相国大人是使用的贝叶斯分类实现的分类模型,由于我的实际需要,我将相国大人的最后一个分类器模型NBayes_Predict.py修改了,使用了sklearn.neighbors这个pycharm自带的模块,具体源码如下:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@version: python3.6
@author: XiangguoSun
@file:Neighbors.py
@time: 2019/6/20 16:12
@software: PyCharm
""" from sklearn.neighbors import KNeighborsClassifier # 导入k近邻算法
from sklearn import metrics
from Tools import readbunchobj
import os # 导入训练集
path = os.getcwd() # 获取当前路径
trainpath = os.path.join(path,"train_word_bag/tfdifspace.dat")
train_set = readbunchobj(trainpath) # 导入测试集
testpath = os.path.join(path,"test_word_bag/testspace.dat")
test_set = readbunchobj(testpath) # 训练分类器:输入词袋向量和分类标签,
clf=KNeighborsClassifier(n_neighbors=5,radius=1.0,algorithm='auto',leaf_size=30,
metric='minkowski',p=2,metric_params=None,n_jobs=1).fit(train_set.tdm, train_set.label)
"""
n_neighbors: int, 可选参数(默认为 5)
algorithm(算法): {‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’}, 可选参数(默认为 'auto')
leaf_size(叶子数量): int, 可选参数(默认为 30)
p: integer, 可选参数(默认为 2)
metric(矩阵): string or callable, 默认为 ‘minkowski’
metric_params(矩阵参数): dict, 可选参数(默认为 None)
n_jobs: int, 可选参数(默认为 1)
用于搜索邻居的,可并行运行的任务数量。如果为-1, 任务数量设置为CPU核的数量。
""" # 预测分类结果
predicted = clf.predict(test_set.tdm) """
target_name: 是一个list,存放的是整个数据集的类别集合
label: 是一个list,存放的是所有文本的标签。
filenames: 是一个list,存放的是所有文本文件的名字。
contents: 是一个list,分词后文本文件(一个文本文件只有一行)
"""
for flabel, file_name, expct_cate in zip(test_set.label, test_set.filenames, predicted):
if flabel != expct_cate:
print(file_name, ": 实际类别:", flabel, " -->预测类别:", expct_cate) print("预测完毕!!!") # 计算分类精度: def metrics_result(actual, predict):
print('精度:{0:.3f}'.format(metrics.precision_score(actual, predict, average='weighted')))
print('召回:{0:0.3f}'.format(metrics.recall_score(actual, predict, average='weighted')))
print('f1-score:{0:.3f}'.format(metrics.f1_score(actual, predict, average='weighted'))) metrics_result(test_set.label, predicted)

readbunchobj()方法在Tool.py文件,若要复现,请下载相国大人完整代码再修改或者联系我,我可以提供修改好的Knn代码和训练集测试集。

sklearn 翻译笔记:KNeighborsClassifier的更多相关文章

  1. Distinctive Image Features from Scale-Invariant Keypoints(个人翻译+笔记)-介绍

    Distinctive Image Features from Scale-Invariant Keypoints,这篇论文是图像识别领域SIFT算法最为经典的一篇论文,导师给布置的第一篇任务就是它. ...

  2. sklearn学习笔记3

    Explaining Titanic hypothesis with decision trees decision trees are very simple yet powerful superv ...

  3. sklearn学习笔记2

    Text classifcation with Naïve Bayes In this section we will try to classify newsgroup messages using ...

  4. sklearn学习笔记1

    Image recognition with Support Vector Machines #our dataset is provided within scikit-learn #let's s ...

  5. Subversion ----> svnserve.conf / authz / passwd / hooks-env.tmpl <<翻译笔记>>

    svnserve.conf 假如你使用这个文件去允许访问这个仓库,那么这个文件控制着svnserve后台进程的配置.(但是如果你只是允许通过http和/或者 file:URLs,则这个文件就不起作用了 ...

  6. sklearn学习笔记之简单线性回归

    简单线性回归 线性回归是数据挖掘中的基础算法之一,从某种意义上来说,在学习函数的时候已经开始接触线性回归了,只不过那时候并没有涉及到误差项.线性回归的思想其实就是解一组方程,得到回归函数,不过在出现误 ...

  7. sklearn学习笔记

    用Bagging优化模型的过程:1.对于要使用的弱模型(比如线性分类器.岭回归),通过交叉验证的方式找到弱模型本身的最好超参数:2.然后用这个带着最好超参数的弱模型去构建强模型:3.对强模型也是通过交 ...

  8. sklearn学习笔记(一)——数据预处理 sklearn.preprocessing

    https://blog.csdn.net/zhangyang10d/article/details/53418227 数据预处理 sklearn.preprocessing 标准化 (Standar ...

  9. sklearn学习笔记之岭回归

    岭回归 岭回归是一种专用于共线性数据分析的有偏估计回归方法,实质上是一种改良的最小二乘估计法,通过放弃最小二乘法的无偏性,以损失部分信息.降低精度为代价获得回归系数更为符合实际.更可靠的回归方法,对病 ...

随机推荐

  1. springboot 整合mongodb

    Mongodb Mongodb是为快速开发互联网Web应用而构建的数据库系统,其数据模型和持久化策略就是为了构建高读/写吞吐量和高自动灾备伸缩性的系统. 在pom.xml中添加相关依赖 <!-- ...

  2. [LeetCode] 232. Implement Queue using Stacks 用栈来实现队列

    Implement the following operations of a queue using stacks. push(x) -- Push element x to the back of ...

  3. NB-IOT技术学习问题记录

    1. TAU是什么,跟踪区更新 2. 小区和基站的区别 3. 附着和设备注册的关系? 4. 不携带PDN是什么意思? 5. PLMN 公共陆地移动网络,和小区的关系,区别?

  4. 机器学习技法实现(一):AdaBoost- Decision Stump (AdaBoost - 决策树的基于Matlab的实现)

    经过前面对AdaBoost的总结,下面要基于Matlab实现AdaBoost-Stump进行二维平面数据点的分类的实验. 一. 实验原理 参看 http://blog.csdn.net/lg12591 ...

  5. springcloud使用之服务的注册发现与消费

    随着spring的发展我们发现spring提供了越来越多的项目来帮我们简化框架的搭建,使我们站在巨人的肩膀行走,让我们更关注于开发我们的逻辑.随着技术的更替,我们的新项目也逐渐使用了springboo ...

  6. liunx mysql数据库目录迁移

    1.查看mysql安装目录 从目录etc/my.cnf中查看安装目录 2.进入mysql目录,停止mysql服务 命令: cd usr/local/mysql 命令:service mysql sto ...

  7. Python-16-继承、封装、多态

    一.继承 1. 概念 继承是一种创建新类的方式,新建的类可以继承一个或多个父类(python支持多继承),父类又可称为基类或超类,新建的类称为派生类或子类. 子类会“”遗传”父类的属性,从而解决代码重 ...

  8. SQL学习-SQL Server

           

  9. xorm实例-创建xorm,映射

    创建xorm引擎 //在xorm里面,可以同时存在多个Orm引擎,一个Orm引擎称为Engine, //一个Engine一般只对应一个数据库. //Engine通过调用`xorm.NewEngine` ...

  10. 使用 Issue 管理软件项目详解

    文章来源:http://www.ruanyifeng.com/blog/2017/08/issue.html 软件开发(尤其是商业软件)离不开项目管理,Issue 是最通用的管理工具之一. 本文介绍 ...