位置: IT常识 - 正文

机器学习中的数据预处理方法与步骤

编辑:rootadmin
机器学习中的数据预处理方法与步骤

推荐整理分享机器学习中的数据预处理方法与步骤,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

数据预处理是准备原始数据并使其适用于机器学习模型的过程。这是创建机器学习模型的第一步,也是至关重要的一步。

在创建机器学习项目时,我们并不总是遇到干净且格式化的数据。并且在对数据进行任何操作时,必须对其进行清理并以格式化的方式放置。所以为此,我们使用数据预处理任务。

为什么我们需要数据预处理?

真实世界的数据通常包含噪声、缺失值,并且可能采用无法直接用于机器学习模型的不可用格式。数据预处理是清理数据并使其适用于机器学习模型的必要任务,这也提高了机器学习模型的准确性和效率。

它涉及以下步骤:

获取数据集导入相关库导入数据集查找缺失的数据编码分类数据将数据集拆分为训练集和测试集特征缩放一、获取数据集

要创建机器学习模型,我们需要的第一件事是数据集,因为机器学习模型完全适用于数据。以适当格式收集的特定问题的数据称为数据集。

数据集可能有不同的格式用于不同的目的,例如,如果我们想为商业目的创建关于肝病患者的机器学习模型,那么数据集将是肝病患者所需的数据集。数据集我们通常将其放入 CSV文件中。但是,有时,我们可能还需要使用 HTML 或 xlsx 文件。

什么是 CSV 文件?CSV 代表“逗号分隔值”文件;它是一种文件格式,允许我们保存表格数据,例如电子表格。它对于庞大的数据集很有用,并且可以在程序中使用这些数据集。

二、导入常见库

为了使用 Python 进行数据预处理,我们需要导入一些预定义的 Python 库。这些库用于执行一些特定的工作。我们将使用三个特定的库进行数据预处理,它们是:

numpymatplotlibpandas三、导入数据集3.1 读取数据

一般使用pandas来读取文件:

data_set = pd .read_csv('Dataset.csv')

data_set是存储数据集的变量的名称,在函数内部,我们传递了数据集的名称。一旦我们执行了上面这行代码,它将成功地在我们的代码中导入数据集。

这里以心脏病数据集为例:

import pandas as pddata=pd.read_csv('heart.csv')data

读取如下:

3.2提取因变量和自变量

在机器学习中,区分特征矩阵(自变量)和因变量与数据集很重要。在我们的数据集中,有三个自变量age,sex…其中target是因变量。

提取自变量

x= data.iloc[:,:-1].valuesx

如下:

