sklearn鸢尾花分类预测 python
时间: 2025-05-31 22:32:48 浏览: 16
### 鸢尾花数据集分类预测
`sklearn` 是一个功能强大的 Python 库,提供了丰富的机器学习算法和工具来完成数据分析与建模任务。以下是使用 `sklearn` 进行鸢尾花数据集分类的具体实现方法。
#### 导入必要的库
为了加载数据、划分训练集/测试集以及构建模型,需要导入以下模块:
```python
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import accuracy_score, classification_report
```
这些模块分别用于加载数据集[^1]、分割数据集[^3]、标准化特征值[^1]以及评估模型性能[^2]。
---
#### 加载并查看数据
通过 `load_iris()` 函数可以轻松获取鸢尾花数据集,并将其转换为 Pandas DataFrame 方便分析。
```python
import pandas as pd
# 加载数据
data = load_iris()
X = data.data
y = data.target
# 转换为DataFrame以便观察
df = pd.DataFrame(X, columns=data.feature_names)
print(df.describe()) # 描述统计信息
print(pd.Series(y).value_counts()) # 类别分布情况
```
此部分有助于理解数据的基本特性及其类别平衡状况[^3]。
---
#### 数据预处理
在实际应用中,通常会对数值型特征进行缩放以提高某些算法的表现效果(如支持向量机)。这里采用标准差归一化方式对输入变量做变换。
```python
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# 将原始标签保留下来供后续验证阶段对比之用
labels = ['setosa', 'versicolor', 'virginica']
target_name_mapping = {i: label for i, label in enumerate(labels)}
```
此处利用了 `StandardScaler` 来执行零均值单位方差调整操作。
---
#### 划分训练集与测试集
按照一定比例拆分样本集合成为两组独立的数据子集——即训练集和测试集,从而能够更加客观地衡量所建立模型的效果优劣程度。
```python
X_train, X_test, y_train, y_test = train_test_split(
X_scaled, y, test_size=0.3, stratify=y, random_state=42
)
```
其中参数 `stratify=y` 确保每类别的比例保持一致;而固定种子数则方便重复实验结果。
---
#### 建立多种分类器并比较其表现
下面列举了几种常见的监督学习技术应用于当前场景下的实例代码片段:
##### 支持向量机 (SVM)
```python
from sklearn.svm import SVC
svm_clf = SVC(kernel='linear')
svm_clf.fit(X_train, y_train)
y_pred_svm = svm_clf.predict(X_test)
acc_svm = accuracy_score(y_test, y_pred_svm)
print(f"SVM Accuracy: {acc_svm:.3f}")
print(classification_report(y_test, y_pred_svm))
```
##### k近邻法 (KNN)
```python
from sklearn.neighbors import KNeighborsClassifier
knn_clf = KNeighborsClassifier(n_neighbors=5)
knn_clf.fit(X_train, y_train)
y_pred_knn = knn_clf.predict(X_test)
acc_knn = accuracy_score(y_test, y_pred_knn)
print(f"KNN Accuracy: {acc_knn:.3f}")
print(classification_report(y_test, y_pred_knn))
```
##### 决策树 (Decision Tree)
```python
from sklearn.tree import DecisionTreeClassifier
tree_clf = DecisionTreeClassifier(max_depth=None)
tree_clf.fit(X_train, y_train)
y_pred_tree = tree_clf.predict(X_test)
acc_tree = accuracy_score(y_test, y_pred_tree)
print(f"Decision Tree Accuracy: {acc_tree:.3f}")
print(classification_report(y_test, y_pred_tree))
```
以上三种不同类型的分类器各有特色,在具体应用场景下可根据需求选择合适的方案[^2]。
---
#### 性能评估总结
最终可以通过混淆矩阵或者精确率召回率F1分数等指标进一步深入探讨各个候选模型之间的差异性[^2]。
```python
for name, clf in [
('Support Vector Machine', svm_clf),
('K Nearest Neighbor', knn_clf),
('Decision Tree', tree_clf)]:
preds = clf.predict(X_test)
acc = accuracy_score(y_test, preds)
report = classification_report(y_test, preds, target_names=[target_name_mapping[i] for i in range(len(set(y))])
print('='*80)
print(name.center(80))
print('-'*80)
print(report)
```
这一步骤旨在综合考量各类评价维度上的优势劣势之处[^2]。
---
阅读全文
相关推荐


















