python实现svm算法实战
时间: 2024-12-25 08:15:17 浏览: 3
在Python中,支持向量机(SVM)是一种常用的机器学习算法,尤其适用于分类和回归任务。Scikit-learn库提供了方便易用的SVM接口。以下是使用Python和scikit-learn实现SVM的一个简单步骤:
1. **安装依赖**:
首先确保已经安装了`numpy`, `pandas`, 和 `scikit-learn`。如果没有安装,可以使用pip进行安装:
```bash
pip install numpy pandas scikit-learn
```
2. **数据预处理**:
导入所需的库,并读取数据集。对数据进行必要的清洗、编码(如类别编码)和划分训练集和测试集。
```python
import pandas as pd
from sklearn.model_selection import train_test_split
# 加载数据
data = pd.read_csv('your_dataset.csv')
X = data.drop('target_column', axis=1) # 特征列
y = data['target_column'] # 目标列
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
```
3. **创建并训练模型**:
使用`sklearn.svm`模块创建一个线性SVM实例,并通过`fit()`函数拟合数据。
```python
from sklearn import svm
svm_model = svm.SVC(kernel='linear') # 可选内核包括 'linear', 'poly', 'rbf', 'sigmoid'
svm_model.fit(X_train, y_train)
```
4. **预测与评估**:
对测试集进行预测,并计算性能指标(如准确率、精度、召回率等)。
```python
y_pred = svm_model.predict(X_test)
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)
```
5. **参数调整**:
SVM有许多超参数可以优化,例如C(惩罚系数)、gamma(核函数的宽度)。你可以使用GridSearchCV或RandomizedSearchCV来自动搜索最佳参数。
```python
from sklearn.model_selection import GridSearchCV
param_grid = {'C': [0.1, 1, 10, 100], 'kernel': ['linear', 'rbf']}
grid_search = GridSearchCV(svm.SVC(), param_grid, refit=True)
grid_search.fit(X_train, y_train)
best_params = grid_search.best_params_
best_model = grid_search.best_estimator_
```
阅读全文