加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

数据洗濯预处理赏罚入门完备指南

发布时间:2019-02-23 07:50:27 所属栏目:教程 来源:机器之心编译
导读:数据预处理赏罚是成立呆板进修模子的第一步(也很大噶?鲱重要的一步),对最终功效有抉择性的浸染:假如你的数据集没有完成数据洗濯和预处理赏罚,那么你的模子很也许也不会有用就是这么简朴。 人们凡是以为,数据预处理赏罚是一个很是死板的部门。但它就是「做好筹备」

这是一个好题目。没有步伐明晰地计较诸如猫、狗、麋鹿的均值。那么可以怎么做呢?可以将属性数据编码为数值!你也许但愿行使 sklearn.preprocessing 所提供的 LabelEncoder 类。从你但愿举办编码的某列数据入手,挪用 label encoder 并拟合在你的数据上。

  1. from sklearn.preprocessing import LabelEncoder 
  2. labelencoder_X = LabelEncoder() 
  3. X[:, 0] = labelencoder_X.fit_transform(X[:, 0]) 

(还记得括号里的数字所暗示的寄义吗?「:」暗示但愿提取全部行的数据,0 暗示但愿提取第一列)

这就是将第一列中的属性变量替代为数值所需的所有事变了。譬喻,麋鹿将用 0 暗示,狗将用 2 暗示,猫将用 3 暗示。

你发明什么隐藏题目了吗?

标注系统暗含以下信息:所行使的数值层级相关也许会影响模子功效:3 比 0 的数值大,但猫并不必然比麋鹿大。

数据洗濯预处理赏罚入门完备指南

图:Cel Lisboa 宣布于 Unsplash

我们必要建设哑变量。

我们可觉得猫建设一列数据,为麋鹿建设一列数据,……以此类推。然后,将每一列别离以 0/1 添补(以为 1=Yes,0 = No)。这表白,假如原始列的值为猫,那么就会在麋鹿一列获得 0,狗一列获得 0,猫一列获得 1。

看上去很是伟大。输入 OneHotEncoder 吧!

导入编码器,并拟定对应列的索引。

  1. from sklearn.preprocessing import OneHotEncoder 
  2. onehotencoder = OneHotEncoder(categorical_features = [0]) 

接着是一点拟合和转换。

  1. X = onehotencoder.fit_transform(X).toarray() 

此刻,你的那一列数据已经被替代为了这种情势:数据组中的每一个属性数据对应一列,并以 1 和 0 代替属性变量。很是知心,对吧?假如我们的 Y 列也是如「Y」和「N」的属性变量,那么我们也可以在其上行使这个编码器。

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

这会直接拟归并将 y 暗示为编码变量:1 暗示「Y」,0 暗示「N」。

实习集与测试集的分别

此刻,你可以开始将数据集分别为实习集和测试集了。这已经在之前的图像分类教程一文中阐述过了。不外记得,必然要将你的数据分为实习集和测试集,永久不要用测试集来实习!必要停止过拟合(可以以为,过拟合就像在一次考试前,影象了很多细节,但没有领略个中的信息。假如只是影象细节,那么当你本身在家温习常识卡片时,结果会很好,但在全部会考查新信息的真实考试中,城市不合格。)

此刻,我们有了必要进修的模子。模子必要在数据上实习,并在其它的数据上完成测试。对实习集的影象并不便是进修。模子在实习集上进修得越好,就应该在测试集给出更好的猜测功效。过拟合永久都不是你想要的功效,进修才是!

Janko Ferlič 宣布于 Unsplash

起首,导入:

  1. from sklearn.model_selection import train_test_split 

此刻,可以建设 X_train、X_test、y_train 和 y_test 荟萃了。

  1. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0) 

一种常见的要领是将数据集按 80/20 举办分别,个中 80% 的数据用作实习,20% 的数据用作测试。这也是为何指定 test_size 为 0.2 的缘故起因。你也可以按照本身的需求来恣意分别。你并不必要配置 random_state,这里配置的缘故起因是为了可以完全复现功效。

特性缩放

什么是特性缩放?为什么必要特性缩放?

看看我们的数据。我们有一列动物年数,范畴是 4~17,尚有一列动物代价,范畴是$48,000-$83,000。代价一栏的数值不只宏大于年数一栏,并且它还包括越发辽阔的数据范畴。这表白,欧式间隔将完全由代价这一特性所主导,而忽视年数数据的主导结果。假如欧式间隔在特定呆板进修模子中并没有详细浸染会怎么样?缩放特性将仍可以或许加快模子,因此,你可以在数据预处理赏罚中,插手特性缩放这一步。

特性缩放的要领有许多。但它们都意味着我们将全部的特性放在统一量纲上,进而没有一个会被另一个所主导。

导入相干库开始:

  1. from sklearn.preprocessing import StandardScaler 

建设一个必要缩下班具并挪用 Standard Scaler

  1. sc_X = StandardScaler() 

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读