美文网首页
scikit数据集学习

scikit数据集学习

作者: 不想当社畜 | 来源:发表于2018-06-19 20:08 被阅读0次

    说明

    最近主要想慢慢学习一下scikit-learn相关的知识,并且想把学习过程中的东西记录下来。

    scikit 数据集

    scikit-learn自带了好多数据集,它基本能满足机器学习各个领域数据。

    • 简单加载数据集

    1. 导入加载数据模块
    from sklearn import datasets
    

    数据集模块当中有各种各样的数据集,可以通过观察源码了解一下,也可以查看官方自带帮助文档了解。

    • 源码

    观察源码看到可以加载这么多数据集.

    源码_datasets.PNG
    • 官方教程

    这个更权威和具体一点,建议可以多看看官方的这个教程.

    scikit中数据集主要分为两个部分:加载数据集和生成数据集.
    scikit可以自己生成你所需要的数据集(具体查看帮助文档).

    pdf_datasets.PNG

    2.导入数据

    # 加载数据集
    iris = datasets.load_iris() # 导入iris数据集
    boston = datasets.load_boston() # 导入房价预测模型
    digits = datasets.load_digits() # 导入digits数据集
    

    返回的是数据对象,通过函数dir()查看对象的属性

    # 查看对象属性
    print('iris ',dir(iris))  # 查看iris属性
    print('digits',dir(digits)) # 查看digits属性
    print('boston',dir(boston)) #查看boston属性
    
    

    可以看到各个对象所携有的属性

    iris  ['DESCR', 'data', 'feature_names', 'target', 'target_names']
    digits ['DESCR', 'data', 'images', 'target', 'target_names']
    boston ['DESCR', 'data', 'feature_names', 'target']
    

    其中:

    1. 'DESCR'表示的是对数据集的描述
    2. 'data'表示数据集中的特征
    3. 'target'表示数据的标签 (由于数据集都是监督学习 所以都有特征和标签)
    4. 'feature_names'表示的特征代表的含义
    5. 'target_names'表示标签数字对应的含义
    6. 'images'表示图片大小

    解释一下: 前面3个基本所有监督学习数据基本都共有的,对数据的描述('DESCR')、特征('data')、标签('target')

    第4个代表数据集中每个特征中对应的含义.

    比如查看iris.data的大小和iris.feature_names值

    print(iris.data.shape) #  查看数据集特征形状
    print(iris.feature_names)
    

    输出结果

    (150, 4)
    ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
    

    表示iris数据集中一共有150个样本点,每个样本有4种特征,特征的具体数值存放在data中.但每种特征代表含义存放在fea_names中.第一个特征代表'sepal length (cm)',第二个特征代表 'sepal width (cm)' ,等等

    第5个标签代表 的不同target值代表的具体含义.
    由于iris 和 digits 数据集是分类数据集,所以它们的标签是有具体含义。而回归问题的话,是回归到具体数值(不需要不同数值代表不同含义)。

    比如:查看iris的target值和target_names值

    print(iris.target)
    print(iris.target_names)
    

    输出结果

    [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
     0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
     1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2
     2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
     2 2]
    ['setosa' 'versicolor' 'virginica']
    

    target 中有三种值0 1 2 ,而target_names有3个值. 当标签值为0 样本标签为'setosa'
    1 -- 'versicolor' 2 -- 'virginica' 存在一一对应的关系.

    不过会发现digits没有feature_names属性,原因是因为该数据集是图片,它的特征是像素点,所以不需要特征没有实质含义,所以没有feature_names属性,但有images属性,他表示图片的长宽.

    print(digits.data.shape)
    print(digits.images.shape)
    

    输出结果:

    (1797, 64)
    (1797, 8, 8)
    

    上一个表示数据集一共有1797个样本,每个数据集有64个特征.
    第二个表示数据集有1797个样本,每个样本是按照长8个像素宽8个像素排列的.

    由于digits数据集样本是图片

    import matplotlib.pyplot as plt
    plt.imshow(digits.image[0]) # 输出第一个样本图片
    plt.show()
    
    digits.png

    上述完整的代码

    有些参数可以随便调!

    from sklearn import datasets # 导入模块
    
    # 加载数据
    iris = datasets.load_iris() # 导入iris数据集
    boston = datasets.load_boston() # 导入房价预测模型
    digits = datasets.load_digits() # 导入digits数据集
    
    # 查看对象属性
    print('iris ',dir(iris))  # 查看iris属性
    print('digits',dir(digits)) # 查看digits属性
    print('boston',dir(boston)) #查看boston属性
    
    
    print(iris.data.shape) # 查看数据集特征形状
    print(iris.feature_names)
    
    print(iris.target)
    print(iris.target_names)
    
    print(digits.data.shape)
    print(digits.images.shape)
    
    # 观察digits的属性 data 表示的是样本大小(1797 ,64 ) 而images表示图片尺寸和样本数目 (1797,8,8)
    
    import matplotlib.pyplot as plt
    plt.imshow(digits.images[0])
    plt.show()
    
    

    相关文章

      网友评论

          本文标题:scikit数据集学习

          本文链接:https://www.haomeiwen.com/subject/zbjzeftx.html