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

Scikit-learn:从零开始构建你的第一个机器学习模型

Scikit-learn:从零开始构建你的第一个机器学习模型

导语:你是否对机器学习充满好奇,却不知从何下手?作为 Python 中最受欢迎的机器学习库,Scikit-learn 以其简洁的 API 和丰富的功能,成为无数开发者入门和实践的首选。本文将手把手带你走完从数据准备到模型训练、评估的全过程,让你轻松构建属于自己的第一个机器学习模型。


在这里插入图片描述

✅ 1. 准备工作:环境与安装

在开始之前,请确保你的电脑已经安装了 Python 和 pip。我们的第一个任务就是安装 Scikit-learn 以及数据处理常用的库 numpypandas

打开你的终端或命令行,输入以下命令:

pip install scikit-learn numpy pandas

安装成功后,我们就拥有了进入机器学习世界的“三剑客”。


🚀 2. 实战开始:构建你的第一个分类模型

我们将使用一个非常经典的数据集——鸢尾花(Iris)数据集。这是一个入门级的多分类问题,我们的目标是根据花朵的四个特征(花萼长度、花萼宽度、花瓣长度、花瓣宽度)来判断它属于哪个鸢尾花种类。

2.1. 加载数据

Scikit-learn 内置了鸢尾花数据集,我们可以用一行代码轻松加载。

from sklearn.datasets import load_iris# 加载数据集
iris = load_iris()# iris 是一个类字典对象,我们看看里面有什么
print(iris.keys())
# 输出: dict_keys(['''data''', '''target''', '''frame''', '''target_names''', '''DESCR''', '''feature_names''', '''filename''', '''data_module'''])
  • data: 包含了花朵的四个特征数据(一个 n x 4 的数组)。
  • target: 包含了每朵花对应的类别(一个长度为 n 的数组,用 0, 1, 2 表示不同种类)。
  • feature_names: 特征的名称。
  • target_names: 类别的名称。

为了更直观地观察数据,我们通常会使用 pandas 将其转换为 DataFrame。

import pandas as pd# 创建 DataFrame
df = pd.DataFrame(data=iris.data, columns=iris.feature_names)
df['''target'''] = iris.target# 查看前 5 行数据
print(df.head())

输出结果:

   sepal length (cm)  sepal width (cm)  petal length (cm)  petal width (cm)  target
0                5.1               3.5                1.4               0.2       0
1                4.9               3.0                1.4               0.2       0
2                4.7               3.2                1.3               0.2       0
3                4.6               3.1                1.5               0.2       0
4                5.0               3.6                1.4               0.2       0
2.2. 划分训练集与测试集

为了评估模型的泛化能力,我们需要将数据分为两部分:一部分用于训练模型(训练集),另一部分用于测试模型的表现(测试集)。这就像学生备考,一部分题用来学习,另一部分题用来模拟考试。

Scikit-learn 的 train_test_split 函数可以轻松完成这个任务。

from sklearn.model_selection import train_test_split# X 是特征数据,y 是目标标签
X = df.drop('''target''', axis=1)
y = df['''target''']# 划分数据集,80% 用于训练,20% 用于测试
# random_state 是为了保证每次划分结果都一样,便于复现
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)print(f"训练集大小: {X_train.shape}")
print(f"测试集大小: {X_test.shape}")
2.3. 选择并训练模型

对于初学者,K-近邻(K-Nearest Neighbors, KNN) 是一个非常直观且容易理解的算法。它的核心思想是:一个样本的类别由其最近的 K 个邻居的类别决定。

from sklearn.neighbors import KNeighborsClassifier# 创建一个 KNN 分类器实例,我们选择 3 个邻居
knn = KNeighborsClassifier(n_neighbors=3)# 使用训练数据来“喂养”模型
knn.fit(X_train, y_train)print("✅ 模型训练完成!")

fit 方法是 Scikit-learn 中所有模型训练的入口,只需一行代码,模型就从训练数据中学会了如何分类。

2.4. 进行预测

模型训练好后,我们就可以用它来对测试集进行预测,看看它在新数据上的表现如何。

# 对测试集进行预测
y_pred = knn.predict(X_test)# 打印预测结果和真实结果的对比
print("预测结果:", y_pred)
print("真实结果:", y_test.values)
2.5. 评估模型

预测结果出来了,但模型做得好不好呢?我们需要一个量化的指标。准确率(Accuracy) 是最常用的评估指标之一,它表示模型预测正确的样本占总样本的比例。

