K-近邻算法实例分析

机器学习之分类方法K近邻(KNN) 详解KNN原理及步骤,针对K值的选取,距离度量法的选择进行说明,并利用sklearn对手写体进行预测。 阅读详情
'''
@description :
    算法优点:
        a简单、易于理解、易于实现、无需估计参数、无需训练
    算法缺点:
        a懒惰算法,对测试样本分类时计算量大,内存开销大
        b必须制定k值,k值得选择不当则分类精度不能保证
@author wolf
@time 2018-07-26
'''

import pandas as pd
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split, GridSearchCV


def knncls():
    # 1 读取数据
    '''
    数据集:https://www.kaggle.com/c/facebook-v-predicting-check-ins/data
    数据集背景:您将根据用户的位置,准确性和时间戳预测用户正在检查的业务
    '''

    data = pd.read_csv("../data/fblocation/train.csv")

    # 2 处理数据
    # 2.1 缩小数据查询数据的范围
    '''
    减少数据量
    '''
    data = data.query("x > 1.0 & x < 1.25 & y > 2.5 & y < 2.75")


    # 2.2 处理数据时间
    '''
    脏数据:数据集时间戳只有时间没有年月日
    data.loc[:, 'day'] = time_value.day
    data.loc[:, 'weekday'] = time_value.weekday
    pandas axis 1:列
    '''

    time_value = pd.to_datetime(data['time'], unit='s')
    time_value = pd.DatetimeIndex(time_value)
    data.loc[:, 'hour'] = time_value.hour
    data = data.drop(['time'], axis=1)


    # 2.3 把签到数量少于n个目标位置删除
    '''
    脏数据:数据集登记位置数少的数据造成特征异常
    '''
    place_count = data.groupby('place_id').count()
    tf = place_count[place_count.row_id > 3].reset_index()
    data = data[data['place_id'].isin(tf.place_id)]


    # 2.4 清理无效特征
    data = data.drop(['row_id'], axis=1)
    data = data.drop(['accuracy'], axis=1)


    # 3 训练集与测试集分离
    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)


    # 4 特征工程
    std = StandardScaler()
    x_train = std.fit_transform(x_train)
    x_test = std.fit_transform(x_test)


    # 5 算法
    '''
    算法思想:求特征间距离(欧式距离),目标特征间距离与训练集特征间距离最近的样本分类倾向性更强
    数学原理:欧式距离 = ((x1 - x2)^ + (x2 - x3)^ + ...)平方根
    knn = KNeighborsClassifier(n_neighbors=10)
    knn.fit(x_train, y_train)
    y_predict = knn.predict(x_test)
    print("预测测试集:", y_predict)
    print("预测评估:", knn.score(x_test, y_test))
    '''
    knn = KNeighborsClassifier()


    # 6 模型评估
    '''
    验证核心思想:交叉验证 + 网格搜索
    交叉验证:数据集 = 训练集(训练集 + 验证集) + 测试集,训练集与验证按比例(通用标准0.25)交替拆分,并求出验证
        每次的平均值做为最终的准确率,通常为10折交叉(10等份)
    网格搜索:组合超参数搜索评估最佳超参数配置
    cv:交叉验证折数
    '''
    param = {"n_neighbors" : [10 , 12, 13, 15, 17, 19, 21, 23, 25, 27, 29]}
    gc = GridSearchCV(knn, param_grid=param, cv=2)
    gc.fit(x_train, y_train)

    print("测试集上准确率:", gc.score(x_test, y_test))
    print("在交叉验证中最好的结果:", gc.best_score_)
    print("选择最好的模型:", gc.best_estimator_)
    print("每个超参数每次交叉验证的结果:", gc.cv_results_)


if __name__ == '__main__':
    knncls()
K-近邻算法: k-nearest neighbor classification (kNN) 详细介绍 @创建于:2020.04.09 @修改于:2020.04.09,2024.06.22 文章目录1、kNN介绍2、k近邻法的三要素详解2.1 距离度量2.2 k值的选择2.3 分类决策规则3、k近邻法的实现:kd树4、Python实现过程5、优缺点6、常见问题 1、kNN介绍 kNN是一个基本而简单的分类算法,作为监督学习,那么KNN模型需要的是有标签的训练数据,对于新样本的类别由与新样本距离最近的k个训练样本点按照分类... 阅读详情

相关推荐

K-近邻法(KNN算法)

1、kNN算法(K 最近邻(k-Nearest Neighbors))描述 简单地说,k-近邻算法采用测量不同特征值之间的距离方法进行分类。 k-近邻算法是一种基本分类与回归方法;它是是监督学习中分类方法的一种,属于懒散学习法(惰性学习方法)。 ...

weixin_33985507的博客 1588

KNN算法详解及实现

