scikit数据集学习

2018-06-19  本文已影响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()

上一篇下一篇

猜你喜欢

热点阅读