专业汉语词典知识平台,分享汉字词语知识、历史文学知识解答!

励北网
励北网

数据预处理的方法有哪些,数据预处理的流程

来源:小易整编  作者:小易  发布时间:2023-01-04 05:27
摘要:数据预处理的方法有哪些,数据预处理的流程。在数据科学项目中,数据预处理是最重要的事情之一。如果有正确的「数据预处理和特征工程,该模型更有可能与数据未得到很好预处理的模型相比,产生更好的结果。」数据预处理主要有4个重要步骤。拆分训练集和测试集...

数据预处理的方法有哪些,数据预处理的流程。在数据科学项目中,数据预处理是最重要的事情之一。

如果有正确的「数据预处理和特征工程,该模型更有可能与数据未得到很好预处理的模型相比,产生更好的结果。」

数据预处理的方法有哪些,数据预处理的流程

数据预处理主要有4个重要步骤。

  • 拆分训练集和测试集
  • 处理缺失值
  • 处理分类特征
  • 进行标准化处理

拆分训练集和测试集

训练集和测试集拆分是机器学习中的重要步骤之一。

这非常重要,「因为你的模型需要在部署之前进行评估。」

训练集和测试集拆分背后的主要思想是将原始数据集转换为两部分

  • 训练集
  • 测试集

其中训练集由训练数据和训练标签组成,测试集由测试数据和测试标签组成。

最简单的方法是使用 scikit-learn 的 一个内置函数 train_test_split。
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2)

在这里,我们在 train_test_split 中传入了 X 和 y 作为参数 ,它将 X 和 y 进行拆分,其中训练集占 80%,测试集占 20% 。

处理缺失值

你可能听说过一个著名的机器学习短语,它是

Garbage in Garbage out

如果你的数据集充满了缺失值,那么你的模型效果也不好。

因此,处理此类缺失值很重要。

让我们用一个虚拟数据集来看看我们如何解决这个问题。

首先查看一下数据集中的缺失值。
df.isna().sum()
我们可以看到数据集中有缺失值。

「填充缺失值的一种方法是用该列的平均值填充。」

例如,我们可以用该列所有学生的平均值来填充 Final 列的缺失值。

为此,我们可以使用 sklearn.impute 中的 SimpleImputer 。
from sklearn.impute import SimpleImputer
imputer = SimpleImputer(fill_value=np.nan, startegy='mean')
X = imputer.fit_transform(df)
这将使用 该列的 平均值 填充数据框 df 中的所有缺失值 。
可以使用  fit_transform 函数来做到这一点。
X = pd.DataFrame(X, columns=df.columns)
print(X)

现在,可以看到所有缺失值都用「均值」进行了填充。

X.isna().sum()

「我们也可以在 SimpleImputer 中使用 mean、 meadian、 mode 等 。」

如果 缺失值的行数较少,或者我们的数据不建议填充缺失值,那么可以在 pandas 中使用 「dropna」 删除缺失的行。

dropedDf = df.dropna()

在这里,我们删除了数据框中的所有空行并将其存储在另一个数据框中。

dropedD.isna().sum()

处理分类特征

我们可以通过将它们转换为整数来处理分类特征。有两种常见的方法可以做到这一点。
  • Label Encoding
  • One Hot Encoding
在 「Label Encoder」中,将分类值转换为数字标签。假设这是我们的数据集

在 Country 列上使用 Label Encoding 会将 India 转换为 1,将 USA  转换为 2,将 China  转换为 0。

「这种技术有一个缺点,即由于 USA  的标签高,它给予 USA   最高优先级,而 China 的优先级最低,标签为 0。」

from sklearn.preprocessing import LabelEncoder
l1 = LabelEncoder()
l1.fit(catDf['Country'])
catDf.Country = l1.transform(catDf.Country)
print(catDf)
如代码所示,我们实例化了一个 LabelEncoder 对象,然后使用 fit 方法将其应用到分类列上,然后使用 transform 方法进行转换。

在 「OneHotEncoder 中」 ,我们为每个唯一的分类值创建一个新列。

下面通过一个例子来了解一下。

我们将添加另一个分类列,即 “Continent”。
catDf['Continent'] = ['Asia', 'North America', 'Asia']
现在因为我们有 2 个分类列,它们是 **[['Country', 'Continent']]**,我们可以对它们进行独热编码。

有两种方法可以做到这一点。

1.DataFrame.get_dummies

这是一种非常常见的方法,我们使用 pandas 内置函数 「get_dummies」 将数据帧中的分类值转换为独热编码。

pd.get_dummies(data=catDf)
这将 「返回」 一个数据帧。
在这里我们可以看到它已经将 Country 列的唯一值转换为 3 个不同的列,分别是 Country_China、Country_India 和 Country_USA。同样,Continent 列的 2 个唯一值已转换为 2 个不同的列,分别命名为 Continent_Asia 和 Continent_North America。
2.OneHotEncoder

使用 scikit-learn 中的 OneHotEncoder 也是一种常见的做法。

它提供了更多的灵活性和更多的选择,但使用起来有点困难。

让我们看看如何为我们的数据集做这件事。
from sklearn.preprocessing import OneHotEncoder
oh = OneHotEncoder()
s1 = pd.DataFrame(oh.fit_transform(catDf.iloc[:, [0,3]]))
catDf = pd.concat([catDf, s1], axis=1)

