6.1 使用scikit-learn构建模型

news2024/9/25 17:21:31

6.1 使用scikit-learn构建模型

  • 6.1.1 使用sklearn转换器处理数据
  • 6.1.2 将数据集划分为训练集和测试集
  • 6.1.3 使用sklearn转换器进行数据预处理与降维
    • 1、数据预处理
    • 2、PCA降维算法
  • 代码

  scikit-learn(简称sklearn)库整合了多种机器学习算法,可以帮助使用者在数据分析过程中快速建立模型,且模型接口统一,使用起来非常方便。同时,sklearn拥有优秀的官方文档,知识点详尽,内容丰富,是入门学习sklearn的最佳内容。

  开源机器学习库:https://scikit-learn.org/stable/index.html   开源机器学习库
在这里插入图片描述
涵盖分类、回归、聚类、降维、模型选择、数据预处理六大模块
在这里插入图片描述

6.1.1 使用sklearn转换器处理数据

  sklearn提供了model_selection模型选择模块、preprocessing数据预处理模块与decomoisition特征分解模块。通过这三个模块能够实现数据的预处理与模型构建前的数据标准化、二值化、数据集的分割、交叉验证和PCA降维等工作。

datasets模块常用数据集的加载函数与解释如下表所示:
波士顿房价、鸢尾花、红酒数据集
在这里插入图片描述
  使用sklearn进行数据预处理会用到sklearn提供的统一接口——转换器(Transformer)。
  加载后的数据集可以视为一个字典,几乎所有的sklearn数据集均可以使用data,target,feature_names,DESCR分别获取数据集的数据,标签,特征名称和描述信息。

from sklearn.datasets import load_boston  # 波士顿房价数据集
from sklearn.datasets import load_breast_cancer  # 癌症数据集
# cancer = load_breast_cancer()  # 读取数据集
# print("长度: ", len(cancer))
# print("类型: ", type(cancer))
boston = load_boston()  # 读取数据集
print("长度: ", len(boston))
# print(boston)
print('data:\n', boston['data'])  # 数据
print('target:\n', boston['target'])  # 标签
print('feature_names:\n', boston['feature_names'])  # 特征名称
print('DESCR:\n', boston['DESCR'])  # 描述信息

6.1.2 将数据集划分为训练集和测试集

  在数据分析过程中,为了保证模型在实际系统中能够起到预期作用,一般需要将样本分成独立的三部分:

  • 训练集(train set):用于训练模型。
  • 验证集(validation set):用于训练过程中对模型性能评估。
  • 测试集(test set):用于检验最终的模型的性能。
      典型的划分方式是训练集占总样本的50%,而验证集和测试集各占25%。

K折交叉验证法
  当数据总量较少的时候,使用上面的方法将数据划分为三部分就不合适了。
  常用的方法是留少部分做测试集,然后对其余N个样本采用K折交叉验证法,基本步骤如下:

  • 将样本打乱,均匀分成K份。
  • 轮流选择其中K-1份做训练,剩余的一份做验证。
  • 计算预测误差平方和,把K次的预测误差平方和的均值作为选择最优模型结构的依据。

sklearn的model_selection模块提供了train_test_split函数,能够对数据集进行拆分,其使用格式如下。

sklearn.model_selection.train_test_split(*arrays, **options)

在这里插入图片描述
将数据集划分为训练集和测试集

  • train_test_split函数根据传入的数据,分别将传入的数据划分为训练集和测试集。
  • 如果传入的是1组数据,那么生成的就是这一组数据随机划分后训练集和测试集,总共2组。
  • 如果传入的是2组数据,则生成的训练集和测试集分别2组,总共4组。
  • train_test_split是最常用的数据划分方法,在model_selection模块中还提供了其他数据集划分的函数,如PredefinedSplit,ShuffleSplit等。
from sklearn.datasets import load_boston  # 波士顿房价数据集
boston = load_boston()  # 读取数据集
# 划分数据集
from sklearn.model_selection import train_test_split
X, y = boston.data, boston.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
print("X_train.shape: ", X_train.shape)
print("X_test.shape: ", X_test.shape)
print("y_train.shape: ", y_train.shape)
print("y_test.shape: ", y_test.shape)

在这里插入图片描述

6.1.3 使用sklearn转换器进行数据预处理与降维

  在数据分析过程中,各类特征处理相关的操作都需要对训练集和测试集分开操作,需要将训练集的操作规则,权重系数等应用到测试集中。如果使用pandas,则应用至测试集的过程相对烦琐,使用sklearn转换器可以解决这一困扰。
  sklearn把相关的功能封装为转换器(transformer)。使用sklearn转换器能够实现对传入的NumPy数组进行标准化处理,归一化处理,二值化处理,PCA降维等操作。转换器主要包括三个方法:fit、transform 和 fit-transform。
在这里插入图片描述

