机器学习:K-近邻算法对鸢尾花数据进行分类预测

简介: 机器学习:K-近邻算法对鸢尾花数据进行分类预测

K-近邻算法 KNN

定义:如果一个样本在特征空间中的k个最相似(即特征空间中最近邻)

的样本中的大多数属于某一个类别,则改样本也属于这个类别


计算距离:欧式距离

z = sqrt((x1-x2)^2 + (y1-y2)^2)


相似样本,特征之间的值应该都是相近的

需要做标准化处理


k的取值

k较小 容易受异常点影响

k较大 容易受k值数量波动


优点

简单,易于实现,无需估计参数,无需训练


缺点

懒惰算法,计算量较大,内存开销大

必须指定k值,k值选择不当则分类精度不能保证


使用场景

小数据场景,几千-几万


代码示例

# -*- coding: utf-8 -*-
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
# 查看数据集, 4个特征,分3类
iris = load_iris()
print(iris.feature_names)
print(iris.data[:5])
print(iris.target_names)
print(iris.target[:5])
print(iris.DESCR)
"""
['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
[[5.1 3.5 1.4 0.2]
 [4.9 3.  1.4 0.2]
 [4.7 3.2 1.3 0.2]
 [4.6 3.1 1.5 0.2]
 [5.  3.6 1.4 0.2]]
['setosa' 'versicolor' 'virginica']
[0 0 0 0 0]
"""
# 训练集测试集拆分 3-7开
X_train, X_test, y_train, y_test = train_test_split(
    iris.data, iris.target, test_size=0.33, random_state=42)
# K-近邻算法训练数据
knn = KNeighborsClassifier(n_neighbors=15)
knn.fit(X_train, y_train)
print(knn.score(X_test, y_test))
# 绘制n_neighbors取值与score的关系
x = [1, 2, 3, 5, 10, 15, 20, 30, 40, 50, 80, 100]
y = [0.98, 0.98, 0.98, 0.98, 0.98, 1.0, 1.0, 1.0, 0.94, 0.92, 0.3, 0.3]
plt.plot(x, y)
plt.xlabel("n_neighbors")
plt.ylabel("score")
plt.savefig("n_neighbors", dpi=600)

image.png

相关文章
|
1天前
|
机器学习/深度学习 存储 算法
【机器学习】使用贝叶斯模型做分类时,可能会碰到什么问题?怎么解决?
【5月更文挑战第11天】【机器学习】使用贝叶斯模型做分类时,可能会碰到什么问题?怎么解决?
|
2天前
|
机器学习/深度学习
【机器学习】噪声数据对贝叶斯模型有什么样的影响?
【5月更文挑战第10天】【机器学习】噪声数据对贝叶斯模型有什么样的影响?
|
6天前
|
机器学习/深度学习 自然语言处理 算法
Python遗传算法GA对长短期记忆LSTM深度学习模型超参数调优分析司机数据|附数据代码
Python遗传算法GA对长短期记忆LSTM深度学习模型超参数调优分析司机数据|附数据代码
|
6天前
|
机器学习/深度学习 数据采集 算法
数据分享|R语言机器学习预测案例合集:众筹平台、机票折扣、糖尿病患者、员工满意度
数据分享|R语言机器学习预测案例合集:众筹平台、机票折扣、糖尿病患者、员工满意度
|
6天前
|
数据采集 机器学习/深度学习 算法
数据分享|WEKA关联规则挖掘Apriori算法在学生就业数据中的应用
数据分享|WEKA关联规则挖掘Apriori算法在学生就业数据中的应用
|
6天前
|
机器学习/深度学习 自然语言处理 算法
【大模型】关于减轻 LLM 训练数据和算法中偏差的研究
【5月更文挑战第6天】【大模型】关于减轻 LLM 训练数据和算法中偏差的研究
|
7天前
|
数据采集
【大模型】大语言模型训练数据中的偏差概念及其可能的影响?
【5月更文挑战第5天】【大模型】大语言模型训练数据中的偏差概念及其可能的影响?
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
【AI 生成式】如何利用生成式人工智能进行机器学习的数据增强?
【5月更文挑战第4天】【AI 生成式】如何利用生成式人工智能进行机器学习的数据增强?
|
12天前
|
机器学习/深度学习 存储 数据采集
【Python 机器学习专栏】PCA(主成分分析)在数据降维中的应用
【4月更文挑战第30天】本文探讨了主成分分析(PCA)在高维数据降维中的应用。PCA通过线性变换找到最大化方差的主成分,从而降低数据维度,简化存储和计算,同时去除噪声。文章介绍了PCA的基本原理、步骤,强调了PCA在数据降维、可视化和特征提取上的优势,并提供了Python实现示例。PCA广泛应用在图像压缩、机器学习和数据分析等领域,但降维后可能损失解释性,需注意选择合适主成分数量及数据预处理。
|
12天前
|
机器学习/深度学习 算法 Python
【Python机器学习专栏】逻辑回归在分类问题中的应用
【4月更文挑战第30天】逻辑回归是用于二分类的统计方法,通过Sigmoid函数将线性输出映射到[0,1],以预测概率。优点包括易于理解、不需要线性关系、鲁棒且能输出概率。缺点是假设观测独立、易过拟合及需大样本量。在Python中,可使用`sklearn`的`LogisticRegression`实现模型。尽管有局限,但在适用场景下,逻辑回归是强大且有价值的分类工具。

热门文章

最新文章