前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习第1天:数据预处理

机器学习第1天:数据预处理

作者头像
K同学啊
发布2019-01-22 15:17:16
8120
发布2019-01-22 15:17:16
举报

-----代码传送门 ----- -----数据传送门-----

一、预备知识

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

二、具体实现步骤

第1步:导入库

import numpy as np
import pandas as pd

第2步:导入数据集

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

第3步:处理丢失数据

from sklearn.preprocessing import Imputer
imputer = Imputer(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, OneHotEncoder
labelencoder_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_split
X_train, X_test, Y_train, Y_test = train_test_split( X , Y , test_size = 0.2, random_state = 0)

第6步:特征标准化

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

三、知识点详解

1. Imputer处理缺损数据

imputer = Imputer(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处理的原因

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年09月18日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、预备知识
  • 二、具体实现步骤
    • 第1步:导入库
      • 第2步:导入数据集
        • 第3步:处理丢失数据
          • 第4步:解析分类数据
            • 创建虚拟变量
          • 第5步:拆分数据集为训练集合和测试集合
            • 第6步:特征标准化
            • 三、知识点详解
              • 1. Imputer处理缺损数据
                • 2. 关于fit()、transform()、fit_transform()
                  • 3. StandardScaler标准化
                    • 4. OneHotEncoder处理的原因
                      • 5. LabelEncoder处理的原因
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档