| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 机器学习中的数据预处理方法与步骤 -> 正文阅读 |
|
[人工智能]机器学习中的数据预处理方法与步骤 |
数据预处理是准备原始数据并使其适用于机器学习模型的过程。这是创建机器学习模型的第一步,也是至关重要的一步。 在创建机器学习项目时,我们并不总是遇到干净且格式化的数据。并且在对数据进行任何操作时,必须对其进行清理并以格式化的方式放置。所以为此,我们使用数据预处理任务。 为什么我们需要数据预处理?真实世界的数据通常包含噪声、缺失值,并且可能采用无法直接用于机器学习模型的不可用格式。数据预处理是清理数据并使其适用于机器学习模型的必要任务,这也提高了机器学习模型的准确性和效率。 它涉及以下步骤:
一、获取数据集要创建机器学习模型,我们需要的第一件事是数据集,因为机器学习模型完全适用于数据。以适当格式收集的特定问题的数据称为数据集。 数据集可能有不同的格式用于不同的目的,例如,如果我们想为商业目的创建关于肝病患者的机器学习模型,那么数据集将是肝病患者所需的数据集。数据集我们通常将其放入 CSV文件中。但是,有时,我们可能还需要使用 HTML 或 xlsx 文件。 什么是 CSV 文件?CSV 代表“逗号分隔值”文件;它是一种文件格式,允许我们保存表格数据,例如电子表格。它对于庞大的数据集很有用,并且可以在程序中使用这些数据集。 二、导入常见库为了使用 Python 进行数据预处理,我们需要导入一些预定义的 Python 库。这些库用于执行一些特定的工作。我们将使用三个特定的库进行数据预处理,它们是:
三、导入数据集3.1 读取数据一般使用pandas来读取文件:
data_set是存储数据集的变量的名称,在函数内部,我们传递了数据集的名称。一旦我们执行了上面这行代码,它将成功地在我们的代码中导入数据集。 这里以心脏病数据集为例:
读取如下: 3.2提取因变量和自变量在机器学习中,区分特征矩阵(自变量)和因变量与数据集很重要。在我们的数据集中,有三个自变量age,sex…其中target是因变量。 提取自变量
如下: 为了提取自变量,我们将使用Pandas 库的iloc[ ]方法。它用于从数据集中提取所需的行和列。在上面的代码中,第一个冒号(😃 用于获取所有行,第二个冒号(😃 用于获取所有列。这里我们使用了:-1,因为我们不想取最后一列,因为它包含因变量。因此,通过这样做,我们将获得特征矩阵。 提取因变量
在这里,我们只取了最后一列的所有行。它将给出因变量数组。输出为:
3.3 处理缺失数据数据预处理的下一步是处理数据集中缺失的数据。如果我们的数据集包含一些缺失的数据,那么它可能会给我们的机器学习模型带来巨大的问题。因此,有必要处理数据集中存在的缺失值。 处理缺失数据的方法: 处理缺失数据主要有两种方式,分别是:
依然是处理心脏病数据集如下:
输出为:
3.4 编码分类数据为了便于介绍这个编码分类,这里我随意构造了一个数据集:
如下:
查看目标:y
这里没有缺失值,就不用处理了,但是为了演示这个过程,我还是假装有缺失值来处理下:
输出为:
可以看到处理与未处理之间是没有变化的,因为这个方法是用均值处理填充缺失值。 现在开始讲编码分类:分类数据是具有某些类别的数据,例如在我们的数据集中;有两个分类变量:国家和购买 由于机器学习模型完全适用于数学和数字,但如果我们的数据集有一个分类变量(字符),那么在构建模型时可能会产生麻烦。因此有必要将这些分类变量编码为数字。这就是为啥需要编码。 对于国家变量:
输出为:
可以看到国家这里被编码成了0,1,2,3三个数字,表示三种。如果这些国家有重复,数字就会重复。第一个国家与第五个国家都是中国,编码后数字都是0。 对于购买变量
输出为:
可以看到”是“被编码为1,”否“被编码为0。因为购买的变量只有两个类别是或否,所以自动编码为 0 和 1。 四、将数据集拆分为训练集和测试集在机器学习数据预处理中,我们将数据集分为训练集和测试集。这是数据预处理的关键步骤之一,因为通过这样做,我们可以提高机器学习模型的性能。 假设,如果我们通过一个数据集对我们的机器学习模型进行了训练,并且我们通过一个完全不同的数据集对其进行了测试。然后,这会给我们的模型理解模型之间的相关性带来困难。 如果我们训练我们的模型非常好并且它的训练精度也非常高,但是我们给它提供了一个新的数据集,那么它会降低性能。因此,我们总是尝试制作一个在训练集和测试数据集上表现良好的机器学习模型。在这里,我们可以将这些数据集定义为:训练集和测试集。 训练集:用于训练机器学习模型的数据集子集,我们已经知道输出。 测试集:用于测试机器学习模型的数据集子集,并通过使用测试集,模型预测输出。 为了拆分数据集,我们将使用以下代码行将数据集以8:2进行拆分:
解释:
在train_test_split() 函数中,我们传递了四个参数,其中前两个用于数据数组,test_size用于指定测试集的大小。test_size 可能是 0.5、0.3 或0 .2,它表示训练集和测试集的划分比率。一般采用0.3或者0.2。 可以挨个查看一下: 五、特征缩放特征缩放是机器学习中数据预处理的最后一步。它是一种将数据集的自变量标准化在特定范围内的技术。在特征缩放中,我们将变量放在相同的范围和相同的比例中,这样任何变量都不会支配另一个变量。 正如我们所看到的,年龄和工资列的值不在同一个范围内。机器学习模型是基于欧几里德距离的,如果我们不对变量进行缩放,那么它会在我们的机器学习模型中引起一些问题。 欧几里得距离为: 在机器学习中执行特征缩放有两种方法:
标准化方法:x为原始值,mean为平均值,a为标准差,x’为标准化后的值 在这里,我们将对数据集使用标准化方法,对于特征缩放,我们将sklearn.preprocessing库的StandardScaler类导入为:
现在,我们将为自变量或特征创建StandardScaler类的对象。然后我们将拟合和转换训练数据集。
查看输出:
对于测试数据集,我们将直接应用transform()函数而不是fit_transform()因为它已经在训练集中完成了。
输出为:
通过执行上述代码行,我们将得到 x_train 和 x_test 的缩放值。正如我们在上面的输出中看到的,所有变量都在值 -1 到 1 之间缩放,不过还是会有几个值在缩放后远离这个范围,这是正常的。 注意:
注意,以上数据是我编的,不具有实际性,你应该是从这个里面学习对应方法。说白了,对于非字符变量需要编码,编码成数字,本来就是数字就不用编码了。 如果你python基础不够好,可以参考我的基础专栏,其中有教程也有练习题。如果你觉得我专栏的题太少了,你需要更多的刷题,推荐一个免费刷题网站:牛客网 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 2:45:04- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |