KNN算法的简单应用将一维数据集分类——打开就可以跑

简介: KNN算法的简单应用将一维数据集分类——打开就可以跑

一、算法原理

KNN算法属于监视类算法,即需要人类自己进行将数据分类,然后根据已知的数据类型来预测未知的数据类型

KNN算法

第一步:先在数据库里面引入数据

第二步:先预先设定不同的类别,我设为 0 类于1类

第三步:再在数据库中引入数据与已预先设定的个类别进行欧式计算

第四步:对计算得到的数据进行排序,然后取计算得到的最小的n个数据

#第五步:对这n个数据统计,计算出各个类别的频数并排序,最后打印出类别频数最多的类别

二、源代码

# 基本数据
x=[0,1,2,3,4,5,6,7,8]    # 样本距离
y=[0,0,0,0,1,1,1,1,1]     # 类别
x0=3.1                 # 根据到各个样本距离来判断类型
# 算出x0到其他所有值的距离,并将0,1表示的类别与之对应
data=[]
for i in range(len(x)):
    dis=(x[i]-x0)**2
    data.append((y[i],dis))        
 # 元组有两个数据并入列表中 ,第一个数据为类型,第二个数据为距离
 #根据第二个值来排序
data_one=sorted(data,  key=lambda x: x[1])  # 按元组第二个数据进行排序
 #只取距离最近的前三个来比较,选最优的类别
k = 5  # 超参数
data_two=data_one[:k]
c={}
for i in data_two:                 # data_two 为列表,该列表包括元组,一个元组里面包含了两个数据
    if i[0] in c.keys():    # i[0] 为元组的第零个元素,即类别
        c[i[0]]=c[i[0]]+1   # c[i[0]]为字典对应的值,即类别出现的频次
    else:
        c[i[0]]=1
 #再根据上一步的结果,再进行排序(不排序则是按出现什么情况,进行将什么情况并入字典中,是无序排列的)
type_max=sorted(c.items(), key=lambda x:x[1])            # #返回列表,里面包含元组
print("如果 0,1,2,3 的类别是 0;\n4,5,6,7,8的类别是 1")
print("则x0的类别是:",type_max[-1][-2])

三、实验结果及总结

由图片可知,分类符合我们的预期。

相关文章
|
1天前
|
机器学习/深度学习 人工智能 算法
【机器学习】K-means和KNN算法有什么区别?
【5月更文挑战第11天】【机器学习】K-means和KNN算法有什么区别?
|
1天前
|
机器学习/深度学习 算法
应用规则学习算法识别有毒的蘑菇
应用规则学习算法识别有毒的蘑菇
|
1天前
|
机器学习/深度学习 存储 算法
用kNN算法诊断乳腺癌--基于R语言
用kNN算法诊断乳腺癌--基于R语言
|
6天前
|
存储 机器学习/深度学习 算法
R语言贝叶斯Metropolis-Hastings采样 MCMC算法理解和应用可视化案例
R语言贝叶斯Metropolis-Hastings采样 MCMC算法理解和应用可视化案例
|
6天前
|
数据采集 机器学习/深度学习 算法
数据分享|WEKA关联规则挖掘Apriori算法在学生就业数据中的应用
数据分享|WEKA关联规则挖掘Apriori算法在学生就业数据中的应用
|
10天前
|
机器学习/深度学习 自然语言处理 算法
机器学习算法原理与应用:深入探索与实战
【5月更文挑战第2天】本文深入探讨机器学习算法原理,包括监督学习(如线性回归、SVM、神经网络)、非监督学习(聚类、PCA)和强化学习。通过案例展示了机器学习在图像识别(CNN)、自然语言处理(RNN/LSTM)和推荐系统(协同过滤)的应用。随着技术发展,机器学习正广泛影响各领域,但也带来隐私和算法偏见问题,需关注解决。
|
11天前
|
机器学习/深度学习 算法 C语言
【C言专栏】递归算法在 C 语言中的应用
【4月更文挑战第30天】本文介绍了递归算法在C语言中的应用,包括基本概念(通过调用自身解决子问题)、特点(调用自身、终止条件、栈空间)和实现步骤(定义递归函数、分解问题、设置终止条件、组合解)。文中通过阶乘计算和斐波那契数列两个案例展示了递归的使用,强调了递归可能导致的栈溢出问题及优化需求。学习递归有助于理解和应用“分而治之”策略。
|
12天前
|
机器学习/深度学习 数据可视化 算法
【Python机器学习专栏】t-SNE算法在数据可视化中的应用
【4月更文挑战第30天】t-SNE算法是用于高维数据可视化的非线性降维技术,通过最小化Kullback-Leibler散度在低维空间保持数据点间关系。其特点包括:高维到二维/三维映射、保留局部结构、无需预定义簇数量,但计算成本高。Python中可使用`scikit-learn`的`TSNE`类实现,结合`matplotlib`进行可视化。尽管计算昂贵,t-SNE在揭示复杂数据集结构上极具价值。
|
12天前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习专栏】层次聚类算法的原理与应用
【4月更文挑战第30天】层次聚类是数据挖掘中的聚类技术,无需预设簇数量,能生成数据的层次结构。分为凝聚(自下而上)和分裂(自上而下)两类,常用凝聚层次聚类有最短/最长距离、群集平均和Ward方法。优点是自动确定簇数、提供层次结构,适合小到中型数据集;缺点是计算成本高、过程不可逆且对异常值敏感。在Python中可使用`scipy.cluster.hierarchy`进行实现。尽管有局限,层次聚类仍是各领域强大的分析工具。
|
12天前
|
机器学习/深度学习 算法 前端开发
【Python机器学习专栏】集成学习算法的原理与应用
【4月更文挑战第30天】集成学习通过组合多个基学习器提升预测准确性,广泛应用于分类、回归等问题。主要步骤包括生成基学习器、训练和结合预测结果。算法类型有Bagging(如随机森林)、Boosting(如AdaBoost)和Stacking。Python中可使用scikit-learn实现,如示例代码展示的随机森林分类。集成学习能降低模型方差,缓解过拟合,提高预测性能。