sklearn 翻译笔记:KNeighborsClassifier
今天做机器学习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的更多相关文章
- Distinctive Image Features from Scale-Invariant Keypoints(个人翻译+笔记)-介绍
Distinctive Image Features from Scale-Invariant Keypoints,这篇论文是图像识别领域SIFT算法最为经典的一篇论文,导师给布置的第一篇任务就是它. ...
- sklearn学习笔记3
Explaining Titanic hypothesis with decision trees decision trees are very simple yet powerful superv ...
- sklearn学习笔记2
Text classifcation with Naïve Bayes In this section we will try to classify newsgroup messages using ...
- sklearn学习笔记1
Image recognition with Support Vector Machines #our dataset is provided within scikit-learn #let's s ...
- Subversion ----> svnserve.conf / authz / passwd / hooks-env.tmpl <<翻译笔记>>
svnserve.conf 假如你使用这个文件去允许访问这个仓库,那么这个文件控制着svnserve后台进程的配置.(但是如果你只是允许通过http和/或者 file:URLs,则这个文件就不起作用了 ...
- sklearn学习笔记之简单线性回归
简单线性回归 线性回归是数据挖掘中的基础算法之一,从某种意义上来说,在学习函数的时候已经开始接触线性回归了,只不过那时候并没有涉及到误差项.线性回归的思想其实就是解一组方程,得到回归函数,不过在出现误 ...
- sklearn学习笔记
用Bagging优化模型的过程:1.对于要使用的弱模型(比如线性分类器.岭回归),通过交叉验证的方式找到弱模型本身的最好超参数:2.然后用这个带着最好超参数的弱模型去构建强模型:3.对强模型也是通过交 ...
- sklearn学习笔记(一)——数据预处理 sklearn.preprocessing
https://blog.csdn.net/zhangyang10d/article/details/53418227 数据预处理 sklearn.preprocessing 标准化 (Standar ...
- sklearn学习笔记之岭回归
岭回归 岭回归是一种专用于共线性数据分析的有偏估计回归方法,实质上是一种改良的最小二乘估计法,通过放弃最小二乘法的无偏性,以损失部分信息.降低精度为代价获得回归系数更为符合实际.更可靠的回归方法,对病 ...
随机推荐
- SpringBoot系列教程web篇之如何自定义参数解析器
title: 190831-SpringBoot系列教程web篇之如何自定义参数解析器 banner: /spring-blog/imgs/190831/logo.jpg tags: 请求参数 cat ...
- springboot统一返回json数据格式并配置系统异常拦截
本文链接:https://blog.csdn.net/syystx/article/details/82870217通常进行前后端分离开发时我们需要定义统一的json数据交互格式并对系统未处理异常进行 ...
- c++之vector容器入门
对于c++的vector容器的函数应用: #include<string> #include<iostream> #include<vector> using na ...
- TCP/IP学习笔记17--TCP-- 窗口控制 重发控制 流控制
事业无穷年 -- 韩愈 利用窗口控制提高速度: TCP传输数据是,以一个段为单位(每次发送一个数据包),每发一个段需要一次确认应答,这样就难免存在这样的缺点:包的往返时间越长,通信性能就越低. 为解决 ...
- Apache Kafka教程
1.卡夫卡教程 今天,我们正在使用Apache Kafka Tutorial开始我们的新旅程.在这个Kafka教程中,我们将看到什么是Kafka,Apache Kafka历史以及Kafka的原因.此外 ...
- ubuntu sh脚本激活conda 虚拟环境
第一步:初始化coda 命令:sudo gedit ~/.bashrc 第二部:复制其中这样一段代码 # >>> conda initialize >>> # !! ...
- Java开发笔记(一百一十五)使用Socket开展文件传输
前面介绍了怎样通过Socket在客户端与服务端之间传输文本,当然Socket也支持在客户端与服务端之间传输文件,因为文件本身就是通过I/O流实现读写操作的,所以在套接字的输入输出流中传输文件真是再合适 ...
- Linux08 文件系统
对于磁盘等各类存储设备中所有的数据都以0和1的概念,但对于用户来说,0和1是没有任何意义的,这时候就需要一种类似于“翻译”的机制存在于用户和磁盘之间,Linux中采用的是文件系统+虚拟文件系统(Vir ...
- JavaScript进行WebSocket字节流通讯示例
websocket进行通讯时,可以选择采用字符串或者字节流的传输模式.但在发送与接收时,需要考虑数据的分包,即分成一个个请求与响应消息.无论是采用哪种传输模式,都不免要遇到这个问题. 采用字符串传输时 ...
- 状态机的Verilog写法
“硬件设计很讲究并行设计思想,虽然用Verilog描述的电路大都是并行实现的,但是对于实际的工程应用,往往需要让硬件来实现一些具有一定顺序的工作,这就要用到状态机思想.什么是状态机呢?简单的说,就是通 ...