在这里,我们已经初始化了 OneHotEncoder 对象,并在数据框中对我们想要的列(列号 0 和列号 3)上使用了它的 「fit_transform方法。」

「fit_transform」 的返回类型 是 numpy.ndarray ,所以我们通过「pd.DataFrame」 将其转换为数据框 ,并存储在一个变量中。

然后,为了将它加入我们的原始数据帧,可以使用 「pd.concat」 连接 2 个不同数据帧。

你可以看到,与 pd.get_dummies 相比,它的可读性并不清晰
但是如果你比较使用 「pd.get_dummies 和 OneHotEncoder 获得的最后 5 列,它们都是相等的。」

标准化数据集

某些实验证明,「与未标准化的数据集相比,机器学习和深度学习模型在标准化数据集上的表现更好。」

有几种方法可以做到这一点。我将讨论标准化数据集的 2 种常用方法。

1、Standard Scaler

使用这种技术,可以将数据集转化为均值为 0,标准差为 1。

from sklearn.preprocessing import StandardScaler
ss = StandardScaler()
catDf.iloc[:,1:-1] = ss.fit_transform(catDf.iloc[:,1:-1])
print(catDf)
2、Normalization

正则化是将 「每个样本缩放到单位范数(每个样本的范数为1)」的过程。

如果你计划使用二次型(点积)或任何其他核方法来计算两个样本之间的相似性,则此过程会很有用。
Normalization 主要思想是对每个样本计算其p-范数,然后对该样本中每个元素除以该范数,这样处理的结果是使得每个处理后样本的p-范数(l1-norm,l2-norm)等于1。
使用过程非常简单,与 StandaradScaler 类似。
from sklearn.preprocessing import Normalizer
norm = Normalizer()
catDf.iloc[:,1:-1] = norm.fit_transform(catDf.iloc[:,1:-1])
catDf

本文地址:百科问答频道 https://www.neebe.cn/wenda/886615.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!


百科问答
小编:小易整编
相关文章相关阅读
  • 数据隐私是什么意思?

    数据隐私是什么意思?

    数据隐私是指保护个人隐私的概念,是建立在保护客户个人信息和保护客户权利的起点上。由于信息技术发展迅速,网络和大数据往往会被不法分子用来收集个人信息,因此,隐私保护已经成为一项重要的技术和社会问题。数据隐私一般包括以下几个方面:1.保护个人...

  • oppo手机怎么将便签数据恢复

    oppo手机怎么将便签数据恢复

    如果我们不小心将便签数据删除掉了,还能恢复吗?今天小编就告诉大家oppo手机怎么将便签数据恢复。具体如下:1.首先我们需要在手机中打开设置选项。2.当我们进入到设置界面之后我们点击上方的oppo账户。3.然后在账号窗口中点击云服务。4...

  • 数据源是什么意思?

    数据源是什么意思?

    数据源是指提供数据的源点。它收集的信息可被存储在文件、数据库或网络服务器等位置,以便进行报告分析。数据源涵盖了从有组织的定期报告到社交媒体帖子的所有信息源。一般的,数据源可以分为三大类:外部数据源、内部数据源和数据存储介质。外部数据源是指...

  • 数据处理系统是什么意思?

    数据处理系统是什么意思?

    数据处理系统(DataProcessingSystem)是一类系统,它可用来收集、整理、存储、处理和转换用户输入的数据,以便提供可读的输出。它以不同的方式建模用户的信息需求,目的主要是通过操作和处理来实现从原始数据到有用信息的转换过程...

  • 数据格式是什么意思?

    数据格式是什么意思?

    数据格式是指数据在内存中的存储方式。它使得程序能够识别和定义数据的字段、每个字段的长度以及数据存储方式,从而能够进行更有效率的处理和储存数据。换句话说,数据格式定义了数据存储在内存中的形式,从而有助于使用程序能够准确和有效地识别和理解特定...

  • 原始数据是什么意思?

    原始数据是什么意思?

    原始数据是指从某种介质中收集的原始信息,它可以是一个较舍入的统计数据、一段文字、一个照片、一个声音、一个游戏、一段视频等。它是任何一个数据处理任务的起点,并且它提供给用户真实的数据记录和可理解的信息。原始数据可以从各种数据源获取,例如互联...

  • 个人数据是什么意思?

    个人数据是什么意思?

    个人数据是某一个个体的信息,指的是每一个个体个人特有的数据。它可以是包含该个体身份、位置、社会联系、支付信息、账户信息、地理位置、日常运动情况等各种信息和数据的集合。这些信息特别的私密,具有很强的个人信息保护性,比如有的企业会对个人数据进...

  • 硬盘数据是什么意思?

    硬盘数据是什么意思?

    硬盘数据是指存储在硬盘上的数据。硬盘是电脑中最重要的一个部件,它的功能是储存和保存数据,它是一种永久存储媒介。硬盘上的数据可以代表一系列文件,如文本文件、音频文件、视频文件等,可以被定义为文件的集合。硬盘的存储空间是由磁盘板和磁头组成的,...

  • 周排行
  • 月排行
  • 年排行

精彩推荐