为了提取自变量,我们将使用Pandas 库的iloc[ ]方法。它用于从数据集中提取所需的行和列。在上面的代码中,第一个冒号(😃 用于获取所有行,第二个冒号(😃 用于获取所有列。这里我们使用了:-1,因为我们不想取最后一列,因为它包含因变量。因此,通过这样做,我们将获得特征矩阵。

提取因变量 为了提取因变量,我们将再次使用 Pandas .iloc[] 方法:

y = data .iloc[:,-1].valuesy

在这里,我们只取了最后一列的所有行。它将给出因变量数组。输出为:

array([0, 0, 0, ..., 0, 1, 0], dtype=int64)3.3 处理缺失数据

数据预处理的下一步是处理数据集中缺失的数据。如果我们的数据集包含一些缺失的数据,那么它可能会给我们的机器学习模型带来巨大的问题。因此,有必要处理数据集中存在的缺失值。

处理缺失数据的方法: 处理缺失数据主要有两种方式,分别是:

通过删除特定的行:第一种方法通常用于处理空值。这样,我们只需删除包含空值的特定行或列。但这种方式效率不高,删除数据可能会导致信息丢失,无法给出准确的输出。通过计算平均值:通过这种方式,我们将计算包含任何缺失值的列或行的平均值,并将其放在缺失值的位置。这种策略对于具有数字数据的特征很有用,例如年龄、薪水、年份等。在这里,我们将使用这种方法。

依然是处理心脏病数据集如下:

from sklearn.impute import SimpleImputerimport numpy as npimputer = SimpleImputer(missing_values=np.nan, strategy='mean')imputerimputer= imputer.fit(x[:, 1:12]) x[:, 1:12]= imputer.transform(x[:, 1:12]) x

输出为:

array([[52., 1., 0., ..., 2., 2., 3.], [53., 1., 0., ..., 0., 0., 3.], [70., 1., 0., ..., 0., 0., 3.], ..., [47., 1., 0., ..., 1., 1., 2.], [50., 0., 0., ..., 2., 0., 2.], [54., 1., 0., ..., 1., 1., 3.]])3.4 编码分类数据

为了便于介绍这个编码分类,这里我随意构造了一个数据集:

读取:

import pandas as pddata=pd.read_csv('ceshi.csv',encoding='gbk')x= data.iloc[:,:-1].values y = data .iloc[:,-1].values x

如下:

array([['中国', 28, 21504], ['美国', 29, 32102], ['德国', 27, 34150], ['法国', 25, 28740], ['中国', 24, 18750]], dtype=object)

查看目标:y

array(['是', '是', '否', '否', '否'], dtype=object)

这里没有缺失值,就不用处理了,但是为了演示这个过程,我还是假装有缺失值来处理下:

from sklearn.impute import SimpleImputerimport numpy as npimputer = SimpleImputer(missing_values=np.nan, strategy='mean')imputerimputer= imputer.fit(x[:, 1:2]) x[:, 1:2]= imputer.transform(x[:, 1:2]) x

输出为:

array([['中国', 28.0, 21504], ['美国', 29.0, 32102], ['德国', 27.0, 34150], ['法国', 25.0, 28740], ['中国', 24.0, 18750]], dtype=object)机器学习中的数据预处理方法与步骤

可以看到处理与未处理之间是没有变化的,因为这个方法是用均值处理填充缺失值。

现在开始讲编码分类:分类数据是具有某些类别的数据,例如在我们的数据集中;有两个分类变量:国家和购买

由于机器学习模型完全适用于数学和数字,但如果我们的数据集有一个分类变量(字符),那么在构建模型时可能会产生麻烦。因此有必要将这些分类变量编码为数字。这就是为啥需要编码。

对于国家变量: 首先,我们将国家变量转换为分类数据。为此,我们将使用preprocessing库中LabelEncoder()类:

from sklearn.preprocessing import LabelEncoderlabel_encoder_x= LabelEncoder() x[:, 0]= label_encoder_x.fit_transform(x[:, 0]) x

输出为:

array([[0, 28.0, 21504], [3, 29.0, 32102], [1, 27.0, 34150], [2, 25.0, 28740], [0, 24.0, 18750]], dtype=object)

可以看到国家这里被编码成了0,1,2,3三个数字,表示三种。如果这些国家有重复,数字就会重复。第一个国家与第五个国家都是中国,编码后数字都是0。

对于购买变量 同样的到底对其进行编码:

labelencoder_y= LabelEncoder()y= labelencoder_y.fit_transform(y) y

输出为:

array([1, 1, 0, 0, 0])

可以看到”是“被编码为1,”否“被编码为0。因为购买的变量只有两个类别是或否,所以自动编码为 0 和 1。

四、将数据集拆分为训练集和测试集

在机器学习数据预处理中,我们将数据集分为训练集和测试集。这是数据预处理的关键步骤之一,因为通过这样做,我们可以提高机器学习模型的性能。

假设,如果我们通过一个数据集对我们的机器学习模型进行了训练,并且我们通过一个完全不同的数据集对其进行了测试。然后,这会给我们的模型理解模型之间的相关性带来困难。

如果我们训练我们的模型非常好并且它的训练精度也非常高,但是我们给它提供了一个新的数据集,那么它会降低性能。因此,我们总是尝试制作一个在训练集和测试数据集上表现良好的机器学习模型。在这里,我们可以将这些数据集定义为:训练集和测试集。

训练集:用于训练机器学习模型的数据集子集,我们已经知道输出。

测试集:用于测试机器学习模型的数据集子集,并通过使用测试集,模型预测输出。

为了拆分数据集,我们将使用以下代码行将数据集以8:2进行拆分:

from sklearn.model_selection import train_test_splitx_train, x_test, y_train, y_test= train_test_split(x, y, test_size= 0.2, random_state=0)

解释:

在上面的代码中,第一行用于导入将数据集的数组拆分为随机训练和测试子集。x_train:训练数据的特征x_test:测试数据的特征y_train:训练数据的因变量y_test:测试数据的自变量

在train_test_split() 函数中,我们传递了四个参数,其中前两个用于数据数组,test_size用于指定测试集的大小。test_size 可能是 0.5、0.3 或0 .2,它表示训练集和测试集的划分比率。一般采用0.3或者0.2。

可以挨个查看一下:

五、特征缩放

特征缩放是机器学习中数据预处理的最后一步。它是一种将数据集的自变量标准化在特定范围内的技术。在特征缩放中,我们将变量放在相同的范围和相同的比例中,这样任何变量都不会支配另一个变量。

正如我们所看到的,年龄和工资列的值不在同一个范围内。机器学习模型是基于欧几里德距离的,如果我们不对变量进行缩放,那么它会在我们的机器学习模型中引起一些问题。

欧几里得距离为: 如果我们从年龄和薪水计算任何两个值,那么薪水值将支配年龄值,并且会产生不正确的结果。所以为了消除这个问题,我们需要为机器学习执行特征缩放。

在机器学习中执行特征缩放有两种方法:

标准化正常化

标准化方法:x为原始值,mean为平均值,a为标准差,x’为标准化后的值 正常化方法:x为原始值,min为最小值,max为最大值,x’为正常化后的值

在这里,我们将对数据集使用标准化方法,对于特征缩放,我们将sklearn.preprocessing库的StandardScaler类导入为:

from sklearn.preprocessing import StandardScaler

现在,我们将为自变量或特征创建StandardScaler类的对象。然后我们将拟合和转换训练数据集。

from sklearn.preprocessing import StandardScalerst_x= StandardScaler() x_train= st_x.fit_transform(x_train) x_train

查看输出:

array([[-0.96225045, 0.72760688, -0.70185794], [ 1.34715063, 1.21267813, 1.2711634 ], [ 0.57735027, -0.72760688, 0.6452625 ], [-0.96225045, -1.21267813, -1.21456796]])

对于测试数据集,我们将直接应用transform()函数而不是fit_transform()因为它已经在训练集中完成了。

x_test = st_x .transform(x_test)x_test

输出为:

array([[-0.19245009, 0.24253563, 1.65243796]])

通过执行上述代码行,我们将得到 x_train 和 x_test 的缩放值。正如我们在上面的输出中看到的,所有变量都在值 -1 到 1 之间缩放,不过还是会有几个值在缩放后远离这个范围,这是正常的。

注意:

在这里,我们没有对因变量进行缩放,因为只有两个值 0 和 1。但是如果这些变量的取值范围更大,那么我们还需要对这些变量进行缩放。

注意,以上数据是我编的,不具有实际性,你应该是从这个里面学习对应方法。说白了,对于非字符变量需要编码,编码成数字,本来就是数字就不用编码了。

如果你python基础不够好,可以参考我的基础专栏,其中有教程也有练习题。如果你觉得我专栏的题太少了,你需要更多的刷题,推荐一个免费刷题网站:牛客网

本文链接地址:https://www.jiuchutong.com/zhishi/294483.html 转载请保留说明!

上一篇:涅迪克角灯塔上的节日彩灯,缅因州 (© Walter Bibikow/Alamy)

下一篇:最新waymo数据集 百度网盘(wisdm数据集)

  • 卸载的应用怎么恢复(卸载的应用怎么下载回来)

    卸载的应用怎么恢复(卸载的应用怎么下载回来)

  • 微信怎么艾特群里的一个人(微信怎么艾特群里人)

    微信怎么艾特群里的一个人(微信怎么艾特群里人)

  • 苹果手机显示e是怎么回事(苹果手机显示耳机模式怎么关闭)

    苹果手机显示e是怎么回事(苹果手机显示耳机模式怎么关闭)

  • 微信怎么知道对方是否把我删了(微信怎么知道对方已读和未读)

    微信怎么知道对方是否把我删了(微信怎么知道对方已读和未读)

  • 苹果官网退款什么时候到账(苹果官网退款什么时候到账信用卡)

    苹果官网退款什么时候到账(苹果官网退款什么时候到账信用卡)

  • 怎么删除抖音视频(怎么删除抖音视频里自己拍的作品)

    怎么删除抖音视频(怎么删除抖音视频里自己拍的作品)

  • 人声干音是什么(人声的干声)

    人声干音是什么(人声的干声)

  • 直播美颜了脸忽大忽小(直播间脸美颜不稳定怎么办)

    直播美颜了脸忽大忽小(直播间脸美颜不稳定怎么办)

  • 抖音快进特效在哪里(抖音里面的快进视频在哪里设置)

    抖音快进特效在哪里(抖音里面的快进视频在哪里设置)

  • ipad换新机条件(ipad换新机政策要钱吗)

    ipad换新机条件(ipad换新机政策要钱吗)

  • excel怎么设置字体大小(excel怎么设置字体随格式自动大小)

    excel怎么设置字体大小(excel怎么设置字体随格式自动大小)

  • 腾讯视频hd和普通区别(腾讯视频 腾讯视频hd的区别)

    腾讯视频hd和普通区别(腾讯视频 腾讯视频hd的区别)

  • wps表格线条怎么设置(wps文档表格线条怎么设置)

    wps表格线条怎么设置(wps文档表格线条怎么设置)

  • 腾讯视频微信会员怎么转qq会员(腾讯视频微信会员怎么多人登录)

    腾讯视频微信会员怎么转qq会员(腾讯视频微信会员怎么多人登录)

  • oppo r11充电器是多大的(oppo r11充电器是多少安的)

    oppo r11充电器是多大的(oppo r11充电器是多少安的)

  • 拼多多揽件超时罚款多少(拼多多揽件超时是12小时还是24小时)

    拼多多揽件超时罚款多少(拼多多揽件超时是12小时还是24小时)

  • airpods2充电盒多久充满(airpods2充电盒多重)

    airpods2充电盒多久充满(airpods2充电盒多重)

  • word文档内容不能删除(word文档内容不对齐)

    word文档内容不能删除(word文档内容不对齐)

  • 微信腾讯服务怎么隐藏(微信腾讯服务在哪里打开)

    微信腾讯服务怎么隐藏(微信腾讯服务在哪里打开)

  • ppt没保存就关闭了怎么办(ppt没保存就关闭了怎么办2010版)

    ppt没保存就关闭了怎么办(ppt没保存就关闭了怎么办2010版)

  • 有5g手机可以用5g网络吗(5g手机就可以用5g网吗)

    有5g手机可以用5g网络吗(5g手机就可以用5g网吗)

  • 如何使用键盘关电脑(如何使用键盘关闭所有运行)

    如何使用键盘关电脑(如何使用键盘关闭所有运行)

  • oppo手机电量校准(oppo手机电量校正)

    oppo手机电量校准(oppo手机电量校正)

  • 拼多多留言在哪里(拼多多下单在那留言)

    拼多多留言在哪里(拼多多下单在那留言)

  • 电脑管家暗云Ⅲ检测怎么使用?(电脑管家使用教程)

    电脑管家暗云Ⅲ检测怎么使用?(电脑管家使用教程)

  • 个人偶然所得税率多少
  • 消费税的会计分局
  • 免抵退税和留抵退税可以一起退吗
  • 餐厅打包盒算不算商品
  • 生产用天然气如何入账
  • 软件产品出口退税条件
  • 企业流水账怎么查
  • 股票投资会计科目
  • 应交税费贷方余额怎么算
  • 购进客房用品取得增值税专用发票注明税额9120
  • 没取得发票付款的情况该如何做账呢?
  • 外汇收不到会不会丢
  • 建筑业未开票收入销项税
  • 一般纳税人企业所得税政策最新2023税率
  • 申报截止日期前还能用吗
  • 携税宝可以不买吗
  • 装卸增值税税率最新的
  • 存货缺货成本如何算
  • 其他货币资金怎么做账
  • 计提福利费用会计分录
  • 符合条件的小微企业,减按20%
  • 固定资产报废相关规定
  • 长期股权投资溢价购入
  • 房租租赁公司,对方还没付租金,怎么挂帐
  • wordpress主题0skr
  • win7bios网络启动
  • 苹果手机麦克风模式关闭了,怎样才能打开?
  • 应缴纳消费税会增加吗
  • 购买土地前期测量费怎么入账
  • wordpress自定义文章类型
  • 物业管理企业会计核算的特点如何?
  • 利用漏洞每天获利万元
  • 经营租出的设备要计提折旧吗
  • 委托证券公司购入公允价值为100万元的股票
  • php限制接口调用次数
  • php导出大量数据
  • 搭建本地http服务器
  • 短期投资属于短期资产吗
  • 期末结转会计分录模板
  • 什么是资产减值准备计提
  • 小规模纳税人当月应交增值税怎么算
  • 公司注册登记需要提交的资料包括
  • 权责发生制 会计
  • 当期进项加计额怎么填
  • 企业月末在产品数量变化不大时,最适宜
  • 增值税现代服务业包括哪些内容
  • 购入交易性金融资产的相关税费计入
  • 收到现金存款
  • 收到厂家返利如何计算成本
  • 可转债中签后怎么看涨跌
  • 个人承担的个税是公司的成本费用吗
  • 固定资产处置的增值税怎么入账
  • 个体工商户开具房屋租赁发票
  • 现金余额出现负数的原因
  • 弥补企业以前年度亏损 顺序
  • 本年利润是负数的会计分录
  • sql union和join区别
  • 分页存储过程包括
  • 用u盘怎么装系统win10
  • windows10正式版
  • win2玩魔兽世界
  • centos查找目录命令
  • windows临时文件在哪里
  • centos7图形安装
  • 桌面美化助手
  • Win7 64位纯净版无法安装第三方主题的可行破解方法
  • win8取消开始界面
  • w10系统音量图标不能用了
  • opengl中点画圆算法
  • shell数据处理
  • unityai寻路
  • jquery插件大全
  • js设计模式和开发实践
  • JS Timing
  • js实现复制文本
  • 树形菜单html
  • 申请税务增票怎么写
  • 重庆地方税务局发票查询
  • 广东省电子居住证怎么查看
  • 重庆税务局查询缴费记录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设