今天做机器学习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. 接口测试01- Jmeter-线程进程-环境变量

    1.1 概念 JMeter 是 Apache 组织使用 Java 开发的一款测试工具 ,它最初被设计用于Web应用测试,但后来扩展到其他测试领域. 它可以用于测试静态和动态资源,例如静态文件.Java ...

  2. Java8 Collectors类的静态工厂方法

    预定义收集器的功能,就是那些可以从Collectors类提供的工厂方法(例如grouping By)创建的收集器. 它们主要提供了三大功能: •将流元素归约和汇总为一个值 •元素分组 •元素分区 •c ...

  3. [LeetCode] 504. Base 7 基数七

    Given an integer, return its base 7 string representation. Example 1: Input: 100 Output: "202&q ...

  4. appium 弹窗处理

    测试过程中遇到两类弹窗: 系统权限弹窗具体业务弹窗系统权限弹窗Android系统权限弹窗一般出现在安装 app 后首次打开,如:定位权限.电话权限等.我们可以按顺序执行测试用例,将该类操作放到 Ini ...

  5. 09 Servlet相关知识点---学习笔记

    1.概念:运行在服务器端的小程序 Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则.将来我们自定义一个类,实现Servlet接口,复写方法. 2.快速入门:(1)创 ...

  6. Python-09-文件处理

    一.文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 #1. 打开文件,得到文件句柄并赋值给一个变量 f=open('a.txt','r',encoding='u ...

  7. python函数知识六 内置函数二、匿名函数与内置函数三(重要)

    19.内置函数二 abs():绝对值 lst = [1,2,-3,1,2,-5] print([abs(i) for i in lst]) enumerate("可迭代对象",&q ...

  8. 记28377系列芯片中Can总线标准帧和扩展帧该怎么设置?

    笔者最近在调试28377系列DSP芯片的can通讯时,遇到一个小问题,百思不得姐~ 起因是这样的,在设计一个多单元并联的系统,所有单元使用can总线进行通讯,当通讯端口,can外设,以及相关通讯协议都 ...

  9. 【IDEA使用技巧】(5) —— IntelliJ IDEA集成Tomcat部署Maven Web项目

    1.IntelliJ IDEA集成Tomcat部署Maven Web项目 1.1.IDEA构建Maven Web项目 使用IDEA来创建一个简单的Hello World的Maven Web项目,并使用 ...

  10. Scala 函数入门之过程、lazy值和异常

    Scala 过程  在Scala中,定义函数时,如果函数体直接包裹在了花括号里面,而没有使用=连接,则函数的返回值类型就是Unit.这样的函数就被称之为过程.过程通常用于不需要返回值的函数. 过程还有 ...