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

文章目录

  • 一、预备知识
  • 二、具体实现步骤
    • 第1步:导入库
    • 第2步:导入数据集
    • 第3步:处理丢失数据
    • 第4步:解析分类数据
      • 创建虚拟变量
    • 第5步:拆分数据集为训练集合和测试集合
    • 第6步:特征标准化
  • 三、知识点详解
    • 1. Imputer处理缺损数据
    • 2. 关于fit()、transform()、fit_transform()
    • 3. StandardScaler标准化
    • 4. OneHotEncoder处理的原因
    • 5. LabelEncoder处理的原因

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

一、预备知识

  • 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处理的原因

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

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

你可能感兴趣的:(机器学习,机器学习100天)