首页 > 编程语言 >K-近邻算法(KNN)

K-近邻算法(KNN)

时间:2024-10-25 16:34:19浏览次数:7  
标签:KNN iris 近邻 print 算法 train test data

"""
K-近邻算法用于分类和回归问题。比如,判断一款游戏是否受欢迎。
KNN算法的基本思想是:如果一个样本在特征空间中的k个最邻近的样本中的大多数属于某个类别,则该样本也属于这个类别。
KNN算法的实现方法有两种:
1. 基于欧氏距离的KNN算法
2. 基于余弦相似度的KNN算法

KNN算法的优点:
1. 简单易用,计算量小,易于理解和实现。
2. 无需训练过程,直接使用。
3. 适用于多分类和回归问题。
4. 对于异常值不敏感。
这段代码展示了如何使用KNeighborsClassifier类创建模型。KNN会根据最近的邻居来判断数据点的类别。
https://mp.weixin.qq.com/s/SL57KglCbNDoONSKFmXRtA
"""
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_iris

# 加载数据集
"""
iris数据集包含150个样本,每个样本有四个特征,三个类别。
特征:花萼长度、花萼宽度、花瓣长度、花瓣宽度。
类别:山鸢尾、变色鸢尾、维吉尼亚鸢尾。
iris在机器学习中的应用:
属于监督式学习应用:根据花的四个特征预测鸢尾花卉属于(iris-setosa,iris-versicolour,iris-virginica)中的那一品种。
机器学习中经典案例,简单而具有代表性。
"""

data = load_iris()
X = data.data
#print(X)数据和类型
y = data.target
#print(y)数据和类型

# 特征名称
#print(data.feature_names)
# 类别名称
#print(data.target_names)#

# 打印数据集的大小
#print(X.shape)
#print(y.shape)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建模型
model = KNeighborsClassifier(n_neighbors=3)

# 训练模型
model.fit(X_train, y_train)

# 预测
predictions = model.predict(X_test)

# 模型评估
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy * 100:.2f}%")

X_new = [[1, 3.5, 1.4, 0.2], [6.3, 3.3, 4.7, 1.6]]
test_ = model.predict(X_new)
for a, b in zip(X_new,test_):
print(f"数据:{a},结果:{data.target_names[b]}")

标签:KNN,iris,近邻,print,算法,train,test,data
From: https://www.cnblogs.com/zeliangzhang/p/18502837

相关文章

  • 算法设计实验6
    p1249有一个8*8的棋盘,行号、列号均为0-7,一个特殊放个的位置是(5,6),给出采用L形骨牌覆盖其他全部方格的一种方案1#include<ostream>2#include<iostream>3#defineMAX_SIZE84usingnamespacestd;5intk;6intx,y;7intboard[MAX_SIZE][MAX_SIZE];8int......
  • 【数据结构和算法】一、算法复杂度:时间复杂度和空间复杂度)
    目录1、算法复杂度1.1概念1.2评价指标1.3时间复杂度1.3.1什么是时间复杂度1.3.2常数阶O(1)1.3.3  线性阶O(n)1.3.4 对数阶O(logN)1.3.5  线性对数阶O(nlogN)1.3.6 平方阶O(n²)1.3.7  立方阶O(n³)、K次方阶O(n^k)1.4 空间复杂度1.4.1 空间复......
  • 数据结构图的最短路径-弗洛伊德算法(有向图+数据结构课本C++代码一比一转C语言+邻接矩
    弗洛伊德算法有向图代码如下:#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<stdlib.h>#include<limits.h>#defineMaxInt32767#defineMVNum100intPath[MVNum][MVNum];//存放前驱索引的intD[MVNum][MVNum];//存放当前已知的权值//图的邻接......
  • 非常牛 H 开头的算法
    考前发现欧拉回路不会。然后寻求多方大佬,最后比较深刻地理解了一个叫Hierholzer的算法。这个算法暴力写法是:先找一条欧拉路径,然后把这个路径上的点删了。再看看这个链上的点能不能再被换成环,能的话就把这个点换成新找的路径,这步用链表插入,这个过程是递归的。复杂度很......
  • 数学算法
    1.筛质数力扣相关题目:204.计数质数、2523.范围内最接近的两个质数要在某个范围内计算出所有质数时,先在这个范围内做预处理,把所有的质数筛出来埃氏筛:从前往后,把质数的倍数都去掉(因为这肯定不是质数了)constintMX=5e6; //比如数据范围是0~5*10^6vector<int>primes; //......
  • 【有啥问啥】视频插帧算法技术原理详解
    视频插帧算法技术原理详解引言视频插帧(VideoInterpolation)技术,作为计算机视觉领域的一项重要应用,旨在通过算法手段在已有的视频帧之间插入额外的帧,从而提升视频的帧率,使其看起来更加流畅。这一技术不仅广泛应用于电影特效、视频游戏、运动捕捉等领域,还随着计算机视觉和......
  • 越界检测视频分析网关区域入侵识别人员入侵算法的技术原理和视频监控应用
    在传统的监控模式下,依赖人工持续监视视频画面存在明显的局限性,包括疲劳、注意力分散以及无法覆盖所有区域等问题,这使得实现24小时、全方位监控变得困难。而人工智能技术的应用,通过在关键位置部署摄像头,能够捕获连续的视频流。结合深度学习模型,这些视频流可以被实时分析,从而提高了......
  • 【优选算法】——滑动窗口(下篇)
    目录1、水果成篮2、找到字符串中所有字母异位词3、串联所有单词的子串4、最小覆盖子串1、水果成篮你正在探访一家农场,农场从左到右种植了一排果树。这些树用一个整数数组 fruits 表示,其中 fruits[i] 是第 i 棵树上的水果 种类 。你想要尽可能多地收集水果......
  • OCR技术的新突破:传统算法与多模态大模型的较量
    大家好!今天咱们来聊聊OCR技术的最新进展。OCR,就是把图片里的文字转换成电子文本的技术。这可是个实用的东西,尤其是当你需要把纸质文档变成可编辑的文本时。先说说传统的OCR算法。它们通常分两步走:先识别文字和位置,然后对文字进行后处理。百度的PaddleOCR在这方面做得不错,尤其......
  • kd-tree和ball-tree在算法实现原理上有什么区别
    kd-tree和ball-tree在算法实现原理上的区别主要体现在:1.结构不同;2.划分方式不同;3.查询效率不同;4.应用场景不同;5.空间利用效率不同。总的来说,kd-tree在处理低维数据时效率较高,而ball-tree更适合处理高维数据。kd-tree是一种二叉树结构,而ball-tree则是一种层次化的数据结构。1.......