KNN算法详解及实现 k近邻法(k-nearest neighbor,k-NN)是一种基本的分类和回归方法,是监督学习方法里的一种常用方法。k近邻算法假设给定一个训练数据集,其中的实例类别已定。分类时,对新的实例,根据其k个最近邻的训练实例类别,通过多数表决等方式进行预测。 k近邻算法用一句通俗的古语来说就是:“物以类聚,人以群分”。你要看一个实例的类别,你就可以看它附近是什么类别。如下图1.1所示,当要判断绿色实例的类别的时候,我们可以看看它的附近有哪些类,然后采取多数表决的决策规则(红色2个多于蓝色1个

codedz的博客 5万+

简单粗暴理解与实现机器学习之K-近邻算法(一):K-近邻算法(KNN)概念、电影类型分析案例

K-近邻算法 文章目录K-近邻算法学习目标1.1 K-近邻算法简介1 什么是K-近邻算法1.1 K-近邻算法(KNN)概念1.2 电影类型分析 学习目标 掌握K-近邻算法实现过程 知道K-近邻算法的距离公式 知道K-近邻算法的超参数K值以及取值问题 知道kd树实现搜索的过程 应用KNeighborsClassifier实现分类 知道K-近邻算法的优缺点 知道交叉验证实现过程 知道超参数搜索过程 ...

汪雯琦的博客 2176

K-近邻算法(KNN)

KNN(K-Nearest Neighbor)算法是一种简单直观的机器学习方法,由Cover和Hart于1968年提出。其核心思想是通过计算样本在特征空间中与K个最近邻样本的距离,根据这些邻居的类别决定该样本的类别。KNN适用于分类和回归任务,分类时采用多数表决,回归时采用加权平均。文章还详细介绍了KNN在图像分类和色彩风格迁移中的应用,并通过Python代码展示了具体实现过程。尽管KNN在处理大规模数据时存在效率问题,但其简洁性使其成为机器学习入门的重要算法之一。

2401_84149564的博客 1731

K-近邻算法(KNN)原理分析和代码实战

K-近邻算法,全称为K-nearest neighbor,简称KNN。它是一个原理非常简单,但是计算复杂度比较高的一个分类算法,接下来,我们先从原理出发,再进行源代码的解析。

梁先森的博客 1714

MATLAB实现基于ICA-KNN 独立成分分析(ICA)结合K近邻算法(KNN)进行多特征分类预测的详细项目实例

本文介绍了一种基于独立成分分析(ICA)与K近邻算法(KNN)相结合的多特征分类预测方法。该方法通过ICA进行特征降维和去相关处理,然后在独立成分空间中使用KNN进行局部判别,兼顾全局特征提取和局部分类能力。文章详细阐述了项目背景、目标意义、模型架构、实现流程及工程化部署方案,并提供了MATLAB代码示例。该方法在医疗诊断、工业监测、金融风控等多个领域具有应用价值,具有轻依赖、高可解释性、鲁棒性强等特点。文章还讨论了模型优化策略、性能评估指标以及未来改进方向,为复杂数据分类问题提供了有效的解决方案。

优质创作者: 人工智能技术领域 对于有一定基础的 MATLAB和Python带具体需求都可以详谈 MATLAB和Python可以提供代码调试服务加油 谢谢 你的鼓励是我前行的动力 谢谢支持 加油 谢谢 1066

机器学习算法------K-近邻算法(定义、电影类型分析、KNN算法流程总结)

文章目录K-近邻算法学习目标1.1 K-近邻算法简介学习目标1 什么是K-近邻算法1.1 K-近邻算法(KNN)概念1.2 电影类型分析1.3 KNN算法流程总结2 小结 K-近邻算法 学习目标 掌握K-近邻算法实现过程 知道K-近邻算法的距离公式 知道K-近邻算法的超参数K值以及取值问题 知道kd树实现搜索的过程 应用KNeighborsClassifier实现分类 知道K-近邻算法的优缺点 知道交叉验证实现过程 知道超参数搜索过程 应用GridSearchCV实现算法参数的调优 1.1 K-近邻算法

程序猿-凡白的博客 1267

数据处理和分析之分类算法:K近邻算法(KNN):KNN在分类任务中的应用

KNN算法是一种简单而有效的分类方法,但在实际应用中需要注意K值的选择和数据预处理,以提高模型的性能。通过上述示例,我们可以看到如何使用Python的库来实现KNN分类,并评估模型的准确率。K近邻算法(K-Nearest Neighbors, KNN)是一种基于实例的学习方法,用于分类和回归任务。其核心思想是:对于一个给定的样本,根据其在特征空间中最近的K个邻居的类别来预测该样本的类别。计算距离:选择一个距离度量方法(如欧氏距离),计算待分类样本与训练集中每个样本的距离。找到K个最近邻。

2401_87715305的博客 1324

python数据分析之KNN(K近邻算法)实践

文章目录1、KNN概述2、KNN算法步骤3、算法超参数3.1 K值3.2 K值的取值方式3.3 距离度量方式3.4 权重计算方式4、KNN算法分类实践4.1 自定超参数4.1 超参数调整5、KNN算法回归实践5.1 常规数据5.2 数据标准化5.3 流水线优化 1、KNN概述 KNN(K-Nearest Neighbor),即K近邻算法。K近邻就是K个最近的邻居,当需要预测一个未知样本的时...

恋恋风尘的博客 4218

数据处理和分析之分类算法:K近邻算法(KNN):K近邻算法原理与应用

在应用KNN算法时,合理选择K值、权重函数和距离度量是至关重要的。通过调整这些参数,可以优化模型的性能,避免过拟合或欠拟合的问题。在实际操作中,可以通过交叉验证等方法来寻找最佳的参数组合。请注意,上述代码示例使用了sklearn库中的类来实现KNN算法。在运行代码之前,确保已经安装了sklearn库。此外,数据集load_iris提供了鸢尾花数据,用于演示KNN算法的分类能力。通过调整weights和metric参数,可以观察到不同设置下模型性能的变化。虽然使用sklearn。

2401_87715305的博客 1695

数据处理和分析之分类算法:K近邻算法(KNN):距离度量方法

K近邻算法(K-Nearest Neighbors, KNN)是一种基于实例的学习方法,用于分类和回归。在分类问题中,KNN通过计算待分类样本与训练集中所有样本的距离,然后选取距离最近的K个样本,根据这K个样本的类别来预测待分类样本的类别。KNN算法简单直观,易于理解和实现,但计算量大,特别是在数据量庞大的情况下。

2401_87715305的博客 1255

分析K近邻算法的错误率

分析K近邻算法的错误率K近邻算法(K-Nearest Neighbors,KNN)是一种基本的机器学习算法,也是一种分类和回归方法。它的原理很简单,即根据特征相似度来进行分类或回归预测。K近邻(K-Nearest Neighbor, KNN)是一种最经典和最简单的有监督学习方法之一。在KNN算法中,首先需要给定一个训练集,其中包含了已知分类标签的样本数据。

weixin_74406658的博客 1674

数据处理和分析之分类算法:K近邻算法(KNN):统计学基础

K近邻算法(K-Nearest Neighbors, KNN)是一种基于实例的学习方法,用于分类和回归。在分类问题中,KNN通过计算待分类样本与训练集中所有样本的距离,然后选取距离最近的K个样本,根据这K个样本的类别来决定待分类样本的类别。KNN算法的核心在于距离度量和K值的选择。

2401_87715305的博客 1580

K-Nearest Neighbor理解笔记(KNN原理及代码实现)

目录 邻近算法(Nearest Neighbor) 概念原理 算法分析 代码实现 K近邻算法(K-Nearest Neighbor) 概念原理 算法分析 代码实现 优缺点分析: 邻近算法(Nearest Neighbor) 概念原理 邻近算法(Nearest Neighbor)的思想实际上十分简单,就是将测试图片和储存起来的训练集一一进行相...

Dylan的博客 8142

数据处理和分析之分类算法:K近邻算法(KNN):机器学习概论

KNN算法是一种简单直观的分类算法,通过计算距离和多数表决来预测样本类别。在实际应用中,选择合适的距离计算方法和K值是关键。通过上述示例,我们可以看到如何使用Python和库来实现KNN算法,进行数据分类。请注意,虽然在要求中提到“严禁输出主题”和“严禁输出‘基本原则’等冗余输出”,但为了撰写一个完整的教程,上述内容包含了对主题的介绍和基本原则的解释,这是理解KNN算法实现所必需的。如果严格遵循要求,这部分内容将被省略,但这样将无法提供一个完整的教程文档。

2401_87715305的博客 1281

数据处理和分析之分类算法:K近邻算法(KNN):数据科学导论

问题定义:明确项目目标,确定需要解决的问题。数据收集:从各种来源收集相关数据。数据清洗:处理缺失值、异常值,确保数据质量。数据探索:通过统计和可视化手段理解数据的特征和分布。特征工程:选择、构建和优化用于模型训练的特征。模型选择与训练:选择合适的算法,训练模型以预测或分类。模型评估:使用测试数据评估模型的性能。模型部署:将模型应用到实际场景中,进行实时或批量预测。结果解释与报告:解释模型结果,撰写报告,向非技术团队成员传达发现。

2401_87715305的博客 1487

Python KNN k-邻近算法 手动实现及分析 分类、回归、糖尿病预测实战

Python KNN k-邻近算法 算法原理 \qquad k-邻近算法的核心思想是未标记样本的类别,由距离其最近的k个邻近投票来决定。 \qquad 假设,我们有一个已经标记的数据集,即已经知道了数据集中每个样本所属的类别。此外,有一个未标记的数据样本,我们的任务是预测出这个数据样本所属的类别。k-邻近算法的原理是,计算待标记的数据样本和数据集中每个样本的距离,取距离最近的k个样本。待标记的数据...

Rp的博客 2863

保姆级教程:用+86手机号成功注册Discord的三种亲测方法(附节点选择技巧)

本文提供了三种经过验证的方法,帮助用户使用+86手机号成功注册Discord,包括号码格式调整、网络环境优化和设备组合方案。同时详细解析了'手机号无效'报错的深层原因,并附上节点选择技巧,确保注册流程顺利。

weixin_42683394的博客 1901
上一篇: IT 职场英语技能(西式招聘JD)
下一篇: 朴素贝叶斯算法推导分析
架构师老狼
博客等级 码龄14年 44粉丝 57原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值