from sklearn.metrics import accuracy_score, classification_report# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"模型准确率: {accuracy:.4f}")# 查看更详细的分类报告(精确率、召回率、F1-score)
print("
分类报告:")
print(classification_report(y_test, y_pred, target_names=iris.target_names))

输出结果:

模型准确率: 1.0000分类报告:precision    recall  f1-score   supportsetosa       1.00      1.00      1.00        10versicolor       1.00      1.00      1.00         9virginica       1.00      1.00      1.00        11accuracy                           1.00        30macro avg       1.00      1.00      1.00        30
weighted avg       1.00      1.00      1.00        30

惊人的 100% 准确率!这在真实世界的复杂问题中很少见,但对于简单的鸢尾花数据集,KNN 表现得非常出色。


💡 探索与进阶:AI 时代的学习利器

恭喜你,已经成功构建并评估了你的第一个机器学习模型!但这仅仅是开始。机器学习的世界广阔无垠,有更复杂的算法、更大的数据集和更高级的模型调优技巧在等着你。

在探索的道路上,善用工具能让你事半功倍。特别是在 AI 时代,强大的 AI 助手能帮你快速解决编程难题、理解复杂概念,甚至生成代码。


Ai 产品推荐

😳 0v0 AI 助手推荐、官网:https://0v0.pro

  • 🆓 开源模型全免费:Llama、Qwen、Deepseek 等
  • 😲 基础模型全免费:gpt-4o、o4-mini 、gpt-5-mini 等
  • ♾️ 对话真正无限制:不限时间、不限次数
  • 🫡 每周免费一个旗舰模型:本周免费:gpt-5 ,不限使用!


LLM AI API 推荐 🗨️

🖐️ 按量计算、官网:https://llm-all.pro

  • 😊 opneai 、cluade、genimi、gork 等模型:0.5:1刀 、官方 1 折
  • 🤓 国内模型 豆包、千问 、deepseek、kimi 等:2 - 6 折
  • ☺️ 除了以上模型外,还包含全球各类以上未列出的模型

👺 按次计算、官网:https://fackai.chat

  • 国内外全模型
  • 1 :100次,性价比推荐


当你遇到 Scikit-learn 的某个函数不理解,或者想尝试用其他模型(如逻辑回归、支持向量机)解决同样的问题时,不妨向这些 AI 助手提问,它们能为你提供即时的帮助和代码示例。


总结

本文通过一个完整的实例,展示了使用 Scikit-learn 构建机器学习模型的基本流程:

  1. 加载数据 (load_iris)
  2. 数据预处理 (train_test_split)
  3. 选择并训练模型 (KNeighborsClassifier, fit)
  4. 进行预测 (predict)
  5. 评估模型 (accuracy_score, classification_report)

这个流程是解决许多监督学习问题的通用范式。希望这篇文章能为你打开机器学习的大门。接下来,你可以尝试更换不同的 n_neighbors 值,或者换用 sklearn.linear_model.LogisticRegression 等其他分类器,看看结果有何不同。

如果你觉得这篇文章对你有帮助,请不要吝啬你的 点赞 👍收藏 ⭐,这对我非常重要!也欢迎在评论区留下你的问题和想法,我们一起交流进步!


文章转载自:

http://I96JFdoN.Lhxdq.cn
http://gOM5Q5LP.Lhxdq.cn
http://rr6nYBCJ.Lhxdq.cn
http://SulpObmN.Lhxdq.cn
http://eRBBE5Se.Lhxdq.cn
http://SOSepEIQ.Lhxdq.cn
http://pKvzaw9W.Lhxdq.cn
http://iOp7temZ.Lhxdq.cn
http://FS7RKRUf.Lhxdq.cn
http://77IzZADK.Lhxdq.cn
http://qYFDCerQ.Lhxdq.cn
http://01XIblqF.Lhxdq.cn
http://qK2K11Dd.Lhxdq.cn
http://fey9QHZF.Lhxdq.cn
http://eIHRMpT9.Lhxdq.cn
http://DPTG0pTi.Lhxdq.cn
http://MqwIIaR0.Lhxdq.cn
http://L0LfjjYy.Lhxdq.cn
http://MdX9npzn.Lhxdq.cn
http://XLqLlMzn.Lhxdq.cn
http://2LIvbZof.Lhxdq.cn
http://PmBBvvYA.Lhxdq.cn
http://zLITzhd8.Lhxdq.cn
http://odVQzm7G.Lhxdq.cn
http://zZPcPAAs.Lhxdq.cn
http://vzB23cRN.Lhxdq.cn
http://AYOQdhno.Lhxdq.cn
http://xM517R1W.Lhxdq.cn
http://w6kLHEbO.Lhxdq.cn
http://gG4N0Zlt.Lhxdq.cn
http://www.dtcms.com/a/382564.html

相关文章:

  • 如何快速获取全机硬件详细参数?
  • 嵌入式ARM架构学习7——时钟、定时器
  • 【C++练习】17.C++求两个整数的最大公约数(GCD)
  • SQL-字符串函数、数值函数、日期函数
  • Redis内存回收:过期策略与淘汰策略
  • 【css学习笔记9】品优购项目
  • 动态规划解决网格路径问题
  • 金融科技:企业和机构银行
  • C++ 异常
  • One-hot encoding|独热编码
  • AI论文速读 | VisionTS++:基于持续预训练视觉主干网络的跨模态时间序列基础模型
  • 如何学习VBA_3.3.9:利用“搭积木”思想,快速有效地完成你的代码
  • 《使用深度学习统一时间相位展开框架》论文总结
  • Windows下使用PerfMon进行性能监控并记录日志
  • 微信小程序开发教程(十二)
  • 【攻防实战】记一次攻防实战全流程
  • 【编号520】全国4500多个地震灾害点位数据(2021.2-2025.8)
  • 牛客网习题题解(持续更新中...)
  • 2025.8.20--python基础温习
  • PCIE地址空间介绍
  • (三)BLE协议栈协议分层架构设计详解--图文结合通俗易懂
  • 主板硬件研发基础--DP/DP++
  • 287. 寻找重复数
  • 《从像素到认知:用 Keras 构建图像分类 CNN 的实战指南》
  • 深入探索 Python 元组:从基础到高级应用
  • Java 黑马程序员学习笔记(进阶篇5)
  • DENOISING DIFFUSION IMPLICIT MODELS
  • Gradle 安装与配置 环境配置 仓库管理 项目介绍 优缺点介绍
  • Replit CEO演讲:软件开发的未来与AI代理革命
  • LeetCode 3541.找到频率最高的元音和辅音:计数(位运算)