第1步 数据预处理

2023-05-16


文章目录

  • 前言
  • 一、安装依赖环境
  • 二、导入依赖包
  • 三、导入数据集
    • 保姆级操作演示:
  • 四、处理丢失数据
    • 保姆级操作演示
  • 五、解析分类数据
    • 保姆级操作演示
  • 六、拆分数据集为训练集合和测试集合
  • 七、特征缩放
  • 总结


前言

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


一、安装依赖环境

开始之前,要确保Anaconda、Python和sklearn已经成功安装在你的电脑上,具体可以参照上一期教程。

二、导入依赖包

使用import导入我们安装的几个依赖包:

import numpy as np  #导入numpy包,简写为np
import pandas as pd  #导入pandas包,简写为pd

三、导入数据集

这一步将通过pandas导入我们的数据集,请注意数据集文件要在运行python的当前目录下:

dataset = pd.read_csv('Day 1 Data.csv')  #读取csv文件
X = dataset.iloc[ : , :-1].values  # 选择X数据集是第几行第几列 .iloc[行,列]
Y = dataset.iloc[ : , 3].values  # : 表示全部行 or 列;[a]第a行 or 列
print("Step 2: Importing dataset")
print("X")
print(X)
print("Y")
print(Y)

保姆级操作演示:

1、打开spyder,设置默认的工作路径(也就是你的数据集存在在哪里),比如我的就是:E:\ML\100-Days-Of-ML-Code-master\datasets。
在这里插入图片描述
2、输入代码dataset = pd.read_csv(‘Day 1 Data.csv’)读取csv文件数据,按F9逐步运行每一行,导入数据,导入的数据叫做dataset。
在这里插入图片描述在这里插入图片描述
3、接下来要选择X和Y,也就是自变量和应变量;在这个例子中,X是前三列(Country、Age、Salary),Y是最后一列或者说第四列(Purchased)。
我们来看代码:X = dataset.iloc[ : , :-1].values。iloc是一个函数,功能是根据标签的所在位置,从0开始计数,先选取行再选取列。比如dataset.iloc[1,1]就是取第二行,第二列,也就是27(python的行从0开始计数)。
在这里插入图片描述
现在X是前三列,准确来说是第一列(python的第0列)到第三列(python的第2列),每一列要所有的行,代码就是dataset.iloc[:,0:2],其中,0:2表示第一列到第三列(python从0开始计数),单独一个:表示所有行。运行发现有问题,怎么第三列(python的第2列)没有读取?当我们使用dataset.iloc[:,0:3],第三列(python的第2列)出来了。看出端倪来了么?这个[:,0:n]中的n是不算的,只读取到第n-1列,这样是不是清晰了。
在这里插入图片描述
有同学发现了吧,代码怎么是dataset.iloc[ : , :-1]。在这个例子中,dataset.iloc[ : , :-1]和dataset.iloc[:,0:3]是等效的, :-1表示从第一列(python的第0列)到倒数第二列(python的第二列),至于这个-1嘛,就是从右往左数第一列(python从右往左又是从1开始计数,根据上面提到的n-1原则,此时python只读取到倒数第二列,也就是-2列)。没错!那个0是可以省略的。在这个例子中,倒数第二列不就是正数第三列(python的第二列)么。综上,dataset.iloc[ : , :-1] = dataset.iloc[ : , :3] = dataset.iloc[ : , 0:3],到这里迷糊了吧,不清楚就一个一个做测试就好。最后,加上一个.values ,转化成python认的数值型,最后在赋值到X和Y,进行后续的运算。
在这里插入图片描述
最后就是打印了,print(“Step 2: Importing dataset”)、print(“X”)这种带有双引号的,说明打印的是双引号包含的文字,属于字符型;而print(X)、print(Y)属于打印具体的内容,X和Y不就是我们之前划分出来的自变量和应变量么。

四、处理丢失数据

使用sklearn的内置方法Imputer,可以将丢失的数据用特定的方法补全。
这里我们使用整列的平均值来替换:

from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_values=np.nan,strategy='mean')
X[:,1:3] = imputer.fit_transform(X[:,1:3])
print("---------------------")
print("Step 3: Handling the missing data")
print("step2")
print("X")
print(X)