1、数据预处理

sklearn部分预处理函数与其作用
在这里插入图片描述

2、PCA降维算法

sklearn还提供了降维算法,特征选择算法,这些算法的使用也是通过转换器的方式。
在这里插入图片描述

代码

from sklearn.datasets import load_boston  # 波士顿房价数据集
boston = load_boston()  # 读取数据集
# print("长度: ", len(boston))
# # print(boston)
# print('data:\n', boston['data'])  # 数据
# print('target:\n', boston['target'])  # 标签
# print('feature_names:\n', boston['feature_names'])  # 特征名称
# print('DESCR:\n', boston['DESCR'])  # 描述信息

# 划分数据集
from sklearn.model_selection import train_test_split
X, y = boston.data, boston.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# print("X_train.shape: ", X_train.shape)
# print("X_test.shape: ", X_test.shape)
# print("y_train.shape: ", y_train.shape)
# print("y_test.shape: ", y_test.shape)
# 离差标准化
import numpy as np
from sklearn.preprocessing import MinMaxScaler
Scaler = MinMaxScaler().fit(X_train)  # 生成规则
# 将规则用于训练集
data_train = Scaler.transform(X_train)
# 将规则用于训练集
data_test = Scaler.transform(X_test)
print("训练集离差标准化前: ", np.min(X_train))
print("训练集离差标准化后: ", np.min(data_train))
print("测试集离差标准化前: ", np.max(X_test))
print("测试集离差标准化后: ", np.max(data_test))

# PCA降维
from sklearn.decomposition import PCA
pca = PCA(n_components=10).fit(data_train)  # 生成规则
# 将规则用于训练集
pca_test = pca.transform(data_test)
print("前: ", data_test.shape)
print("后: ", pca_test.shape)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1026705.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

已解决 Bug: SyntaxError - expected expression, got ‘<‘

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页: 🐅🐾猫头虎的博客🎐《面试题大全专栏》 🦕 文章图文并茂&#x1f996…

C# ref 学习1

ref 关键字用在四种不同的上下文中; 1.在方法签名和方法调用中,按引用将参数传递给方法。 2.在方法签名中,按引用将值返回给调用方。 3.在成员正文中,指示引用返回值是否作为调用方欲修改的引用被存储在本地,或在一般…

React 全栈体系(十)

