100-Days-Of-ML-Code-Day 1

Day1-数据预处理

原文:https://github.com/Avik-Jain/100-Days-Of-ML-Code
译文:https://github.com/MLEveryday/100-Days-Of-ML-Code

Day 1

代码:

    # step 1: 导入Numpy和Pandas库
    import numpy as np
    import pandas as pd
    from sklearn.preprocessing import Imputer
    from sklearn.preprocessing import LabelEncoder, OneHotEncoder
    from sklearn.cross_validation import train_test_split 
    from sklearn.preprocessing import StandardScaler


    # step 2: 导入数据集
    data_set = pd.read_csv('datasets/Data.csv')
    print(data_set)
    X = data_set.iloc[ :, :3].values    # 提取除最后一列的所有数据 前闭后开
    Y = data_set.iloc[ :, 3].values    # 提取最后一列的数据

    # step 3: 处理缺失数据 数据中只有第一列和第二列有缺失数据
    imputer = Imputer(missing_values='NaN', strategy='mean', verbose=0)
    imputer = imputer.fit(X[:, 1:3])
    X[:, 1:3] = imputer.transform(X[:, 1:3])
    # print(X)

    # step 4: 编码解析数据分类
    labelencoder_X = LabelEncoder()
    X[:, 0] = labelencoder_X.fit_transform(X[:, 0])
    # print(X)

    # 创建一个虚拟变量
    onehotencoder = OneHotEncoder(categorical_features=[0])
    X = onehotencoder.fit_transform(X).toarray()
    labelencoder_Y = LabelEncoder()
    Y = labelencoder_Y.fit_transform(Y)
    # print(X)
    # print(Y)


    # step 5: 将数据集分为训练集和测试集
    X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=0)


    # step 6: 特征缩放 归一化处理
    sc_X = StandardScaler()
    X_train = sc_X.fit_transform(X_train)
    X_test = sc_X.fit_transform(X_test)

step 1: 导入库

  • Numpy:主要用来处理数组和矩阵。
  • Pandas:基于Numpy,主要用来解决数据分析任务。

step 2: 导入数据

pandas.read_csv(): 读取csv文件。

常见的pandas读写文件的操作方法:

文件格式读取方法写入方法
CSVread_csvto_csv
JSONread_jsonto_json
HTMLread_htmlto_html
EXCELread_excelto_excel

step 3: 处理缺失数据

  • sklearn:机器学习库,提供了大量优质的数据集,能够实现出不同的模型。
  • sklearn.processing:预处理类。
  • sklearn.processing.Imputer:类,能够完成数据中缺失值的插补。

代码解释:

    imputer = Imputer(missing_values='NaN', strategy='mean', verbose=0)
    imputer = imputer.fit(X[:, 1:3])
    X[:, 1:3] = imputer.transform(X[:, 1:3])
    print(X)

上述代码实际上是用数组X去训练一个Imputer类,然后再用训练好的类的对象去处理X中的缺失值,缺失值的处理方式是使用X中的均值来代替NaN,axis=0代表按列进行。这是对于X数组本身来处理,也可以使用X来训练,去处理Y数组。

step 4: 编码解析分类数据

  • 分类数据指的是含有标签值而不是数字值的变量,取值范围通常是固定的,如:”Yes“,”No“不能用语模型的数学计算,所以需要解析成数字。

  • sklearn.preprocessing.LabelEncoder(): 标准化标签,将标签值统一转化为range范围内。

  • 在数据中,我们可以看出X中的Country和Y中的Purchased都是类别字符串,对于机器学习来说无法处理,所以要进行类别编码,利用了LabelEncoder和OneHotEncoder进行编码。

step 5: 将数据集分为测试集和训练集

step 6: 特征缩放

也就是我们所谓的归一化处理,为了防止某些数据过大影响机器学习的效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值