保姆级操作演示

1、1、from sklearn.impute import SimpleImputer,这一类from XXX import XXX是常用的语句,表示的是从sklearn这个大函数包,里面的impute这个小函数包,调用具体的函数,SimpleImputer。看出来了吧,这三个函数是逐一被包含的。简单介绍一下python包的构成,python的包都安装在site-packages中,sklearn包就是site-packages下的子文件夹,同理,impute是sklearn下的一个子文件夹,打开impute下的__init__.py文件,就可以看到SimpleImputer了。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
说这么多,就是为了让大家了解python包的调用逻辑,因为随着版本更新,不少包或者函数会有位置变动,这时候就需要根据位置来重新修改调用语句。
SimpleImputer参数详解:
class sklearn.impute.SimpleImputer(*, missing_values=nan, strategy=‘mean’, fill_value=None, verbose=0, copy=True, add_indicator=False)
参数含义:
missing_values:int, float, str, (默认)np.nan或是None, 即缺失值是什么。
strategy:空值填充的策略,共四种选择(默认)mean、median、most_frequent、constant。mean表示该列的缺失值由该列的均值填充。median为中位数,most_frequent为众数。constant表示将空值填充为自定义的值,但这个自定义的值要通过fill_value来定义。
常用方法:还需配合fit_transform(X)使用:
imputer = SimpleImputer(missing_values=np.nan,strategy=‘mean’)
X[:,1:3] = imputer.fit_transform(X[:,1:3])
这里只需要对X的第二列和第三列做缺失值处理X[:,1:3]

五、解析分类数据

从第3步的输出结果中我们可以看到分类数据Y中有很多"Yes"/“No"之类的字符标签,X中有很多国家的字符名称比如"France” , “Spain”,这些字符Python是不认识的,因此需要将其解析成数字:

from sklearn.preprocessing import LabelEncoder, OneHotEncoder
from sklearn.compose import ColumnTransformer
labelencoder_X = LabelEncoder()
X[ : , 0] = labelencoder_X.fit_transform(X[ : , 0])
onehotencoder = ColumnTransformer([('encoder', OneHotEncoder(), [0])], remainder='passthrough')
X = onehotencoder.fit_transform(X)
labelencoder_Y = LabelEncoder()
Y =  labelencoder_Y.fit_transform(Y)
print("---------------------")
print("Step 4: Encoding categorical data")
print("X")
print(X)
print("Y")
print(Y)

保姆级操作演示

1、标签编码(LabelEncoder)知识点解析:
顾名思义,将红,蓝,绿转化为0,1,2就是标签编码,将转换成连续的数值型变量。即是对不连续的数字或者文本进行编号。
2、独热编码(OneHotEncoder)知识点解析:
对于离散型数据,比如一个特征为颜色,他一共有三个值,分别为红,蓝,绿,按照正常想法,我们可能认为,令红色=0,蓝色=1,绿色=2,这样对数据进行了编码,但是,如果把这些数据放到需要计算距离的或者其他模型中,模型会认为重要性是绿色>蓝色>红色。但这并不是我们的让机器学习的本意,只是想让机器区分它们,并无大小比较之意。所以这时标签编码是不够的,需要进一步转换。我们可以设置,这个特征有三个取值,我们可以设置三列,分别是红,蓝,绿,对于红色,它的取值是1,0,0,对于蓝色,它的取值是0,1,0,而对于绿色,它的取值是0,0,1。如此一来每两个向量之间的距离都是根号2,在向量空间距离都相等,所以这样不会出现偏序性,基本不会影响基于向量空间度量算法的效果。
3、ColumnTransformer()函数知识点解析:
ColumnTransformer()在Python的机器学习库scikit-learn中,可以选择地进行数据转换。要使用ColumnTransformer,必须指定一个转换器列表。每个转换器是一个三元素元组,用于定义转换器的名称,要应用的转换以及要应用于其的列索引,例如:(名称,对象,列)。

六、拆分数据集为训练集合和测试集合

