编写一个SVM算法程序,训练鸢尾花分类数据集,并计算相关分类性能指标。
时间: 2024-11-25 21:31:56 浏览: 0
SVM对鸢尾花(Iris)数据集进行分类的Python代码
编写一个支持向量机(SVM)算法程序用于鸢尾花分类数据集通常涉及以下几个步骤:
1. **导入所需库**:
首先,我们需要导入必要的Python库,如`sklearn`(机器学习模块),`numpy`(数值计算),以及`pandas`(数据处理)。
```python
import numpy as np
import pandas as pd
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
```
2. **加载数据**:
使用`load_iris()`函数从`sklearn.datasets`加载鸢尾花数据集。
```python
iris = datasets.load_iris()
X = iris.data
y = iris.target
```
3. **数据预处理**:
将特征值标准化以便所有特征在同一尺度上。
```python
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
```
4. **划分训练集和测试集**:
划分70%的数据作为训练集,剩下的30%作为测试集。
```python
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.3, random_state=42)
```
5. **训练SVM模型**:
创建一个SVC对象,并拟合训练数据。
```python
svm_model = SVC(kernel='linear') # 或者选择其他内核如'rbf'
svm_model.fit(X_train, y_train)
```
6. **预测及评估**:
对测试集进行预测,并计算性能指标。
```python
y_pred = svm_model.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy * 100:.2f}%")
# 输出分类报告
print("Classification Report:")
print(classification_report(y_test, y_pred))
# 输出混淆矩阵
conf_mat = confusion_matrix(y_test, y_pred)
print("\nConfusion Matrix:\n", conf_mat)
```
阅读全文