在SVM中,我们通常使用核函数进行非线性分类,通过将低维空间数据通过特定的核函数映射到高维空间,使得数据在高维度空间中线性可分。常用的核函数有线性核、多项式核和径向基函数(RBF)核等。
使用核函数进行特征变换的具体实现方法是,在求解SVM的拉格朗日乘子时,将样本之间的内积替换成通过核函数计算得到的内积,这样便可以在高维空间中进行 SVM 的模型拟合,从而在低维度空间中也可以线性可分。
以下是一个使用RBF核进行SVM分类的Python代码示例:
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score
# 加载数据集
iris = datasets.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=0)
# 创建SVM对象,使用RBF核函数
svm_model = SVC(kernel='rbf')
# 训练模型
svm_model.fit(X_train, y_train)
# 测试模型
y_pred = svm_model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)