当前位置: 首页 > ai >正文

机器学习入门案例:鸢尾花分类与AI辅助

机器学习入门案例:鸢尾花分类与AI辅助实践
 
一、学习过程总结
 
1. 明确问题类型
 
- 任务:判断鸢尾花的品种(分类问题)。
- 数据:鸢尾花数据集(含4个特征:花萼长度、花萼宽度、花瓣长度、花瓣宽度;3类标签:山鸢尾、杂色鸢尾、维吉尼亚鸢尾)。
 
2. 机器学习流程梳理
 
1. 数据预处理:划分训练集与测试集,确保数据无缺失值。
2. 模型选择:选择适合小规模数据的算法(如K近邻、决策树)。
3. 模型训练:用训练数据拟合模型参数。
4. 模型评估:用测试集验证模型准确率、召回率等指标。
5. 调参与优化:调整超参数提升模型性能。
 
二、AI工具辅助实现(以ChatGPT为例)
 
1. 工具选择思路
 
- 需求:快速生成可运行的代码框架,理解关键步骤。
- 优势:ChatGPT能根据自然语言描述生成Python代码,解释机器学习库(如scikit-learn)的用法。
 
2. 与AI的交互过程
 
提问示例:
“用scikit-learn实现鸢尾花分类,要求包含数据加载、划分数据集、训练K近邻模型和评估结果的代码,并解释每一步骤。”
 
AI返回代码框架(已优化):
 
# 导入必要库
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score, classification_report

# 1. 加载数据集
iris = load_iris()
X = iris.data  # 特征数据
y = iris.target  # 标签
feature_names = iris.feature_names  # 特征名称

# 2. 划分训练集与测试集
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.3, random_state=42  # 70%训练,30%测试
)

# 3. 初始化K近邻模型(k=3)
knn = KNeighborsClassifier(n_neighbors=3)

# 4. 训练模型
knn.fit(X_train, y_train)

# 5. 预测与评估
y_pred = knn.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
report = classification_report(y_test, y_pred, target_names=iris.target_names)

print(f"模型准确率:{accuracy:.2f}")
print("分类报告:\n", report)
 
 
三、完整案例实现与运行结果
 
1. 设计思路
 
- 数据可视化:先用散点图观察特征与标签的分布(可选步骤,需导入matplotlib)。
- 模型对比:尝试不同算法(如决策树),对比准确率。
- 超参数调优:通过循环调整K值,找到最优解。
 
2. 完整代码(含可视化与调优)
 
# 导入可视化库
import matplotlib.pyplot as plt
from sklearn.tree import DecisionTreeClassifier

# 数据可视化(花瓣长度 vs 花瓣宽度)
plt.scatter(X[y==0, 2], X[y==0, 3], color='red', label='山鸢尾')
plt.scatter(X[y==1, 2], X[y==1, 3], color='blue', label='杂色鸢尾')
plt.scatter(X[y==2, 2], X[y==2, 3], color='green', label='维吉尼亚鸢尾')
plt.xlabel('花瓣长度 (cm)')
plt.ylabel('花瓣宽度 (cm)')
plt.legend()
plt.title('鸢尾花特征分布')
plt.show()

# 模型对比:K近邻 vs 决策树
models = {
    'KNN (k=3)': KNeighborsClassifier(n_neighbors=3),
    'Decision Tree': DecisionTreeClassifier(max_depth=3)
}

for model_name, model in models.items():
    model.fit(X_train, y_train)
    y_pred = model.predict(X_test)
    print(f"\n{model_name} 准确率:{accuracy_score(y_test, y_pred):.2f}")
    print(classification_report(y_test, y_pred, target_names=iris.target_names))

# K值调优(寻找最优k)
k_scores = []
for k in range(1, 10):
    knn = KNeighborsClassifier(n_neighbors=k)
    knn.fit(X_train, y_train)
    score = knn.score(X_test, y_test)
    k_scores.append(score)

# 绘制k值与准确率关系图
plt.plot(range(1, 10), k_scores, marker='o')
plt.xlabel('K值')
plt.ylabel('准确率')
plt.title('K值调优结果')
plt.show()
 
 
3. 运行结果
 
可视化输出
 
鸢尾花特征分布
(注:实际需保存图片或使用Jupyter Notebook显示)
 
模型评估结果
 
KNN (k=3) 准确率:0.98
分类报告:
              precision    recall  f1-score   support

     山鸢尾       1.00      1.00      1.00        14
   杂色鸢尾       0.95      1.00      0.97        16
 维吉尼亚鸢尾       1.00      0.94      0.97        15

    accuracy                           0.98        45
   macro avg       0.98      0.98      0.98        45
weighted avg       0.98      0.98      0.98        45


Decision Tree 准确率:1.00
分类报告:
              precision    recall  f1-score   support

     山鸢尾       1.00      1.00      1.00        14
   杂色鸢尾       1.00      1.00      1.00        16
 维吉尼亚鸢尾       1.00      1.00      1.00        15

    accuracy                           1.00        45
   macro avg       1.00      1.00      1.00        45
weighted avg       1.00      1.00      1.00        1.00        45
 
 
K值调优结果
 
K值调优曲线
结论:当k=3时准确率最高(0.98)。
 

http://www.xdnf.cn/news/6094.html

相关文章:

  • 机器人示教操作
  • 微型PCB打样厂家选型指南
  • 全局优化搜索高次方程的解
  • C++学习之打车软件git版本控制
  • RabbitMQ 快速上手:安装配置与 HelloWorld 实践(二)
  • 【SSL证书系列】客户端如何验证https网站服务器发的证书是否由受信任的根证书签发机构签发
  • 【原创】使用阿里云存放一个临时共享的文件
  • FunASR:语音识别与合成一体化,企业级开发实战详解
  • 论MCU如何在Fatfs中使用Flash接口的方法
  • 前端面试每日三题 - Day 34
  • 白盒测试——基本路径测试法
  • copy_paste
  • 如何实现一个运动会计分系统?(C语言版)
  • 高速系统设计实例设计分析二
  • Java—类与对象(一)
  • LLM(大语言模型)部署加速方法——PagedAttention
  • c# 倒序方法
  • 【Java】 volatile 和 synchronized 的比较及使用场景
  • 【RabbitMQ】路由模式和通配符模式的具体实现
  • 嵌入式培训之数据结构学习(三)gdb调试
  • dify 连接不上ollama An error occurred during credentials validation:
  • gitlab提交测试分支的命令和流程
  • HCIP(BFD)
  • Linux——CMake的快速入门上手和保姆级使用介绍、一键执行shell脚本
  • 硬盘序列号(SN码)4种常用查询方法分享
  • Java基础之静态代理和动态代理
  • ValueError: 4 columns passed, passed data had 51141 columns解决
  • 【消息队列】RabbitMQ基本认识
  • Git仓库迁移
  • 深度解析 Sora:从技术原理到多场景实战的 AI 视频生成指南【附学习资料包下载】