支持向量机(SVM)是一种强大的分类和回归工具,广泛应用于各种机器学习任务。以下是SVM预测模型的Python和MATLAB实现示例。
### Python实现
将使用`scikit-learn`库来实现SVM模型。如果还没有安装该库,使用以下命令安装:
```bash
pip install scikit-learn
```
#### Python代码示例
```python
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC # 对于分类,使用SVC;如果是回归,用SVR
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
from sklearn.datasets import make_classification
# 生成示例分类数据
X, y = make_classification(n_samples=100, n_features=20, n_classes=2, random_state=42)
# 分割数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建和训练SVM模型
model = SVC(kernel='linear') # 使用线性核
model.fit(X_train, y_train)
# 进行预测
y_pred = model.predict(X_test)
# 评估模型
accuracy = accuracy_score(y_test, y_pred)
print("准确率:", accuracy)
print("分类报告:\n", classification_report(y_test, y_pred))
print("混淆矩阵:\n", confusion_matrix(y_test, y_pred))
```
### MATLAB实现
在MATLAB中,可以使用`fitcsvm`函数创建SVM分类模型。
#### MATLAB代码示例
```matlab
% 生成示例分类数据
rng(0); % 设定随机数种子
numSamples = 100;
numFeatures = 20;
X = rand(numSamples, numFeatures); % 100个样本和20个特征
y = randi([0, 1], numSamples, 1); % 生成随机二分类标签
% 分割数据集
cv = cvpartition(numSamples, 'HoldOut', 0.2);
idx = cv.test;
% 分割训练和测试数据
X_train = X(~idx, :);
y_train = y(~idx);
X_test = X(idx, :);
y_test = y(idx);
% 拟合SVM分类模型
mdl = fitcsvm(X_train, y_train, 'KernelFunction', 'linear');
% 进行预测
y_pred = predict(mdl, X_test);
% 评估模型
accuracy = sum(y_pred == y_test) / length(y_test); % 准确率
confMat = confusionmat(y_test, y_pred); % 混淆矩阵
fprintf('准确率: %.2f\n', accuracy);
disp('混淆矩阵:');
disp(confMat);
```
### 结论
以上代码展示了如何在Python和MATLAB中实现支持向量机(SVM)预测模型。这些示例中,使用了简单的二分类数据集。实际应用中,可以根据需要调整数据集和模型参数。