python以鸾尾花识别为例实现SVM算法
时间: 2024-12-16 10:15:43 浏览: 17
在Python中,使用支持向量机(SVM)进行鸢尾花识别是一个经典的机器学习应用案例。鸢尾花数据集通常来自UCI Machine Learning Repository,包含三个品种(Setosa、Versicolour和Virginica)的鸢尾花测量值。
首先,你需要安装必要的库如`scikit-learn`,它是Python中最常用的机器学习工具包之一:
```bash
pip install scikit-learn
```
接下来,你可以按照以下步骤实现SVM分类鸢尾花:
1. **加载数据**:
使用`sklearn.datasets.load_iris()`加载鸢尾花数据集,并将其分为特征(X)和目标标签(y)。
```python
from sklearn import datasets
iris = datasets.load_iris()
X = iris.data
y = iris.target
```
2. **数据预处理**:
对于某些SVM变种,比如线性核,原始数据不需要太多预处理。但为了简化示例,可以将数据归一化到0到1之间。
```python
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X = scaler.fit_transform(X)
```
3. **分割训练集和测试集**:
分割数据集以便评估模型性能。通常,我们会保留约75%的数据用于训练,剩下的用于测试。
```python
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
```
4. **创建SVM模型**:
选择一个合适的核函数,例如线性核(`linear`)或径向基函数(`rbf`)。这里我们假设使用的是`rbf`核。
```python
from sklearn.svm import SVC
svm_model = SVC(kernel='rbf', C=1) # 配置参数,C控制惩罚项的强度
```
5. **训练模型**:
将训练数据拟合到模型中。
```python
svm_model.fit(X_train, y_train)
```
6. **预测和评估**:
使用测试集评估模型性能。
```python
y_pred = svm_model.predict(X_test)
accuracy = svm_model.score(X_test, y_test)
print(f"Accuracy: {accuracy}")
```
阅读全文