从零开始,用Python机器学习入门实战教程

用Python实现鸢尾花分类:机器学习入门实战教程

一、项目背景

机器学习最基础的应用场景之一就是分类任务。
今天我们用经典的鸢尾花数据集,通过支持向量机(SVM)算法实现花卉种类分类。这个项目能让大家快速掌握机器学习从数据处理到模型训练的全流程,即使是零基础也能轻松跟上。

二、准备工作

首先安装必要的库,打开终端输入:

pip install scikit-learn numpy pandas matplotlib

三、代码实现与详解

1. 导入工具库

# 导入数据加载工具
from sklearn.datasets import load_iris
# 导入数据拆分工具
from sklearn.model_selection import train_test_split
# 导入支持向量机分类器
from sklearn.svm import SVC
# 导入评估指标
from sklearn.metrics import classification_report, confusion_matrix
# 导入数据处理工具
import pandas as pd
import numpy as np

代码解释:这里引入了数据加载、模型训练、结果评估需要的各种工具,其中scikit-learn是机器学习常用库,包含大量数据集和算法模型。

2. 加载并查看数据

# 加载鸢尾花数据集
iris = load_iris()
# 把数据转成DataFrame格式方便查看
data = pd.DataFrame(iris.data, columns=iris.feature_names)
data['target'] = iris.target

# 查看前5行数据
print("数据前5行:")
print(data.head())

# 查看数据统计信息
print("\n数据统计信息:")
print(data.describe())

运行结果解读

  • 数据包含花萼长度、花萼宽度、花瓣长度、花瓣宽度4个特征
  • target字段是标签,0代表山鸢尾,1代表变色鸢尾,2代表维吉尼亚鸢尾
  • 通过describe()能看到每个特征的均值、标准差、最值等信息,了解数据分布

3. 拆分训练集和测试集

# 特征数据(花的各项尺寸)
X = iris.data
# 标签数据(花卉种类)
y = iris.target

# 拆分数据,70%训练,30%测试
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.3, random_state=42
)

关键参数说明

  • test_size=0.3:表示30%数据作为测试集
  • random_state=42:固定随机种子,保证每次运行拆分结果一致,方便复现

4. 训练支持向量机模型

# 初始化支持向量机分类器
model = SVC(kernel='linear')  # 使用线性核函数

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

模型选择思路

  • SVM适合中小规模数据集,鸢尾花数据量小(150条)非常适合
  • kernel='linear'表示使用线性核,处理线性可分数据效率高

5. 模型预测与评估

# 用测试集做预测
y_pred = model.predict(X_test)

# 输出混淆矩阵
print("混淆矩阵:")
print(confusion_matrix(y_test, y_pred))

# 输出分类报告
print("\n分类报告:")
print(classification_report(y_test, y_pred))

结果分析

  • 混淆矩阵:行是真实标签,列是预测标签。对角线数值越高,说明分类越准
  • 分类报告
    • precision:精确率,预测为某类中真实属于该类的比例
    • recall:召回率,真实某类中被正确预测的比例
    • f1-score:精确率和召回率的调和平均,越接近1越好
    • 从结果看,模型对三类花卉的分类准确率都很高,说明效果很好

四、完整代码整合

# 完整代码
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import classification_report, confusion_matrix
import pandas as pd

# 加载数据
iris = load_iris()
data = pd.DataFrame(iris.data, columns=iris.feature_names)
data['target'] = iris.target

# 拆分数据
X = iris.data
y = iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 训练模型
model = SVC(kernel='linear')
model.fit(X_train, y_train)

# 评估模型
y_pred = model.predict(X_test)
print("混淆矩阵:")
print(confusion_matrix(y_test, y_pred))
print("\n分类报告:")
print(classification_report(y_test, y_pred))

五、项目扩展思考

  1. 换算法尝试:可以把SVM换成随机森林(RandomForestClassifier)、K近邻(KNeighborsClassifier),对比不同算法效果
  2. 数据可视化:用matplotlib把花的特征可视化,比如绘制花瓣长度和宽度的散点图,观察不同类别分布
  3. 调参优化:调整SVM的C参数(正则化系数),尝试不同核函数(如kernel='rbf'),看模型表现是否提升

通过这个项目,我们掌握了机器学习的标准流程:数据加载→数据预处理→模型训练→结果评估。鸢尾花分类只是入门,后续可以尝试更复杂的数据集,比如手写数字识别、房价预测等,但核心流程都是相通的。现在就动手运行代码,感受机器学习的魅力吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞哥知行录

打赏的都功德无量,随缘乐助

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值