第五章 React 路由 三、基本路由使用 7. 代码 - Switch 的使用 7.1 Test /* src/pages/Test/index.jsx */ import React, { Component } from reactexport default class Test extends Component {render() {return (<div><h2>Test....</h2></div>…

拓世AI|轻松涨粉的秘密武器!从选题到配图,AI工具让你事半功倍

2023年的小红书&#xff0c;发展趋势依旧昂扬向上。 最新数据显示&#xff0c;小红书拥有逾3亿的月活用户,且超过80%的用户集中在20-30岁年龄段。这代表什么?广大的年轻用户基数和消费能力!正处于购买力上升期的年轻人,是品牌最想抓住的目标用户。巨大的红利吸引了无数人下场…

自定义开发成绩查询小程序

在当今数字化时代&#xff0c;教育行业借助技术手段提高教学效果。作为老师&#xff0c;拥有一个自己的成绩查询系统可以帮助你更好地管理学生成绩&#xff0c;并提供更及时的反馈。本文将为你详细介绍如何从零开始搭建一个成绩查询系统&#xff0c;让你的教学工作更加高效和便…

MQ - 10 RocketMQ的架构设计与实现

文章目录 导图概述RocketMQ 系统架构协议和网络模块数据存储元数据存储消息数据生产者和消费者生产端消费端HTTP 协议支持和管控操作RocketMQ 从生产到消费的全过程总结导图 概述 RocketMQ 在功能、稳定性、性能层面都比 RabbitMQ 的表现更好 RocketMQ 系统架构 先来看一下 R…

驱动开发练习,platform驱动模型的使用

一.总线模型介绍 linux中将一个挂载在总线上的驱动的驱动模型分为三部分&#xff1a;device、driver和bus&#xff1b; device部分&#xff1a;用来保存设备信息对象&#xff0c;在内核中一个klist_device链表中进行管理&#xff1b; driver部分&#xff1a;用来保存驱动信息对…

Windows:虚拟内存的使用

文章目录 简介如何开启并设置虚拟内存如何查看虚拟内存参考文献 简介 windows里什么是虚拟内存&#xff1f; 其实类似Linux里的交换内存/交换页&#xff0c;即将硬盘上一块空间作为虚拟的内存&#xff0c;当物理内存不足时&#xff0c;则可以将不常用的数据从物理内存中转移到…

如何做到人声和背景音乐分离?记住这个宝藏网站~

在这个短视频盛行的时代&#xff0c;优质的背景音乐会让视频锦上添花&#xff0c;但也会造成类似的问题&#xff1a;想单独使用视频中的某一段人声&#xff0c;但会被背景音乐扰乱视听效果。这时就需要将人声和背景音乐进行分离了&#xff0c;下面来分享一个宝藏网站&#xff0…

CodeArts Check代码检查服务用户声音反馈集锦(5)

作者&#xff1a;gentle_zhou 原文链接&#xff1a;CodeArts Check代码检查服务用户声音反馈集锦&#xff08;5&#xff09;-云社区-华为云 CodeArts Check&#xff08;原CodeCheck&#xff09;&#xff0c;是自主研发的代码检查服务。建立在华为30年自动化源代码静态检查技术…

抖音seo矩阵系统源码分享-技术梳理

抖音seo源码&#xff0c;抖音seo矩阵系统源码技术搭建&#xff0c;抖音seo源码技术开发思路梳理搭建 抖音账号矩阵系统部分源代码分享 if (empty($video_item)) {$this->displayJsonError(参数错误);}$curr_platform json_decode($video_item[dv_platform], 1);$curr_plat…

StarRocks 社区:从初生到两周年的进化之路

2021 年 9 月 8 日&#xff0c;StarRocks 开源社区诞生。从第一天开始&#xff0c;我们怀揣着“打造世界一流的数据分析产品”的梦想&#xff0c;踏上了星辰大海的征途。 两年间&#xff0c;StarRocks 在 GitHub 上收获了 5.4K Stars&#xff0c;产品共迭代发布了 90 余个版本&…

数字化营销到底是什么?与传统营销有什么区别?

一、什么是数字化营销&#xff1f; 数字化 将许多复杂的、难以估计的信息通过一定的方式变成计算机能处理的0和1的二进制码&#xff0c;形成计算机里的数字孪生。物理世界被重构&#xff0c;被一一搬到数字化世界当中。 数字化营销 就是数字化的传播渠道去推广企业的产品&am…

GLTF编辑器如何快速重置模型原点

1、什么是模型原点&#xff1f; 模型原点是三维建模中的概念&#xff0c;它是指在一个虚拟三维空间中确定的参考点。模型原点通常位于模型的几何中心或基本组件的中心位置。如图所示&#xff1a; 可以看到模型的原点在模型的几何中心 2、模型原点的作用 知道了什么是模型原点&…

【Linux】Ubuntu美化主题【教程】

【Linux】Ubuntu美化主题【教程】 文章目录 【Linux】Ubuntu美化主题【教程】1. 安装优化工具Tweak2.下载自己喜欢的主题3. 下载自己喜欢的iconReference 1. 安装优化工具Tweak 首先安装优化工具Tweak sudo apt-get install gnome-tweak-tool安装完毕后在菜单中打开Tweak 然后…

spring的ThreadPoolTaskExecutor装饰器传递调用线程信息给线程池中的线程

概述 需求是想在线程池执行任务的时候&#xff0c;在开始前将调用线程的信息传到子线程中&#xff0c;在子线程完成后&#xff0c;再清除传入的数据。 下面使用了spring的ThreadPoolTaskExecutor来实现这个需求. ThreadPoolTaskExecutor 在jdk中使用的是ThreadPoolExecutor…

跨境电商运营的新趋势:自养号测评补单技术解析

当前阶段&#xff0c;亚马逊、速卖通、虾皮、lazada等主流跨境电商平台的主要推广方式仍然是广告投放&#xff0c;毕竟这是平台的主要收入来源之一。然而&#xff0c;随着越来越多的卖家进军跨境市场&#xff0c;市场竞争日趋激烈&#xff0c;传统的广告投入效果逐渐减弱。在这…

泡泡玛特大火,潮玩行业如何利用软文推广出圈

随着经济的发展&#xff0c;各类潮玩创意落地、新产品层出不穷&#xff0c;也导致潮玩行业陷入了类目繁多&#xff0c;但是新品很难出圈的困境。泡泡玛特作为年轻人中十分受欢迎的品牌&#xff0c;紧跟消费浪潮&#xff0c;成为国内营销赛道上一个让人无法忽视的潮玩IP。那么潮…

12万汉语源流词典汉字记性ACCESS\EXCEL数据库

《12万汉语源流词典汉字记性ACCESS数据库》在继承前人经验的基础上&#xff0c;注意吸收今人的研究成果&#xff0c;注重形音义的密切配合&#xff0c;尽可能历史地、正确地反映汉字形音义的发展。在字形方面&#xff0c;简要说明其结构的演变。语义解释遵循古今语义的发展变化…

408-2012

一、单项选择题&#xff08;2分/题&#xff09; 1.求整数 n&#xff08;n>0&#xff09;阶乘的算法如下其时间复杂度是______。 int fact(int n){if(n<1){return 1;}return n*fact(n-1); } A.O() B.O(n) C.O() D.O(n^2) 解答&#xff1a;B 2.已知操…