机器学习第1天:数据预处理
发布日期:2021-07-01 04:21:36 浏览次数:7 分类:技术文章

本文共 2105 字,大约阅读时间需要 7 分钟。

文章目录


----- -----
----------

一、预备知识

  • pandas、numpy基本用法有所了解
  • 对什么是机器学习有简单的了解

二、具体实现步骤

第1步:导入库

import numpy as npimport pandas as pd

第2步:导入数据集

dataset = pd.read_csv('Data.csv')X = dataset.iloc[ : , :-1].valuesY = dataset.iloc[ : , 3].values

第3步:处理丢失数据

from sklearn.impute import SimpleImputerimputer = SimpleImputer(missing_values = "NaN", strategy = "mean", axis = 0)imputer = imputer.fit(X[ : , 1:3])X[ : , 1:3] = imputer.transform(X[ : , 1:3])

第4步:解析分类数据

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

创建虚拟变量

onehotencoder = OneHotEncoder(categorical_features = [0])X = onehotencoder.fit_transform(X).toarray()labelencoder_Y = LabelEncoder()Y =  labelencoder_Y.fit_transform(Y)

第5步:拆分数据集为训练集合和测试集合

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)

第6步:特征标准化

from sklearn.preprocessing import StandardScalersc_X = StandardScaler()X_train = sc_X.fit_transform(X_train)X_test = sc_X.transform(X_test)

三、知识点详解

1. Imputer处理缺损数据

imputer = SimpleImputer(missing_values = 'NaN', strategy="mean",axis=0)

strategy取值支持三种,mean(均值),median(中位数),most_frequent(众数),默认mean,axis=0表示按列进行

具体用法见:

2. 关于fit()、transform()、fit_transform()

通俗的来讲fit()表示建立一个“词典”,transform()表示在建立的“词典”中查找单词,而fit_transform()表示先建立“词典”然后又在里面查找。

例如:有数据A、B、C,利用fit建立一个“词典”,在“词典”中A代表1、B代表2、C代表3,而后transform()通过“词典”将A转化为1、B转化为2、C转化为3。

labelencoder_Y.fit_transform(Y)onehotencoder.fit_transform(X).toarray()sc_X.fit_transform(X_train)

fit_transform()前面的参数则代表有着不同规则的“词典”

比较规范的解释:fit()是为计算该类处理所需的相关参数,以标准化为例,fit()就是计算标准化所用到的均值与方差;而transform()函数则是利用fit()的结果作为参数对数据进行相应的处理,比如正规化。fit_transform()就是先调用fit(),后调用transform()。

3. StandardScaler标准化

StandardScaler标准化:将特征数据的分布调整成标准正太分布,也叫高斯分布,也就是使得数据的均值维0,方差为1。

标准化的原因在于如果有些特征的方差过大,则会主导目标函数从而使参数估计器无法正确地去学习其他特征。

更详细的解释见:

4. OneHotEncoder处理的原因

由于特征可能是连续型的也可能是类别型的变量,这些类别特征无法直接进入模型。要想使得类别型的变量能最终被模型直接使用,可以使用one-of-k编码或者one-hot编码。OneHotEncoder它可以将有n种值的一个特征变成n个二元的特征。

更详细的解释见:

5. LabelEncoder处理的原因

将数据标签化,利于模型的建立

有不足或者不对的地方欢迎留言指正!!!

转载地址:https://mtyjkh.blog.csdn.net/article/details/82764848 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:机器学习第2天:简单线性回归模型
下一篇:知识点讲解五:处理js异步加载问题

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.191.171.36]2022年08月17日 11时34分00秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

最新文章

小海龟前行的action server示例 2019-12-04 00:26:44
编译cartographer_ros出现vert.vertices = pcl_vert.vertices问题 2019-12-04 00:26:44
Gmapping学习记录 2019-12-04 00:26:44
C++之enum与switch 2019-12-04 00:26:45
GMapping学习记录 2019-12-04 00:26:45
C++之链表 2019-12-04 00:26:45
git tag的使用 2019-12-04 00:26:45
ROS初学者编写小乌龟以一定速度旋转一定角度的server 2019-12-04 00:26:42
New关键字、引用&与指针的学习记录 2019-12-04 00:26:42
odom坐标系的理解 2019-12-04 00:26:42
ROS中tf学习笔记 2019-12-04 00:26:43
git相关指令 2019-12-04 00:26:43
粒子滤波学习记录 2019-12-04 00:26:43
机器人前行、旋转的service编写 2019-12-04 00:26:43
ROS 中 boost::bind( ) 的使用 2019-12-04 00:26:43
JavaScript基础 2019-12-04 00:26:40
JavaScript操作DOM对象 2019-12-04 00:26:41
初始jQuery 2019-12-04 00:26:41
JavaScript操作BOM对象 2019-12-04 00:26:41
模式识别期末考试名词解释总结 2019-12-04 00:26:41