• 机器学习100天——数据预处理(第一天)


    有个叫Avik Jain的老外在github上发起了一个100天学习机器学习的项目,每天花一个小时学习机器学习,学习内容由浅入深。今天是第一天,内容是如何进行数据预处理。该教程的编程语言是Python。
     
    数据预处理分为6步:
     
    第一步:导入NumPy和Pandas库。NumPy和Pandas是每次都要导入的库,其中Numpy包含了数学计算函数,Pnadas是一个用于导入和管理数据集(Data Sets)的类库。
     
    第二步:导入数据集。数据集一般都是.csv格式,csv文件以文本形式存储数据。每一行数据是一条记录。我们使用pandas类库的read_csv方法读取本地的csv文件作为一个dataframe。然后从datafram中分别创建自变量和因变量的矩阵和向量。
     
    第三步:处理缺失的数据。我们得到的数据很少是完整的。数据可能因为各种原因丢失,为了不降低机器学习模型的性能,需要处理数据。我们可以用整列的平均值或者中间值替换丢失的数据。我们用sklearn.preprocessing库中的Inputer类完成这项任务。
     
    第四步:对分类数据进行编码。分类数据指的是含有标签值而不是数字值得变量。取值范围通常是固定的。例如“YES”和“NO”不能用于模型的数学计算,所以需要编码成数字。为数显这一功能,我们从sklearn.preprocessing库中导入LabelEncoder类。
     
    第五步:拆分数据集为测试集合和训练集合。把数据集拆分成两个,一个是用来训练模型的训练集合,另一个是用来验证模型的测试集合。两种比例一般是80:20。我们导入sklearn.crossvalidation库中的train_test_split()方法。
     
    第六步:特征缩放。大部分模型算法使用两点间的欧式近距离表示,但此特征在幅度、单位和范围姿态问题上变化很大。在距离计算中,高幅度的特征比低幅度特征权重大。可用特征标准化或Z值归一化解决。导入sklearn.preprocessing库的StandardScalar类。

    代码如下:

     1 1: 导入类库
     2 
     3 import numpy as np
     4 import pandas as pd
     5 
     6 2: 导入数据集
     7 dataset = pd.read_csv('Data.csv')
     8 X = dataset.iloc[ : , :-1].values
     9 Y = dataset.iloc[ : , 3].values
    10 
    11 3: 处理缺失的数据
    12 from sklearn.preprocessing import Imputer
    13 imputer = Imputer(missing_values = "NaN", strategy = "mean", axis = 0)
    14 imputer = imputer.fit(X[ : , 1:3])
    15 X[ : , 1:3] = imputer.transform(X[ : , 1:3])
    16 
    17 Step 4:编码分类数据
    18 from sklearn.preprocessing import LabelEncoder, OneHotEncoder
    19 labelencoder_X = LabelEncoder()
    20 X[ : , 0] = labelencoder_X.fit_transform(X[ : , 0])
    21 Creating a dummy variable
    22 
    23 onehotencoder = OneHotEncoder(categorical_features = [0])
    24 X = onehotencoder.fit_transform(X).toarray()
    25 labelencoder_Y = LabelEncoder()
    26 Y =  labelencoder_Y.fit_transform(Y)
    27 
    28 Step 5: 切分数据集成训练数据和测试数据
    29 from sklearn.cross_validation import train_test_split
    30 X_train, X_test, Y_train, Y_test = train_test_split( X , Y , test_size = 0.2, random_state = 0)
    31 
    32 Step 6: 特征缩放
    33 from sklearn.preprocessing import StandardScaler
    34 sc_X = StandardScaler()
    35 X_train = sc_X.fit_transform(X_train)
    36 X_test = sc_X.fit_transform(X_test)

    本教程的测试数据请关注本人的公众号获取:

  • 相关阅读:
    线段树扫描线求矩形面积并
    BZOJ-1103 [POI2007]大都市meg 【DFS序+树状数组】
    安徽大学第九届程序设计竞赛决赛题解
    如何解决Vue.js里面noVNC的截图问题(2)——蛋疼的cookies验证和node.js的websocket代理
    如何解决Vue.js里面noVNC的截图问题(1)——论可以跨域的webSocket
    从技术人视角看闪电网络之作用和局限性,以及一些问题的回答
    从技术人视角看闪电网络之闪电路由
    从技术人视角看闪电网络之微支付通道
    微服务化的大坑之一:当dubbo神器碰上共用注册中心和错误的暴露接口
    Fun论设计模式之1:简单工厂模式(Factory Pattern)
  • 原文地址:https://www.cnblogs.com/airnew/p/9638093.html
Copyright © 2020-2023  润新知