给出svm图像识别python代码
时间: 2024-10-21 07:14:20 浏览: 29
SVM (支持向量机) 是一种常用的机器学习算法,在图像识别中可以用于分类任务。以下是一个简单的Python代码示例,展示如何使用scikit-learn库进行SVM图像分类:
```python
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
import matplotlib.pyplot as plt
# 加载数据集(这里假设使用的是Iris数据集作为示例)
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.2, random_state=42)
# 特征缩放,使得各个特征的尺度一致,提高模型性能
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
# 创建并训练SVM模型
svm = SVC(kernel='linear') # 使用线性核函数,也可以选择其他如'poly', 'rbf'
svm.fit(X_train_scaled, y_train)
# 预测测试集
predictions = svm.predict(X_test_scaled)
# 打印预测结果和准确率
print("Predictions:", predictions)
print("Accuracy:", svm.score(X_test_scaled, y_test))
# 可视化决策边界(仅限于二维数据)
if X.shape[1] <= 3:
# 将高维数据投影到前两个维度
X_combined = np.vstack((X_train_scaled, X_test_scaled))
y_combined = np.hstack((y_train, y_test))
plt.scatter(X_combined[:, 0], X_combined[:, 1], c=y_combined, cmap=plt.cm.Paired)
plt.xlabel('Feature 0')
plt.ylabel('Feature 1')
plt.title('SVM Decision Boundary')
plt.show()
```
阅读全文