zoukankan      html  css  js  c++  java
  • sklearn学习--数据导入及预处理

    例子实战之导入数据及数据预处理

    sklearndatasets中提供一些训练数据,我们可以使用这些数据来进行分类或者回归等等,以此熟悉sklearn的使用。

    如下面代码所示我们读取了鸢尾属植物的分类数据集。load_iris()返回的是一个类似字典的对象通过关键字则可以获取对应的数据。

    from sklearn.datasets import load_iris
    dataSet = load_iris()
    data = dataSet['data'] # 数据
    label = dataSet['target'] # 数据对应的标签
    feature = dataSet['feature_names'] # 特征的名称
    target = dataSet['target_names'] # 标签的名称
    print(target)

    现在我们已经读取了数据,首先第一件事应当是查看数据的特点。我们可以看到标签总共有三个,所以该数据要解决的是一个三分类问题。接着我们要去查看数据特征,用pandasDataFrame展示是一个很好选择。

    import pandas as pdimport numpy as np
    df = pd.DataFrame(np.column_stack((data,label)),columns = np.append(feature,'label'))
    df.head()# 查看前五行数据 

    我们可以看到一条数据对应了4个连续特征,接着应当查看一些数据集的缺失值的比例,这一步非常重要,如果数据集中出现缺失值,在训练模型的时候就会出现问题。

    df.isnull().sum(axis=0).sort_values(ascending=False)/float(len(df))# 检查缺失值比例 

    sklearnpreprocessing中有提供Imputer()处理缺失值的函数,它提供了中位数、均值、众数等策略填充缺失值。但是不同情况下处理不一定使用填充来处理缺失值。因此在遇到缺失值的时候要慎重处理。幸运的是我们这个数据集中没有缺失值,这样节省了我们处理缺失值的时间。接下来要判断数据集的样本类别是否均衡。

    df['label'].value_counts() # 检查数据类别的比例 

    非常幸运,我们的样本类别的比例恰好是1:1:1,如果我们样本比例失衡严重,那么我们可能需要对失衡的比例做一些调整,例如重采样欠采样等等。现在数据集看上去没有什么大的问题了,但是在训练之前,我们还是应当对数据进行标准化处理。

    模型训练之前,我们要对数据进行预处理。sklearn中的preprocessing模块提供非常多的数据归一化的类。

    标准化之后的数据不仅可以提高模型的训练速度,并且不同的标准会带来不一样的好处。

    from sklearn.preprocessing import StandardScaler
    StandardScaler().fit_transform(data)

    例如,z-score 标准化将样本的特征值转换到同一量纲下,使得不同特征之间有可比性。以上我们就是使用了z-score标准化,sklearnpreprocessing中还有一些其他的标准化方法,有兴趣的朋友可以查看官方文档。

    转自https://zhuanlan.zhihu.com/p/33420189

  • 相关阅读:
    第九周上机作业
    购物商城
    安卓第四周作业
    第十五周作业
    第十三周作业-集合
    第十三周上机练习
    第十二周作业
    上机练习 5.21
    java第十一周作业
    java第十一周上机练习
  • 原文地址:https://www.cnblogs.com/huangmouren233/p/14912534.html
Copyright © 2011-2022 走看看