如何在Python中使用scikit-learn机器学习库。

冬浩小哥_2590

冬浩小哥_2590

2023-04-22

2239人浏览

转载

前言

scikit-learn是python中最流行的机器学习库之一,它提供了各种各样的机器学习算法和工具,包括分类、回归、聚类、降维等。

scikit-learn的优点有:

  • 简单易用:scikit-learn 的接口简单易懂,可以让用户很容易地上手进行机器学习。统一的API:scikit-learn 的 API 非常统一,各种算法的使用方法基本一致,使得学习和使用变得更加方便。

  • 大量实现了机器学习算法:scikit-learn 实现了各种经典的机器学习算法,而且提供了丰富的工具和函数,使得算法的调试和优化变得更加容易。

  • 开源免费:scikit-learn 是完全开源的,而且是免费的,任何人都可以使用和修改它的代码。

  • 高效稳定:scikit-learn 实现了各种高效的机器学习算法,可以处理大规模数据集,并且在稳定性和可靠性方面表现出色。scikit-learn因为API非常的统一而且模型相对较简单所以非常适合入门机器学习。这里我的推荐方式是结合官方文档进行学习,不仅有每个模型的适用范围介绍还有代码样例。

线性回归模型-LinearRegression

LinearRegression模型是一种基于线性回归的模型,适用于解决连续变量的预测问题。该模型的基本思想是建立一个线性方程,将自变量与因变量之间的关系建模为一条直线,并利用训练数据拟合该直线,从而求出线性方程的系数,再用该方程对测试数据进行预测。

LinearRegression模型适用于自变量和因变量之间存在线性关系的问题,例如房价预测、销售预测、用户行为预测等。当然,当自变量和因变量之间的关系为非线性时,LinearRegression模型的表现会比较差。此时可以采用多项式回归、岭回归、Lasso回归等方法来解决。

准备数据集

在抛开其它因素影响后,学习时间和学习成绩之间存在着一定的线性关系,当然这里的学习时间指的是有效学习时间,表现为随着学习时间的增加成绩也会增加。所以我们准备一份学习时间和成绩的数据集。数据集内部分数据如下:

学习时间,分数0.5,150.75,231.0,141.25,421.5,211.75,281.75,352.0,512.25,612.5,49

使用LinearRegression

确定特征和目标

在学习时间和成绩间,学习时间为特征,也即自变量;成绩为标签也即因变量,所以我们需要在准备好的学习时间和成绩数据集中提取特征和标签。

import pandas as pd
import numpy as np
from sklearn.metrics import r2_score, mean_squared_error
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
# 读取学习时间和成绩CSV数据文件
data = pd.read_csv('data/study_time_score.csv')
# 提取数据特征学习时间
X = data['学习时间']
# 提取数据目标(标签)分数
Y = data['分数']

划分训练集和测试集

macOS UI 自动化技能包 —— 用 Python 控制你的 Mac
macOS UI 自动化技能包 —— 用 Python 控制你的 Mac

让 macOS 自动化像说话一样简单 —— 用代码控制你的 Mac,无需学习 AppleScript 系统要求 macOS 14+ (Sonoma) Python 3.9+ 需要开启:辅助功能 + 屏幕录制权限

下载

在特征及标签数据准备好以后,使用scikit-learn的LinearRegression进行训练,将数据集划分为训练集和测试集。

"""
将特征数据和目标数据划分为测试集和训练集
通过test_size=0.25将百分之二十五的数据划分为测试集
"""
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.25, random_state=0)
x_train = X_train.values.reshape(-1, 1)
model.fit(x_train, Y_train)

选择模型,对数据进行拟合

将测试集和训练集准备好以后,我们就可以选择合适的模型对训练集进行拟合,以便能够预测出其它特征对应的目标

# 选择模型,选择模型为LinearRegression
model = LinearRegression()
# Scikit-learn中,机器学习模型的输入必须是一个二维数组。我们需要将一维数组转换为二维数组,才能在模型中使用。
x_train = X_train.values.reshape(-1, 1)
# 进行拟合
model.fit(x_train, Y_train)

得到模型参数

由于数据集只包含学习时间和成绩两个是一个很简单的线性模型,其背后的数学公式也即y=ax+b,其中y因变量也就是成绩, x自变量也即学习时间。

"""
输出模型关键参数
Intercept: 截距 即b
Coefficients: 变量权重 即a
"""
print('Intercept:', model.intercept_)
print('Coefficients:', model.coef_)

回测

上面拟合模型只用到了测试集数据,下面我们需要使用测试集数据对模型的拟合进行一个回测,在使用训练集拟合后,我们就可以对特征测试集进行预测,通过得到的目标预测结果与实际目标的值进行比较,我们就可以得到模型的拟合度了。

# 转换为n行1列的二维数组
x_test = X_test.values.reshape(-1, 1)
# 在测试集上进行预测并计算评分
Y_pred = model.predict(x_test)
# 打印测试特征数据
print(x_test)
# 打印特征数据对应的预测结果
print(Y_pred)
# 将预测结果与原特征数据对应的实际目标值进行比较,从而获得模型拟合度
# R2 (R-squared):模型拟合优度,取值范围在0~1之间,越接近1表示模型越好的拟合了数据。
print("R2:", r2_score(Y_test, Y_pred))
  • 程序运行结果

  • 根据上述的代码我们需要确定LinearRegression模型的拟合度,也就是这些数据到底适合不适合使用线性模型进行拟合,程序的运行结果如下:

预测结果:
[47.43726068 33.05457106 49.83437561 63.41802692 41.84399249 37.84880093
 23.46611131 37.84880093 26.66226456 71.40841004 18.67188144 88.9872529
 63.41802692 42.6430308  21.86803469 69.81033341 66.61418017 33.05457106
 58.62379705 50.63341392 18.67188144 41.04495418 20.26995807 77.80071653
 28.26034119 13.87765157 61.81995029 90.58532953 77.80071653 36.25072431
 84.19302303]
R2: 0.8935675710322939

Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!

相关文章

python速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

python

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Python 机器学习入门与 Scikit-Learn 实战
Python 机器学习入门与 Scikit-Learn 实战

面向机器学习初学者,以 Scikit-Learn 为核心工具,讲解机器学习基本概念(监督学习/无监督学习/模型评估)、数据预处理(标准化/归一化/缺失值填充/特征编码)、常用分类算法(逻辑回归/决策树/随机森林/SVM/KNN)、回归算法(线性回归/岭回归/Lasso)、无监督聚类(K-Means/DBSCAN)、交叉验证与超参数调优(GridSearch/RandomSearch)、混淆矩阵与 ROC/AUC 模型评估指标,帮助开发者

2026.04.24

375

29

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

2023.10.19

3188

3

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

2025.10.17

5129

12

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2025.12.29

3849

9

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

2026.01.19

486

15

页面置换算法
页面置换算法

页面置换算法是操作系统中用来决定在内存中哪些页面应该被换出以便为新的页面提供空间的算法。本专题为大家提供页面置换算法的相关文章,大家可以免费体验。

2023.08.14

6416

4

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

2026.10.28

40

16

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

2026.10.28

20

15

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

2026.10.28

40

10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Uvicorn官方安装与入门手册
Uvicorn官方安装与入门手册

共0课时 | 0人学习

Python uv官方项目管理指南
Python uv官方项目管理指南

共0课时 | 0人学习

Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习