我们知道,为了让机器学习到分类的特征,我们需要先“训练”机器,这时候就需要训练集。训练结束后需要测试刚训练得到的模型的效果,因此又需要测试集。
为了实现这个目的,将刚获得的数据集进行拆分,其中20%为测试集,80%为训练集。使用sklearn的train_test_split可以很容易做到:

from sklearn.cross_validation import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split( X , Y , test_size = 0.2, random_state = 0)

七、特征缩放

如第5步的结果显示,数据集中存在一些值比如[4000, 6000, 10000, 100], 这样会导致一个问题:越大的值,权重越大,但实际上不论这个值多大,它的权重都应该是相同的,这时候就需要引入StandardScaler进行数据标准化了:

from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.transform(X_test)

总结

做完数据上述步骤后,就可以进行模型的训练了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第1步 数据预处理 的相关文章

  • 第1步 数据预处理

    文章目录 前言一 安装依赖环境二 导入依赖包三 导入数据集保姆级操作演示 xff1a 四 处理丢失数据保姆级操作演示 五 解析分类数据保姆级操作演示 六 拆分数据集为训练集合和测试集合七 特征缩放总结 前言 一 安装依赖环境 开始之前 xf
  • VGG数据预处理

    参考文献 Very Deep Convolutional Networks for Large Scale Image Recognition 本文的目的 目标检测 语义分割等领域都会涉及到预训练模型 xff0c 一般是在ImageNet上
  • PyTorch学习(3):数据预处理

    PyTorch学习 xff08 3 xff09 数据预处理 Pytorch官方文档 xff1a https pytorch cn readthedocs io zh latest Pytorch学习文档 xff1a https github
  • VINS-Mono学习(一)——数据预处理

    void push back double dt const Eigen Vector3d amp acc const Eigen Vector3d amp gyr dt buf push back dt acc buf push back
  • 数据预处理-数据清洗之numpy访问与计算

    如何访问numpy数组中的元素 xff1f 采用索引或者切片的方式 span class token comment 导入包 span span class token keyword import span numpy span clas
  • 提高机器学习模型性能的五个关键方法

    如何提高机器学习模型性能 可从五个关键方面入手 1 数据预处理 2 特征工程 3 机器学习算法 4 模型集成与融合 5 数据增强 以下是各个方面的具体分析和方法 说明 1 这里主要是各个关键方法的知识汇总梳理 便于集中学习 具体的实际应用内
  • R语言tidyr包数据变换函数(dplyr包组合使用,完美)

    日常的数据预处理中 不可避免的会遇到数据的各种变形 转换 R语言中的tidyr包函数解决了数据变形上的问题 变量 列的转换 1 宽数据变长数据 gather data key key value value na rm FALSE conv
  • fit、transform、fit_transform的区别,为什么训练集用 fit_transform , 测试集用 transform

    三个函数的使用具体解释 在数据预处理中的应用 1 只涉及一组数据 fit data 对数据进行拟合 获得了数据的均值 最大最小 标准差等属性值 transform data 利用 fit data 获取到的属性对数据做预处理 如标准化 归一
  • SPSS数据拆分(分组)

    本文中以CPI 消费者价格指数 分析为例 数据中分别给出了全国31个省市 在12个月 2018年8月 2019年7月 中的CPI 数据由 中国统计局 官网导出 引入 当我们从Excel文件导入数据后 如下图左 当我们分析的时候 我们希望得到
  • Numpy、Pandas使用大全与各参数详解

    目录 一 numpy 1 属性 方法与操作 1 属性 2 方法 3 操作 2 文件读取与保存 1 文件读取 2 文件保存 3 矩阵生成 二 Pandas 1 属性与方法 1 属性 2 方法 2 数据选取 1 取行 2 取列 3 数据处理 1
  • 数据预处理方式合集

    删除空行 del all None value data all dropna axis 1 how all inplace True 删除空列 del all None value data all dropna axis 0 how a
  • 目标检测之数据预处理

    一 数据介绍 AI识虫数据集结构如下 提供了2183张图片 其中训练集1693张 验证集245 测试集245张 包含7种昆虫 分别是Boerner Leconte Linnaeus acuminatus armandi coleoptera
  • Python处理缺失数据

    目录 1 缺失原因 2 缺失类型 3 处理方法 3 1 删除 3 1 1 统计每列缺失值的个数 3 1 2 直接删除含有缺失值的行 3 1 3 直接删除含有缺失值的列 3 1 4 只删除全是缺失值的行 3 1 5 保留至少有4个非缺失值的行
  • 2. 特征缩放(归一化)

    特征缩放 为了消除数据特征之间的量纲影响 我们需要对特征进行归一化处理 使得不同指标之间具有可比性 例如 分析一个人的身高和体重对健康的影响 如果使用 米 m 和 千克 kg 作为单位 那么分析出来的结果显然会倾向于数值差别比较大的体重特征
  • python数据清洗 —— re.split()划分字符串

    需求 对于一行字符串 route views6 routeviews org 141694 2a0c b641 24f fffe 7 184891 CN apnic OTAKUJAPAN AS Otaku Limited CN 要将其划分成
  • sklearn机器学习包中的对原始数据的预处理及训练集、测试集的分割

    sklearn机器学习包中的对原始数据的预处理及训练集 测试集的分割 一 数据预处理 1 标准化 2 归一化 3 最小最大标准化 4 缺失值插补 二 训练集测试集的划分 一 数据预处理 sklearn preprocessing 包提供了几
  • 气候数据处理代码实现

    案例 根据站点降雨量日数据求月总降雨量 年总降雨量 月降雨天数 年降雨天数等 数据 部分数据如下 统计结果
  • Q3.Numpy_统计分析-排序、去重和重复、搜索和计数函数

    Part 1 排序函数 numpy排序方式主要分为直接排序和间接排序两种 直接排序是指对数值直接进行排序 间接排序是指根据一个或多个键对数据集进行排序 在numpy中 直接排序常用sort 函数 间接排序常用argsort 函数和lexso
  • UTSC-TK2016工具集使用笔记

    1 Pcap2Session ps1 对原始流量文件进行切分 以会话 所有层 会话 应用层 流 所有层 流 应用层的形式对原始流量文件进行切分 删除文件长度为0的数据 删除重复文件 生成2 Session文件夹 2 ProcessSessi
  • 什么是GPT?初学者如何使用GPT?GPT入门学习

    灵魂发问 GPT科研中没有那么神 GPT账号不能轻松使用 GPT怎样才融合到我的科研中 别人用的非常酷 为什么我用的不行 让GPT成为您的科研加速器 GPT对于每个科研人员已经成为不可或缺的辅助工具 不同的研究领域和项目具有不同的需求 如在

