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-近邻算法的更多相关文章

  1. 机器学习03:K近邻算法

    本文来自同步博客. P.S. 不知道怎么显示数学公式以及排版文章.所以如果觉得文章下面格式乱的话请自行跳转到上述链接.后续我将不再对数学公式进行截图,毕竟行内公式截图的话排版会很乱.看原博客地址会有更 ...

  2. 02机器学习实战之K近邻算法

    第2章 k-近邻算法 KNN 概述 k-近邻(kNN, k-NearestNeighbor)算法是一种基本分类与回归方法,我们这里只讨论分类问题中的 k-近邻算法. 一句话总结:近朱者赤近墨者黑! k ...

  3. 机器学习随笔01 - k近邻算法

    算法名称: k近邻算法 (kNN: k-Nearest Neighbor) 问题提出: 根据已有对象的归类数据,给新对象(事物)归类. 核心思想: 将对象分解为特征,因为对象的特征决定了事对象的分类. ...

  4. 机器学习 Python实践-K近邻算法

    机器学习K近邻算法的实现主要是参考<机器学习实战>这本书. 一.K近邻(KNN)算法 K最近邻(k-Nearest Neighbour,KNN)分类算法,理解的思路是:如果一个样本在特征空 ...

  5. 《机器学习实战》-k近邻算法

    目录 K-近邻算法 k-近邻算法概述 解析和导入数据 使用 Python 导入数据 实施 kNN 分类算法 测试分类器 使用 k-近邻算法改进约会网站的配对效果 收集数据 准备数据:使用 Python ...

  6. 机器学习:1.K近邻算法

    1.简单案例:预测男女,根据身高,体重,鞋码 import numpy as np import matplotlib import sklearn from skleran.neighbors im ...

  7. 《机器学习实战》——K近邻算法

    三要素:距离度量.k值选择.分类决策 原理: (1) 输入点A,输入已知分类的数据集data (2) 求A与数据集中每个点的距离,归一化,并排序,选择距离最近的前K个点 (3) K个点进行投票,票数最 ...

  8. GridSearchCV网格搜索得到最佳超参数, 在K近邻算法中的应用

    最近在学习机器学习中的K近邻算法, KNeighborsClassifier 看似简单实则里面有很多的参数配置, 这些参数直接影响到预测的准确率. 很自然的问题就是如何找到最优参数配置? 这就需要用到 ...

  9. 机器学习实战笔记--k近邻算法

    #encoding:utf-8 from numpy import * import operator import matplotlib import matplotlib.pyplot as pl ...

随机推荐

  1. thymeleaf 获取项目路径

    <p th:text=${salecode}></p> <a th:href="${#httpServletRequest.getScheme()+'://'+ ...

  2. 4-memset函数总结

    头文件:cstring 或 memory 一般用处: memset(arr, 0, sizeof(aar));    //初始化为0 memset(arr, -1, sizeof(aar));   / ...

  3. 状态模式c#(状态流转例子吃饭)

    using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace 状态模式{   ...

  4. UVa 11136 Hoax or what (STL)

    题意:有 n 天,每天有m个数,开始的前一天没有数据,然后每天从这个里面拿出一个最大的和最小的,求 n 天的最大的和最小的差值相加. 析:一看就知道用set啊,多简单的STL,不过要注意,开long ...

  5. swoole实现websocket推送

    环境配置:      swoole 1.9.3.centos6.5(虚拟机).PHP7.01   思路:      ①通过server中的collections取出fd      ②写一个admin. ...

  6. (并查集 带关系)Find them, Catch them -- poj -- 1703

    链接: http://poj.org/problem?id=1703 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 3676 ...

  7. struts中request传递中文乱码问题

    系统本来是好好地,这两天升级后,各种问题不断,总而言之,一句话,心惊胆战. 今天,搜索任何中文,都是有乱码,在action中转码就ok了.公司系统那么多action,都转码,要累死吧.配置的过滤器都不 ...

  8. CORS 跨域请求

    一.简介 CORS需要浏览器和服务器同时支持.目前,所有浏览器都支持该功能,IE浏览器不能低于IE10. 整个CORS通信过程,都是浏览器自动完成,不需要用户参与.对于开发者来说,CORS通信与同源的 ...

  9. [Git01]Pro Git 第三章 分支 读书笔记

    [git]分支   Git 的分支模型称为“必杀技特性”,而正是因为它,将 Git 从版本控制系统家族里区分出来. Git 有何特别之处呢?Git 的分支可谓是难以置信的轻量级,它的新建操作几乎可以在 ...

  10. TSQL--SQL SERVER 常用系统变量

    ----------全局变量select @@version as '版本';---------------------------返回当前数据库的版本信息 select APP_NAME ( ) a ...