人工智能直通车系列19【机器学习基础】(核函数介绍K 最近邻算法原理)
人工智能直通车系列正在连载更新中,更新的内容包括Python 基础与数学基础、机器学习基础、深度学习基础、完整学习资料以及详细解释代码示例,关注我,持续学习。
·
目录
核函数介绍
1. 核函数的作用
在支持向量机(SVM)中,当数据在原始特征空间中线性不可分时,核函数的作用是将原始特征空间映射到一个更高维的特征空间,使得数据在新的特征空间中变得线性可分,从而可以使用线性分类器进行分类。而且,核函数避免了直接在高维空间中进行复杂的计算,通过核技巧可以在原始特征空间中计算高维空间的内积。
2. 常见核函数
- 线性核函数(Linear Kernel)
- 公式:
- 特点:计算简单,适用于数据本身就是线性可分或者数据维度较高的情况。在这种情况下,使用线性核可以避免引入过多的复杂度。
- 公式:
- 多项式核函数(Polynomial Kernel)
- 公式:
,其中
、
和
是参数,
是多项式的次数。
- 特点:可以拟合更复杂的非线性关系,通过调整参数
可以控制多项式的次数,从而控制模型的复杂度。
- 公式:
- 径向基核函数(Radial Basis Function Kernel,RBF)
- 公式:
,其中
是参数。
- 特点:是最常用的核函数之一,具有很强的非线性映射能力,能够处理各种复杂的数据分布。它只依赖于样本之间的距离,对于未知分布的数据也能有较好的表现。
- 公式:
- Sigmoid 核函数(Sigmoid Kernel)
- 公式:
,其中
和
是参数。
- 特点:具有类似神经网络的性质,在某些情况下可以模拟神经元的激活函数,但它的性能相对不太稳定,对参数比较敏感。
- 公式:
K 最近邻算法原理
1. 基本思想
K 最近邻(K-Nearest Neighbors,KNN)算法是一种基本的分类与回归方法。其基本思想是:给定一个训练数据集,对于新的输入实例,在训练数据集中找到与该实例最邻近的个实例,然后根据这
个实例的类别(分类问题)或数值(回归问题)来决定新实例的类别或值。
2. 算法步骤
- 计算距离:对于新的输入实例,计算它与训练数据集中每个实例之间的距离。常用的距离度量方法有欧氏距离、曼哈顿距离等。欧氏距离的计算公式为:
,其中
和
是两个实例,
是特征的数量。
- 选择
值:确定
的大小,即选择最近邻的实例数量。
值的选择对算法的性能有重要影响,
值过小容易过拟合,
值过大容易欠拟合。
- 确定类别或值:
- 分类问题:统计这
个最近邻实例中各类别的数量,将数量最多的类别作为新实例的类别。
- 回归问题:计算这
个最近邻实例的数值的平均值,将该平均值作为新实例的预测值。
- 分类问题:统计这
场景代码示例:鸢尾花分类
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}")
代码解释
- 数据加载与划分:使用
load_iris函数加载鸢尾花数据集,然后使用train_test_split函数将数据集划分为训练集和测试集,测试集占比为 30%。 - 模型创建:创建
KNeighborsClassifier类的实例,指定 K 值为 3。 - 模型训练:调用
fit方法,使用训练集数据对模型进行训练。 - 模型预测:使用训练好的模型对测试集数据进行预测,得到预测结果
y_pred。 - 模型评估:使用
accuracy_score函数计算模型的准确率。
更多推荐




所有评论(0)