鸢尾花分类预测 python 贝叶斯分类 原始数据分割
时间: 2025-05-15 16:08:59 浏览: 19
鸢尾花数据集是一个经典的分类问题数据集,包含三类鸢尾花卉的特征信息。贝叶斯分类是一种基于概率统计理论的简单而有效的分类算法。下面我们结合 Python 来讲解如何对原始鸢尾花数据进行分割,并利用朴素贝叶斯分类模型来进行预测。
---
### **1. 导入所需库**
首先需要导入需要用到的几个关键模块:
```python
from sklearn.datasets import load_iris # 加载鸢尾花数据集函数
from sklearn.model_selection import train_test_split # 划分训练集和测试集工具
from sklearn.naive_bayes import GaussianNB # 使用高斯朴素贝叶斯分类器
from sklearn.metrics import accuracy_score # 计算准确率指标
import numpy as np # 数组操作基础包
```
---
### **2. 加载鸢尾花数据集并查看基本信息**
加载鸢尾花数据集并对其中的内容做一个简单的预览。
```python
# 加载数据集
iris = load_iris()
# 特征矩阵 X 和标签向量 y 分别对应于样本属性与类别标识符
X = iris.data # [n_samples, n_features] 形状表示共有多少条记录以及每条记录有多少维度
y = iris.target # 对应各条记录的目标值即所属种类编号 {0, 1, 2}
print("Features:\n", iris.feature_names)
print("\nTarget names:", iris.target_names)
print("\nFirst five samples:")
for i in range(5):
print(f"Sample {i+1}: Features={X[i]}, Target={y[i]}")
```
---
### **3. 将数据划分为训练集和验证集**
为了评估我们的分类模型性能,在构建好模型之后还需要留出一部分独立的数据作为检验素材。这里采用随机抽样的方法把整个数据分成两部分——70%的比例分配给训练集合;剩下的则用于测试目的。
```python
# 设定随机种子保证每次运行程序划分结果一致
random_seed = 42
# 按照比例拆分数据集为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=random_seed)
print(f"\nTraining set size: {len(y_train)} ({round(len(y_train)/len(y)*100)}%)")
print(f"Testing set size : {len(y_test )}({ round(( len(y)-len(y_train))/len(y)*100 }%) ")
```
> 输出示例:`Training set size: 105 (70%), Testing set size: 45 (30%)`
---
### **4. 构建并应用高斯朴素贝叶斯分类器**
创建一个实例化的 `GaussianNB()` 并对其传递进来的训练数据完成拟合过程。
然后就可以用这个已经学习好的模型去推测新观测点归属哪一类了!
```python
# 初始化 Gausssian Naive Bayes 类型的对象 gnb
gnb = GaussianNB()
# 根据提供的训练资料教化该模型
model = gnb.fit(X_train, y_train)
# 测试阶段 - 预测未知输入所对应的输出类别标号
predictions = model.predict(X_test)
# 展现若干个预测结果同真实答案对比状况
print("\nPredictions vs Actuals for first few instances from Test Set:")
for idx, pred_val in enumerate(predictions[:8]):
actual_val = y_test[idx]
feature_desc = ', '.join([f"{feat}={val:.2f}" for feat,val in zip(iris.feature_names,X_test[idx])])
print(f"[{idx}] Predicted:{pred_val}, True Label:{actual_val} | Sample Features:[{feature_desc}]")
# 统计总体精度得分
accuracy_percentage = accuracy_score(y_test,predictions )*100
print(f"\nOverall Accuracy Score on the Test Dataset is approximately {accuracy_percentage}%.")
```
---
以上就是完整地演示了一个完整的流程,包括从加载原始数据开始直到最终计算出预测效果为止的所有步骤都涵盖到了。希望这对你有所帮助!
####
阅读全文
相关推荐


















