import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
# 加载数据集
iris = datasets.load_iris()
X = iris.data[:, :2] # 取前两个特征
y = iris.target
# 将数据集拆分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# 定义SVM模型
svm_model = SVC(kernel='linear')
# 在训练集上拟合模型
svm_model.fit(X_train, y_train)
# 在测试集上进行预测
y_pred = svm_model.predict(X_test)
# 计算模型的准确性
accuracy = np.mean(y_pred == y_test)
print("Accuracy:", accuracy)
其中svm_model = SVC(kernel='linear') 中的参数kernel为核函数,根据不同需要可以选择如下几种核函数:
- 线性核函数(
linear
):将输入数据映射到一个高维空间中,并在该空间中进行平滑的非线性变换,以便更好地分离数据。- 多项式核函数(
poly
):将输入数据映射到一个高维空间中,并在该空间中进行多项式逼近,以便更好地分离数据。- 径向基核函数(
rbf
):在输入数据上应用径向基函数,以便对数据进行非线性分离。- 核函数(
linear
):默认值,使用线性核函数。- 样本-特征核函数(
sample_normalize
):对每个样本的特征进行归一化,以便在空间上更好地分离数据。- 样本-样本核函数(
sample_normalize
):对每个样本的样本进行归一化,以便在空间上更好地分离数据。- 高斯径向基核函数(
rbf_kernel
):在输入数据上应用高斯径向基函数,以便对数据进行非线性分离。- 带噪声径向基核函数(
rbf_kernel_with_noise
):在带噪声的输入数据上应用径向基函数,以便对数据进行非线性分离。