基于python生成用SVM进行图像分类
时间: 2024-05-09 22:17:23 浏览: 7
以下是一个简单的示例,使用SVM(支持向量机)进行图像分类。
首先,我们需要导入必要的库,包括sklearn、numpy和matplotlib:
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
```
接下来,我们将使用sklearn中的digits数据集,该数据集包含手写数字的图像。
```python
digits = datasets.load_digits()
```
我们可以使用以下代码查看数据集中的图像:
```python
images_and_labels = list(zip(digits.images, digits.target))
for index, (image, label) in enumerate(images_and_labels[:4]):
plt.subplot(2, 4, index + 1)
plt.imshow(image, cmap=plt.cm.gray_r, interpolation='nearest')
plt.title('Training: %i' % label)
```
接下来,我们将准备数据集并将其拆分为训练集和测试集:
```python
X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target)
```
然后,我们将创建一个SVM分类器并使用训练数据进行拟合:
```python
classifier = SVC(kernel='linear', gamma='scale')
classifier.fit(X_train, y_train)
```
最后,我们可以使用测试数据进行预测并计算分类器的准确性:
```python
y_pred = classifier.predict(X_test)
accuracy = np.mean(y_pred == y_test)
print("Accuracy:", accuracy)
```
完整代码:
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
digits = datasets.load_digits()
images_and_labels = list(zip(digits.images, digits.target))
for index, (image, label) in enumerate(images_and_labels[:4]):
plt.subplot(2, 4, index + 1)
plt.imshow(image, cmap=plt.cm.gray_r, interpolation='nearest')
plt.title('Training: %i' % label)
X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target)
classifier = SVC(kernel='linear', gamma='scale')
classifier.fit(X_train, y_train)
y_pred = classifier.predict(X_test)
accuracy = np.mean(y_pred == y_test)
print("Accuracy:", accuracy)
plt.show()
```