机器学习(一)之KNN算法
knn算法原理
①.计算机将计算所有的点和该点的距离
②.选出最近的k个点
③.比较在选择的几个点中那个类的个数多就将该点分到那个类中
KNN算法的特点:
knn算法的优点:精度高,对异常值不敏感,无数据假设
knn算法的缺点:时间复杂度和空间复杂度都比较高
knn算法中遇到的问题及其解决办法
1、当样本不平衡时,比如一个类的样本容量很大,其他类的样本容量很小,输入一个样本的时候,K个临近值中大多数都是大样本容量的那个类,这时可能就会导致分类错误。改进方法是对K临近点进行加权,也就是距离近的点的权值大,距离远的点权值小。
2、计算量较大,每个待分类的样本都要计算它到全部点的距离,根据距离排序才能求得K个临近点,改进方法是:先对已知样本点进行剪辑,事先去除对分类作用不大的样本。
knn算法数据范围:数值型和标称型
注意:数据是二维的,第一维表示样本,第二维表示特征(如手写数字算法,)
标称型:标称型目标变量的结果只在有限目标集中取值,如真与假(标称型目标变量主要用于分类)
数值型:数值型目标变量则可以从无限的数值集合中取值,如0.100,42.001等 (数值型目标变量主要用于回归分析)
knn算法的应用
案例:
import numpy as np
import pandas as pd
# KNeighborsClassifer 用于分类问题的处理
from sklearn.neighbors import KNeighborsClassifier
# 导入数据:
movie = pd.read_excel("./data/movies.xlsx",sheet_name=1)
movie
#根据电影的武打镜头和接吻镜头的数量判断电影的类型
#knn算法是有监督学习,需要样本训练数据,和目标值进行对照
提取数据:
x = movie.iloc[:,1:3]
y = movie["分类情况"]
# 此时K值等于5,即5个邻居
knn=KNeighborsClassifier(n_neighbors=5)
# 训练算法:fit()以X为训练数据,y为目标值拟合模型
knn.fit(x,y)
#数据进行l训练,已经建立了一个分类标准
#添加2个样本数据
x_text = pd.DataFrame({"武打镜头":[120,10],"接吻镜头":[5,80]})
# 使用算法预测目标样本的分类情况
knn.predict(x_text)
预测结果:
array(['动作片', '爱情片'], dtype=object)
#从结果可以看出:第一个样本被划分到动作片中,第二个样本被划分到爱情片中
#对样本进行估计被划分到哪个类的概率
knn.predict_proba(x_text)
估计结果结果:array([[0.6, 0.4], [0.4, 0.6]])
注意:knn算法是根据距离远近进行分类的划分,K为最近的样本。
当训练数据样本不均衡是,对数据处理的办法
给knn加权重,即weight = ["uniform","distance","calllable"] 即:均衡、距离、自定义
如:
knn=KNeighborsClassifier(n_neighbors=5,weights="distance")
算法的保存和算法的加载
当我们对算法进行了训练之后,想要再次使用该算法进行预测时,就不需要再次进行算法的训练了,直接使用保存的算法,对需要进行分类的样本进行分类就行
#算法保存
#应用模块
from sklearn.externals import joblib
#存储样本的方式:
joblib.dump(knn,filename = "./digit_detector.m")
#filename后边自定义后缀为m的文件名
#算法的加载
from sklearn.externals import joblib
#加载之前保存的算法
knn = joblib.load("./digit_detector.m")
机器学习(一)之KNN算法的更多相关文章
- 机器学习之路--KNN算法
机器学习实战之kNN算法 机器学习实战这本书是基于python的,如果我们想要完成python开发,那么python的开发环境必不可少: (1)python3.52,64位,这是我用的python ...
- 算法代码[置顶] 机器学习实战之KNN算法详解
改章节笔者在深圳喝咖啡的时候突然想到的...之前就有想写几篇关于算法代码的文章,所以回家到以后就奋笔疾书的写出来发表了 前一段时间介绍了Kmeans聚类,而KNN这个算法刚好是聚类以后经常使用的匹配技 ...
- 机器学习实战 之 KNN算法
现在 机器学习 这么火,小编也忍不住想学习一把.注意,小编是零基础哦. 所以,第一步,推荐买一本机器学习的书,我选的是Peter harrigton 的<机器学习实战>.这本书是基于pyt ...
- 机器学习实战之kNN算法
机器学习实战这本书是基于python的,如果我们想要完成python开发,那么python的开发环境必不可少: (1)python3.52,64位,这是我用的python版本 (2)numpy 1.1 ...
- 【机器学习】机器学习入门01 - kNN算法
0. 写在前面 近日加入了一个机器学习的学习小组,每周按照学习计划学习一个机器学习的小专题.笔者恰好近来计划深入学习Python,刚刚熟悉了其基本的语法知识(主要是与C系语言的差别),决定以此作为对P ...
- 吴裕雄--天生自然python机器学习实战:K-NN算法约会网站好友喜好预测以及手写数字预测分类实验
实验设备与软件环境 硬件环境:内存ddr3 4G及以上的x86架构主机一部 系统环境:windows 软件环境:Anaconda2(64位),python3.5,jupyter 内核版本:window ...
- 机器学习-K近邻(KNN)算法详解
一.KNN算法描述 KNN(K Near Neighbor):找到k个最近的邻居,即每个样本都可以用它最接近的这k个邻居中所占数量最多的类别来代表.KNN算法属于有监督学习方式的分类算法,所谓K近 ...
- python机器学习一:KNN算法实现
所谓的KNN算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一.所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个 ...
- 《机器学习实战》kNN算法及约会网站代码详解
使用kNN算法进行分类的原理是:从训练集中选出离待分类点最近的kkk个点,在这kkk个点中所占比重最大的分类即为该点所在的分类.通常kkk不超过202020 kNN算法步骤: 计算数据集中的点与待分类 ...
- 机器学习笔记(5) KNN算法
这篇其实应该作为机器学习的第一篇笔记的,但是在刚开始学习的时候,我还没有用博客记录笔记的打算.所以也就想到哪写到哪了. 你在网上搜索机器学习系列文章的话,大部分都是以KNN(k nearest nei ...
随机推荐
- C#代码生成器附百度云盘源码地址
今晚闲着没事,写了个代码生成器,在这里只做个抛砖引玉,后面可以继续扩展功能,下方附百度云盘源码地址. 使用数据库:sqlserver 编译器:vs2015 废话不多说,上界面: 程序主界面: 数据库: ...
- jsf+ejb
jsf+ejb 示例 http://docs.jboss.org/jbossas/docs/Installation_And_Getting_Started_Guide/5/html/Sample_J ...
- [Andoird]Andoird之Log
一.Log Android中的日志工具类是 Log(android.util.Log),这个类中提供了如下几个方法来供我们打印日志. Log.v() 这个方法用于打印那些最为琐碎的,意义最小的日志信息 ...
- HDU - 3966-Aragorn' Story(树链剖分+线段树)
链接:https://vjudge.net/problem/HDU-3966 题意: Our protagonist is the handsome human prince Aragorn come ...
- Codeforces Round #432 (Div. 2, based on IndiaHacks Final Round 2017) D
Arpa has found a list containing n numbers. He calls a list bad if and only if it is not empty and g ...
- Web自动化测试—PO设计模式(一)
前言 很多的测试同学懂得使用selenium进行Web自动化测试, 但是不知道如何去写一个测试框架,或者说是一个容易维护的web自动化项目. 自己写一个最基本的web自动化测试框架需要会什么? 1. ...
- SSH 的端口转发
第一部分 概述 当你在咖啡馆享受免费 WiFi 的时候,有没有想到可能有人正在窃取你的密码及隐私信息?当你发现实验室的防火墙阻止了你的网络应用端口,是不是有苦难言?来看看 SSH 的端口转发功能能给我 ...
- 漫谈Code Review的错误实践
从刚开始工作时到现在,已经写了7年的代码,大部分代码都被人review过,自己也review了很多人的代码.在上一家公司的时候,我负责的一轮面试是专门进行Code Review的练习和经验谈. 通过在 ...
- 开园了,将以此记录个人web前端之路
记录.分享与学习 2015年5月中旬开始学习web前端到2015年6月底找到第一份相关工作,在学习与工作过程中通过网络获益良多,在此写下个人学习与工作过程中的总结与思考,记录个人成长,同时也希望能够帮 ...
- oracle v$database 视图
Select db.dbid "数据库标识",--数据库的标识,当数据库在所有文件的头部创建和存储时计算出来的标记编号 db.Name "数据库名称" ...