sklearn.svm.SVC 是 Scikit-learn(一个常用的机器学习库)中的一个类,用于支持向量机(Support Vector Machine,SVM)算法中的分类任务。
SVM 是一种用于分类和回归的监督学习算法。在分类任务中,SVM 构建一个决策边界,将不同类别的样本分开。SVC 类则实现了标准的支持向量机分类器。
SVC 类的构造函数有以下常用参数:
sklearn.svm.SVC(C=1.0, kernel='rbf', degree=3, gamma='scale',
coef0=0.0, shrinking=True, probability=False, tol=0.001,
cache_size=200, class_weight=None, verbose=False, max_iter=-1,
decision_function_shape='ovr', break_ties=False, random_state=None)
以下是一些重要参数的说明:
-
C
:惩罚参数,控制了决策边界的平滑度。较小的C
值会允许更多的错误分类,较大的C
值会迫使模型更加关注每个样本的分类准确性。 -
kernel
:核函数的类型。常用的选项有'linear'
(线性核函数)、'rbf'
(径向基函数)、'poly'
(多项式核函数)等。 -
gamma
:'rbf'
、'poly'
和'sigmoid'
核函数的参数。它控制了决策边界的弯曲程度。默认值'scale'
根据特征数量自动计算 gamma 值。 -
probability
:布尔值,指示是否启用概率估计。如果设置为True
,模型将能够计算样本属于每个类别的概率。 -
class_weight
:一个字典或字符串,指定每个类别的权重。可以用于处理类别不平衡的问题。
SVC
类提供了一系列方法,包括 fit
(用于训练模型)、predict
(用于预测新样本的类别)、decision_function
(返回样本到决策边界的距离)、predict_proba
(返回每个类别的概率)等。
用鸢尾花作为示例做一个简单实现:
from sklearn.svm import SVC
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
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.2, random_state=42)
# 创建并训练SVM模型
svm = SVC()
svm.fit(X_train, y_train)
# 在测试集上进行预测
y_pred = svm.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)
在这个示例中,用 load_iris
函数加载了鸢尾花数据集,并将其分为特征矩阵 X
和目标向量 y
。然后,用 train_test_split
函数将数据集划分为训练集和测试集。接下来,创建一个 SVC
实例并调用 fit
方法对模型进行训练。然后用测试集进行预测,并计算预测准确率。