随机推荐

  • 树莓派介绍

    文章目录 一 树莓派介绍二 树莓派分类 一 树莓派介绍 树莓派 xff0c xff08 英语 xff1a Raspberry Pi xff0c 简写为RPi xff0c 别名为RasPi RPI xff09 是为学习计算机编程教育而设计 x
  • Docker核心技术-联合文件系统

    联合文件系统 xff08 UnionFS xff09 是一种分层 轻量级并且高性能的文件系统 xff0c 它支持对文件系统的修改作为一次提交来一层层的叠加 xff0c 同时可以将不同目录挂载到同一个虚拟文件系统下 联合文件系统是 Docke
  • Spark SQL与Hive SQL解析执行流程

    转载专用 xff1a 读到了好文章 xff0c 用于分享收藏 xff0c 侵权删 转发自大佬 xff1a 数据人生coding xff0c https yuanmore blog csdn net type 61 blog 转发自大佬 xf
  • 银河麒麟V10服务器系统安装教程及注意事项

    系统安装 1 引导安装 从U盘引导安装时首先进入的是安装引导页面 xff0c 如下图 xff1a 使用向上方向键 lt gt 选择 Install Kylin Linux Advanced Server V10 xff0c 按进入安装过程
  • 1012 - iOS之View Controllers的理解

    需求现在只是把navigationController的导航栏字体给去掉 xff0c 不过既然都看了 xff0c 那就直接刚一下吧 阅读官网文档的顺序 xff1a Managing Content in Your App 39 s Wind
  • CentOS7 linux下yum安装redis以及使用 及 外网访问

    一 安装redis 1 检查是否有redis yum 源 1 yum install redis 2 下载fedora的epel仓库 1 yum install epel release 3 安装redis数据库 1 yum install
  • MySQL8.0忘记密码后重置密码(亲测有效)

    实测 xff0c 在mysql8系统下 xff0c 用mysqld console skip grant tables shared memory可以无密码启动服务 服务启动后 xff0c 以空密码登入系统 mysql exe u root
  • My uBlock static filters

    My uBlock static filters 2022 百度 2022 06 https pan baidu com pan baidu com bpapi analytics pan baidu com rest 2 0 pcs ad
  • conda安装包报错:The current user does not have write permissions to the target environment(当前用户没有写入权限)

    问题 xff1a 在Winodws 10下使用conda安装第三方包时报错 xff1a EnvironmentNotWritableError The current user does not have write permissions
  • CCF 201809-3元素选择器

    分析 xff1a 这题超级坑 xff0c 当时考试时只得了50分 xff0c 现在重新做一直卡在80分 xff0c 各种复杂情况都考虑到了 xff0c 还是不能ac xff0c 于是尝试三种不同办法解决 xff0c 也均不能AC xff0c
  • 【开发经验】通过ffmpeg进行视频剪辑

    文章目录 前言一 视频剪辑1 1 生成标题2 文字和背景图叠加3 视频切割4 视频和背景图叠加结果演示java执行cmd指令更多ffmepg指令 前言 突然发现抖音有有一些人发布电视剧的精彩片段 xff0c 并且还获得了很多的点赞 突然发现
  • IE11离线安装总是提示“获取更新”的解决方法

    微软下载的IE11离线包在安装前 xff0c 必须要先安装必备更新 首先 xff0c 先检查操作系统 xff0c XP系统是无法安装IE11的 xff0c XP支持的最高版本为IE8 xff0c 如果是XP系统 xff0c 请先升级到WIN
  • debian系列linux 启动后黑屏,只有一个光标

    重复的按ctrl 43 alt 43 F1 一直到光标消失 如果跳出一个客户端登录的话就再重复按一下上面介绍的组合键 过一会儿就开机了
  • 抖音流行的字符视频如何实现

    前几天 xff0c 有个朋友给我分享了一个抖音短视频链接 xff0c 是以代古拉k跳舞视频为原型的字符视频 xff0c 朋友问我 xff1a 这个你知道怎么做吗 xff1f 我们都知道视频是由一帧一帧的静态图片组合而成的 xff0c 所以当
  • ANR系列(三)——ANR分析套路

    前言 在懂得了ANR的发生原理和监控原理之后 xff0c 是时候针对项目中的ANR进行分析了 xff0c 在分析前要知道ANR的分析套路一般是怎么分析的 分析ANR问题需要哪些日志 Trace日志 xff1a 当ANR产生的时候 xff0c
  • java socket学习笔记(一)——单线程实现socket通信

    服务器端 span class hljs keyword public span span class hljs keyword class span serverDemo span class hljs keyword public sp
  • Backtrace 分析

    xfeff xfeff 1 Java Backtrace 从Java Backtrace 我们可以知道当时Process 的虚拟机执行状态 Java Backtrace 依靠SignalCatcher 来抓取 Google default
  • docker搭建grafana+loki+promtail日志收集系统

    文章目录 docker搭建grafana 43 loki 43 promtail日志收集系统1 拉取镜像2 loki搭建1 xff09 新建配置文件2 xff09 启动容器 3 promtail搭建1 xff09 新建配置文件2 xff09
  • 微信 Mac 内测版(2.3.0)

    微信 Mac 内测版 2 3 0 WeChat for Mac 微信 Mac 版 极致简洁 迅捷沟通 微信内测版本 2 3 0 For macOS Sierra 10 12 or later 适用于 OS X 10 11 El Capita
  • 第1步 数据预处理

    文章目录 前言一 安装依赖环境二 导入依赖包三 导入数据集保姆级操作演示 xff1a 四 处理丢失数据保姆级操作演示 五 解析分类数据保姆级操作演示 六 拆分数据集为训练集合和测试集合七 特征缩放总结 前言 一 安装依赖环境 开始之前 xf