不用 sklearn,手写 KNN 算法对鸢尾花数据集精准分类!附代码与优化要点
以下是为您编写的 KNN 核心算法代码,用于对鸢尾花数据集进行分类: ```python import numpy as np from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split # 计算两个样本之间的欧氏距离 def euclidean_distance(x1, x2): """ 计算两个样本点之间的欧氏距离 :param x1: 样本 1 :param x2: 样本 2 :return: 欧氏距离 """ return np.sqrt(np.sum((x1 - x2) ** 2)) # KNN 分类器 class KNN: def __init__(self, k=5): """ 初始化 KNN 分类器 :param k: 近邻数量 """ self.k = k def fit(self, X, y): """ 训练模型 :param X: 特征矩阵 :param y: 标签向量 """ self.X_train = X self.y_train = y def predict(self, X_test): """ 预测标签 :param X_test: 测试集特征矩阵 :return: 预测标签 """ predictions = [] for test_sample in X_test: distances = [euclidean_distance(test_sample, x_train_sample) for x_train_sample in self.X_train] k_indices = np.argsort(distances)[:self.k] k_nearest_labels = [self.y_train[i] for i in k_indices] most_common = counter(k_nearest_labels).most_common(1)[0][0] predictions.append(most_common) return np.array(predictions) # 加载鸢尾花数据集 iris = load_iris() X = iris.data y = iris.target # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 创建 KNN 分类器对象并训练 knn = KNN(k=3) knn.fit(X_train, y_train) # 进行预测 y_pred = knn.predict(X_test) # 计算准确率 accuracy = np.sum(y_pred == y_test) / len(y_test) print("准确率:", accuracy) ``` 额外需要注意的逻辑点: 1. 数据预处理,比如对数据进行标准化或归一化处理,可能会提高模型的性能。 2. 调整 K 值,通过交叉验证等方法找到最优的 K 值。 3. 考虑对距离计算进行优化,提高算法效率。 ######[AI写代码神器 | 603点数解答 | 2024-11-19 23:05:12]
- 用 NumPy 与 Scikit-learn 实现线性回归:模拟数据、训练模型、评估与可视化全流程(阿里通义 | 651点数解答 | 2025-06-12 13:18:59)122
- Python代码实现:用线性回归模型根据年龄、体重和血压预测胆固醇水平(阿里通义 | 404点数解答 | 2025-06-29 17:53:11)116
- Java代码实现从JSON数据中提取ID,涉及“数据”与“项目 - 知识库”结构(字节豆包 | 603点数解答 | 2025-04-15 22:48:51)237
- C++ 实现:计算一排鹅与最高、最矮鹅的身高差及代码详解(字节豆包 | 549点数解答 | 2025-11-16 20:19:06)83
- 编程揭秘:计算 𝑛! 在 𝑃 进制下末尾零个数的方法与代码实现(DeepSeek | 549点数解答 | 2026-01-11 17:49:54)47
- 工程师必知:软件系统用户文档编写九大要点揭秘(百度文心 | 350点数解答 | 2023-11-09 18:23:53)185
- 鸢尾花数据集:KNN 与朴素贝叶斯分类,PCA 降维后可视化分类界面(字节豆包 | 571点数解答 | 2024-12-08 09:14:25)76
- 职中生用PHP+MySQL+HTML搭建湘绣文化网站,功能全易上手!(DeepSeek | 3146点数解答 | 2025-05-08 23:00:48)207
- 数字化制图综合平台:助力企业转型,推动烟草物流图纸智能化设计 (字节豆包 | 490点数解答 | 2024-10-30 20:30:29)145
- 数字化制图综合平台:引领烟草物流及多领域设计革新 在企业数字化转型的时代浪潮中,数字化制图技术创新应用成为产业升级与提升竞争力的关键。企业对高效、精准、智能化设计解决方案需求迫切,构建集二维到三维正逆向工程快捷化、干涉检测可视化、设备明细数据提取自动化以及设备模块模型库于一体的综合平台意义重大。 此平台集成先进数字化制图工具与智能算法,可实现二维设计到三维建模的无缝转换,大大缩短设计周期。正逆向工程能快速切换,满足不同场景设计需求。内置干涉检测功能可实时监测设计潜在冲突,保障设计方案可行与安全。设备明细数据自动提取提高设计准确性与效率。设备模块模型库为设计师提供丰富资源,支持设计标准化与模块化,加速项目推进。 整体来看,该综合平台的应用极大促进了烟草物流行业及更广泛领域的技术创新与效率提升。在烟草物流方案图纸智能化设计中,它提升了图纸设计效率与质量,使设计工作更加高效、精准。对于企业而言,这一平台带来显著竞争优势,能帮助企业在数字化转型中脱颖而出,在激烈的市场竞争中占据有利地位,推动整个行业向更高效、更智能的方向发展。 (阿里通义 | 216点数解答 | 2024-10-30 20:30:51)174
- 解析React 15与Vue 2:从O(n^3)到O(n),Diff算法时间复杂度计算及性能对比 (阿里通义 | 379点数解答 | 2023-11-09 01:49:19)335
- 缜密逻辑,全新无名杀“风餐”技能代码精心打造与深度解析 (字节豆包 | 469点数解答 | 2025-04-05 11:37:06)241