机器学习笔记(五) K-近邻算法
K-近邻算法
(一)定义:如果一个样本在特征空间中的k个最相似的样本中的大多数属于某一个类别,则该样本也属于这个类别。
(二)相似的样本,特征之间的值应该是相近的,使用k-近邻算法需要做标准化处理。否则预测出来的效果很差。
(三)算法的优缺点:
优点:比较简单,易于实现,无需估计参数,无需训练。
缺点:计算量大,内存开销大,必须指定k值,k值若选取不当则分类精度不能保证。
(四)适用场景:适用于小数据场景,几千~几万个样本。
实例:
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import StandardScaler
import pandas as pd
def knnCls():
"""
k-邻近算法
:return:
"""
# 读取数据
data=pd.read_csv('训练集数据文件的路径') # 处理数据
# 1.根据查询的条件,选择特定范围的数据样本
data=data.query("x>1.0 & x<1.25 & y>2.5 & y<2.75") # 处理时间数据 把时间戳变成有年月日时分秒的格式
time_value=pd.to_datetime(data['time'],unit='s') # 把日期格式转化为字典
time_value=pd.DatetimeIndex(time_value) # 构造一些特征
data['day']=time_value.day # data里面的特征多一个
data['hour'] = time_value.hour
data['weekday'] = time_value.weekday # 把时间戳特征删除
data = data.drop(['time'],axis=1) # 删除time这一列 # 取出数据当中的特征值和目标值
y=data['place_id']
x=data.drop(['place_id'],axis=1) # 进行数据的分割,划分训练集和测试集数据
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.25) # 特征工程(标准化)
std=StandardScaler()
# 对测试集和训练集的特征值进行标准化
x_train=std.fit_transform(x_train)
x_test=std.fit_transform(x_test) # 进行算法流程
knn=KNeighborsClassifier(n_neighbors=5)
# fit ,predict,score
knn.fit(x_train,y_train) # 得出预测结果
y_predict=knn.predict(x_test) # 得出准确率
print(knn.score(x_test, y_test)) # 通过第一个参数x_test可以算出预测的目标值
return None if __name__=='__main__':
knnCls()
机器学习笔记(五) K-近邻算法的更多相关文章
- 机器学习03:K近邻算法
本文来自同步博客. P.S. 不知道怎么显示数学公式以及排版文章.所以如果觉得文章下面格式乱的话请自行跳转到上述链接.后续我将不再对数学公式进行截图,毕竟行内公式截图的话排版会很乱.看原博客地址会有更 ...
- 02机器学习实战之K近邻算法
第2章 k-近邻算法 KNN 概述 k-近邻(kNN, k-NearestNeighbor)算法是一种基本分类与回归方法,我们这里只讨论分类问题中的 k-近邻算法. 一句话总结:近朱者赤近墨者黑! k ...
- 机器学习随笔01 - k近邻算法
算法名称: k近邻算法 (kNN: k-Nearest Neighbor) 问题提出: 根据已有对象的归类数据,给新对象(事物)归类. 核心思想: 将对象分解为特征,因为对象的特征决定了事对象的分类. ...
- 机器学习 Python实践-K近邻算法
机器学习K近邻算法的实现主要是参考<机器学习实战>这本书. 一.K近邻(KNN)算法 K最近邻(k-Nearest Neighbour,KNN)分类算法,理解的思路是:如果一个样本在特征空 ...
- 《机器学习实战》-k近邻算法
目录 K-近邻算法 k-近邻算法概述 解析和导入数据 使用 Python 导入数据 实施 kNN 分类算法 测试分类器 使用 k-近邻算法改进约会网站的配对效果 收集数据 准备数据:使用 Python ...
- 机器学习:1.K近邻算法
1.简单案例:预测男女,根据身高,体重,鞋码 import numpy as np import matplotlib import sklearn from skleran.neighbors im ...
- 《机器学习实战》——K近邻算法
三要素:距离度量.k值选择.分类决策 原理: (1) 输入点A,输入已知分类的数据集data (2) 求A与数据集中每个点的距离,归一化,并排序,选择距离最近的前K个点 (3) K个点进行投票,票数最 ...
- GridSearchCV网格搜索得到最佳超参数, 在K近邻算法中的应用
最近在学习机器学习中的K近邻算法, KNeighborsClassifier 看似简单实则里面有很多的参数配置, 这些参数直接影响到预测的准确率. 很自然的问题就是如何找到最优参数配置? 这就需要用到 ...
- 机器学习实战笔记--k近邻算法
#encoding:utf-8 from numpy import * import operator import matplotlib import matplotlib.pyplot as pl ...
随机推荐
- unity3d开发实战《啪啪三国》技术详解!
去年11月,上海火溶网络CEO王伟峰以其第一款3d手游产品<啪啪三国>为例,着重讲解了unity3D手机网游开发的经验,其中涉及了团队组成.人员要求.常见的unity3d开发遇到的坑及解 ...
- Unity Editor(一)OnInspectorGUI的重写与面板的创建
http://blog.csdn.net/husheng0/article/details/52568027
- 关于Android控件EditText的属性InputType的一些经验,java组合多个参数
关于Android控件EditText的属性InputType的一些经验 2013-11-14 15:08:02| 分类: 默认分类|举报|字号 订阅 1.InputType属性在代码中 ...
- 如何在Github上删除项目及某个文件
在Github上删除项目 在GitHub仓库中找到已经建立好的某个仓库,本篇文章以我的myBookCodes仓库为例,在建立的myBookCodes仓库中首先找到settings选项,如图所示: 将页 ...
- 前端福利之jQuery文字轮播特效(转)
闲谈:离开学校那座象牙塔已经也有大半年的事件了,生活中不再充满了茫然只有忙碌.连续加班加点大半个月,做的活动项目终于算是告一段落了,而今天也将是考验其真正价值的时候,现在将这次开发中遇到的问题做一下总 ...
- java并发编程实战:第十六章----Java内存模型
一.什么是内存模型,为什么要使用它 如果缺少同步,那么将会有许多因素使得线程无法立即甚至永远看到一个线程的操作结果 编译器把变量保存在本地寄存器而不是内存中 编译器中生成的指令顺序,可以与源代码中的顺 ...
- Anti-Anti dylib(反 反-dylib钩子(Anti-tweak))
版主提供了 anti dylib 的文章,http://bbs.chinapyg.com/thread-76158-1-1.html原理很简单,看下面源代码即可~ 在Build Settings中找 ...
- Delphi 自带的字符串分割函数split
下面介绍Delphi自带的字符串分割函数,根据你的需要来使用. 1.ExtractStrings function ExtractStrings(Separators, WhiteSpace: TSy ...
- vue+elementui后台管理快捷代码片段
Form <el-form labelPosition="right" labelWidth="10%" size="small" : ...
- Java泛型学习笔记
泛型是Java5引进的新特征,是类和接口的一种拓展机制,主要实现参数化类型机制.Java的泛型,跟C++的类模板有很多相似的地方,或者说,就是C++类模板的升级版. 泛型类 在开发过程中,我们或许要设 ...