目录

核函数介绍

1. 核函数的作用

2. 常见核函数

K 最近邻算法原理

1. 基本思想

2. 算法步骤

场景代码示例:鸢尾花分类

代码解释


核函数介绍

1. 核函数的作用

在支持向量机(SVM)中,当数据在原始特征空间中线性不可分时,核函数的作用是将原始特征空间映射到一个更高维的特征空间,使得数据在新的特征空间中变得线性可分,从而可以使用线性分类器进行分类。而且,核函数避免了直接在高维空间中进行复杂的计算,通过核技巧可以在原始特征空间中计算高维空间的内积。

2. 常见核函数
  • 线性核函数(Linear Kernel)
    • 公式K(x_i, x_j) = x_i^T x_j
    • 特点:计算简单,适用于数据本身就是线性可分或者数据维度较高的情况。在这种情况下,使用线性核可以避免引入过多的复杂度。
  • 多项式核函数(Polynomial Kernel)
    • 公式K(x_i, x_j) = (\gamma x_i^T x_j + r)^d,其中\gammar 和 d 是参数,d 是多项式的次数。
    • 特点:可以拟合更复杂的非线性关系,通过调整参数d可以控制多项式的次数,从而控制模型的复杂度。
  • 径向基核函数(Radial Basis Function Kernel,RBF)
    • 公式K(x_i, x_j) = \exp(-\gamma \|x_i - x_j\|^2),其中\gamma > 0是参数。
    • 特点:是最常用的核函数之一,具有很强的非线性映射能力,能够处理各种复杂的数据分布。它只依赖于样本之间的距离,对于未知分布的数据也能有较好的表现。
  • Sigmoid 核函数(Sigmoid Kernel)
    • 公式K(x_i, x_j) = \tanh(\gamma x_i^T x_j + r),其中\gammar是参数。
    • 特点:具有类似神经网络的性质,在某些情况下可以模拟神经元的激活函数,但它的性能相对不太稳定,对参数比较敏感。

K 最近邻算法原理

1. 基本思想

K 最近邻(K-Nearest Neighbors,KNN)算法是一种基本的分类与回归方法。其基本思想是:给定一个训练数据集,对于新的输入实例,在训练数据集中找到与该实例最邻近的K个实例,然后根据这K个实例的类别(分类问题)或数值(回归问题)来决定新实例的类别或值。

2. 算法步骤
  • 计算距离:对于新的输入实例,计算它与训练数据集中每个实例之间的距离。常用的距离度量方法有欧氏距离、曼哈顿距离等。欧氏距离的计算公式为:d(x, y) = \sqrt{\sum_{i = 1}^{n}(x_i - y_i)^2},其中 x 和y 是两个实例,n 是特征的数量。
  • 选择 K:确定K 的大小,即选择最近邻的实例数量。K值的选择对算法的性能有重要影响,K 值过小容易过拟合,K 值过大容易欠拟合。
  • 确定类别或值
    • 分类问题:统计这K个最近邻实例中各类别的数量,将数量最多的类别作为新实例的类别。
    • 回归问题:计算这 K个最近邻实例的数值的平均值,将该平均值作为新实例的预测值。

场景代码示例:鸢尾花分类

import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score

# 加载鸢尾花数据集
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.3, random_state=42)

# 创建 KNN 分类器
k = 3  # 选择 K 值
knn = KNeighborsClassifier(n_neighbors=k)

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

# 进行预测
y_pred = knn.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"KNN 模型的准确率: {accuracy}")

代码解释

  1. 数据加载与划分:使用 load_iris 函数加载鸢尾花数据集,然后使用 train_test_split 函数将数据集划分为训练集和测试集,测试集占比为 30%。
  2. 模型创建:创建 KNeighborsClassifier 类的实例,指定 K 值为 3。
  3. 模型训练:调用 fit 方法,使用训练集数据对模型进行训练。
  4. 模型预测:使用训练好的模型对测试集数据进行预测,得到预测结果 y_pred
  5. 模型评估:使用 accuracy_score 函数计算模型的准确率。
Logo

一站式 AI 云服务平台

更多推荐