位置: 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数据集)

  • 跨年的所得税会计分录
  • 企业所得税季度预缴纳税申报表
  • 残疾人就业保障金会计分录怎么做
  • 2019年小型微利企业优惠政策
  • 处置固定资产简易征收
  • 国有独资企业交企业所得税规定
  • 出口退税企业退税时间
  • 工程项目增值税税率
  • 印花税算错了可以补交吗
  • 总账期末余额为零怎么写
  • 冲销预付款的会计分录
  • 计提工资会计科目怎么写
  • 小规模纳税人开专票
  • 企业所得税季报营业收入,营业成本怎么填
  • 房地产企业开发资质查询
  • 一个十图
  • 利润表的本期数即本月实际发生数
  • 产品检测费用计入什么科目
  • 坏账损失如何连续计提
  • 建设工程是否可以约定非工程所在地仲裁委仲裁
  • 个税手续费收入要交税吗
  • 企业所得税申报表A类
  • 政策性搬迁的会计实用报告
  • 1697509550
  • 应收账款贷方余额重分类到哪
  • 怎么解决win11系统不兼容问题
  • 主管会计的具体工作
  • 华为鸿蒙os升级机型曝光
  • 胆固醇为什么会高
  • 禁止input标签输入
  • .sfx.exe是什么文件
  • 结算应付职工薪酬怎么算
  • 增值税发票开红字发票后账务处理?
  • 油气勘探支出包含哪些
  • 购买支票费用计入
  • 小规模城建税减半征收2021新政策
  • thinkphpcount查询
  • 印花税不足一元需要缴纳吗
  • php高并发api接口怎么处理
  • 计提营业税金及附加比例
  • 帝国cms栏目可以看吗
  • 广告费应该计入产品成本吗
  • 公司股权转移怎么办理
  • 新成立的公司企业所得税
  • 税务系统重置密码
  • 代发工资需要缴税吗
  • 建筑劳务公司何去何从
  • 符合规定的国内旅客运输发票可以作为扣税凭证吗
  • 建筑业异地预缴税款怎么纳税申报
  • 出口收入没有及时申报怎么处罚
  • 车间房屋的日常修理费
  • 研发支出是什么意思
  • 进口向海关缴纳消费税
  • 开具红字增值税专用发票信息表需要盖章吗
  • 科目汇总表一张几行啊
  • 期间费用是啥
  • 给别人的借款怎么记账
  • 接受捐赠的固定资产计入什么科目
  • 登记银行存款日记账的实训心得
  • 哪些税费计入税金及附加科目
  • win10系统提醒
  • 双击盘符弹出属性
  • win10一天更新几次
  • win10没有显示
  • win7开始图标怎么变大点
  • 微软系统如何恢复出厂设置
  • ssh密钥根据什么生成
  • python操作微信自动发消息
  • Drag and drop in unity
  • 怎么做一个扇形图
  • jq写css样式
  • bootstrap需要学多久
  • android下载图片并保存到本地
  • Java如何获得集合里的元素
  • 山东省关于退林还耕的规定
  • 消费税的纳税义务的发生时间是如何规定的
  • 南通国资委网站首页
  • 江苏省扬剧团演出的扬剧罗帕记
  • 企业所得税忘记计提了做到下个月可以吗
  • 生育保险证明去哪里办
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设