如何通过超简易模型进行推理流程示例?

摘要:前提: 数据集概念 模型的推理规则,由数据训练而来 流程: 以下是一个最基础、无需训练的 K近邻(KNN)分类器,并用它来对经典的鸢尾花数据集进行分类 数据集:经典的鸢尾花数据集,它包含150朵花的4个特征(花萼长
前提:   数据集概念 模型的推理规则,由数据训练而来 流程: 以下是一个最基础、无需训练的K近邻(KNN)分类器,并用它来对经典的鸢尾花数据集进行分类 数据集:经典的鸢尾花数据集,它包含150朵花的4个特征(花萼长宽、花瓣长宽)和3个类别标签 特征矩阵(X):二维数组(150,4),float类型 标签向量(Y):一维向量,映射为int类型 推理规则:KNN算法【非逻辑分支if/then/else】,基于空间几何和统计的两步推理过程 【距离度量——欧氏距离(也可以是其它)】->【投票决策 —— 基于邻域的统计共识】 示例代码:simple_knn.py """ K近邻(KNN)分类器 功能:使用纯Python实现KNN算法,并在鸢尾花数据集上测试 """ import sys import io sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') import numpy as np from collections import Counter from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score, classification_report class SimpleKNN: """K近邻分类器""" def __init__(self, k=3, distance_metric='euclidean'): """ 初始化KNN模型 参数: - k: 邻居数量,默认3 - distance_metric: 距离度量方式,可选 'euclidean'(欧氏) 或 'manhattan'(曼哈顿) """ self.k = k self.distance_metric = distance_metric self.X_train = None self.y_train = None def fit(self, X, y): """ "训练"模型:实际只是记住训练数据 这是基于实例的学习,没有参数优化过程 参数: - X: 训练特征,形状 (n_samples, n_features) - y: 训练标签,形状 (n_samples,) """ self.X_train = np.array(X) self.y_train = np.array(y) print(f"[训练完成] 模型已记住 {len(X)} 个训练样本") return self def _compute_distance(self, x1, x2): """ 计算两个样本点之间的距离 参数: - x1, x2: 两个样本的特征向量 返回: - 距离值 """ if self.distance_metric == 'euclidean': # 欧氏距离:sqrt(Σ(x1_i - x2_i)²) return np.sqrt(np.sum((x1 - x2) ** 2)) elif self.distance_metric == 'manhattan': # 曼哈顿距离:Σ|x1_i - x2_i| return np.sum(np.abs(x1 - x2)) else: raise ValueError(f"不支持的距离度量方式: {self.distance_metric}") def _predict_one(self, x): """ 预测单个样本的类别 参数: - x: 单个样本的特
阅读全文