栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

k-近邻算法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

k-近邻算法

KNN

knn算法原理与步骤knn算法实现knn函数封装总结

knn算法原理与步骤

KNN算法工作原理:给定一个已知标签类别的训练数据集,输入没有标签的新数据之后,在训练集中找到与新数据最邻近的k个实例,如果k个实例的多数属于某个类别,那么新数据就属于这个类别。
即由那些离X最近的k个点来投票决定X 归为哪一类
算法步骤:
(1)计算已知类别的数据集中的点与当前点的距离;
(2)按照距离递增次序排序;
(3)选取与当前点距离最小的k个点;
(4)确定前k个点所在类别的出现频率;
(5)返回前k个点出现频率最高的类别作为当前点的预测类别;

knn算法实现
import pandas as pd

# 1.构建数据集
rowdata = {'电影名称': ['无问西东', '后来的我们', '前任3', '红海行动', '唐人街探案', '战狼2'],
           '打斗镜头': [1, 5, 12, 108, 112, 115],
           '接吻镜头': [101, 89, 97, 5, 8, 9],
           '电影类型': ['爱情片', '爱情片', '爱情片', '动作片', '动作片', '动作片']}
movie_data = pd.Dataframe(rowdata)
# 将字典转换为Dataframe数据结构;Dataframe是Python中Pandas库中的一种数据结构,它类似excel,是一种二维表。

# 2.计算距离
new_data = [24, 67]
dist = list((((movie_data.iloc[:6, 1:3] - new_data) ** 2).sum(1)) ** 0.5)
# loc函数:通过行索引 "Index" 中的具体值来取行数据(如取"Index"为"A"的行)
# iloc函数:通过行号来取行数据

# 3.将距离升序排列,然后选取距离最小的k个点
dist_l = pd.Dataframe({'dist': dist, 'labels': (movie_data.iloc[:6, 3])})
k = 4
dr = dist_l.sort_values(by='dist')[:k]
# Dataframe.sort_values(by=‘##’,axis=0,ascending=True, inplace=False, na_position=‘last’)
# by 用于 指定列名(axis=0或’index’)或索引值(axis=1或’columns’)

# 4.确定前k个点所在类别的出现频率
re = dr.loc[:, 'labels'].value_counts()
#value_counts()函数可以对每个值进行计数并且排序

# 5.选择频率最高的类别作为当前点的预测类型
result = []
result.append(re.index[0])
knn函数封装
import pandas as pd

'''
函数功能:KNN分类器
参数说明:
    inX:需要预测分类的数据集
    dataset:已知分类标签的数据集(训练集)
    k:k-近邻算法参数,选择距离最小的k个点
返回:
    result:分类结果
'''


#
def classify0(inX, dataset, k):
    result = []
    dist = list((((movie_data.iloc[:6, 1:3] - new_data) ** 2).sum(1)) ** 0.5)
    dist_l = pd.Dataframe({'dist': dist, 'labels': (movie_data.iloc[:6, 3])})
    dr = dist_l.sort_values(by='dist')[:k]
    re = dr.loc[:, 'labels'].value_counts()
    result.append(re.index[0])
    return result


总结

第一次接触机器学习相关的算法,和之前学习的算法相差很多,习惯了C++的stl算法模板,在Python中书写一个算法的感觉相差甚远。
需要熟悉Python库中各个函数的使用功能与输入输出参数;
需要熟练掌握pycharm与jupyter lab的代码书写工具;
记录一下自己学会的第一个机器学习算法

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/700301.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号