sklearn中datasets的使用与实践

介绍
  sklearn.datasets模块主要提供了一些导入、在线下载及本地生成数据集的方法,可以通过dir或help命令查看,目前主要有三种形式:

  • load_<dataset_name> 本地加载数据,保存在了本地磁盘上
    在这里插入图片描述
  • fetch_<dataset_name> 远程加载数据
  • make_<dataset_name> 构造数据集

方法

  1. 本地加载数据集

数据集文件在sklearn安装目录下datasets\data文件下,如果有兴趣可进入模块目录查看
  

datasets.load_boston #波士顿房价数据集  
datasets.load_breast_cancer #乳腺癌数据集  
datasets.load_diabetes #糖尿病数据集  
datasets.load_digits #手写体数字数据集  
datasets.load_files  
datasets.load_iris #鸢尾花数据集  
datasets.load_lfw_pairs  
datasets.load_lfw_people  
datasets.load_linnerud #体能训练数据集  
datasets.load_mlcomp  
datasets.load_sample_image  
datasets.load_sample_images  
datasets.load_svmlight_file  
datasets.load_svmlight_files  

2、远程加载数据集
  比较大的数据集,主要用于测试解决实际问题,支持在线下载,下载下来的数据,默认保存在~/scikit_learn_data文件夹下,可以通过设置环境变量SCIKIT_LEARN_DATA修改路径,datasets.get_data_home()获取下载路径。
  在这里插入图片描述

datasets.fetch_20newsgroups  
datasets.fetch_20newsgroups_vectorized  
datasets.fetch_california_housing  
datasets.fetch_covtype  
datasets.fetch_kddcup99  
datasets.fetch_lfw_pairs  
datasets.fetch_lfw_people  
datasets.fetch_mldata  
datasets.fetch_olivetti_faces  
datasets.fetch_rcv1  
datasets.fetch_species_distributions  

3、构造数据集
下面以make_regression()函数为例,首先看看函数语法:
make_regression(n_samples=100, n_features=100, n_informative=10, n_targets=1, bias=0.0, effective_rank=None, tail_strength=0.5, noise=0.0, shuffle=True, coef=False, random_state=None)
参数说明:
n_samples:样本数
n_features:特征数(自变量个数)
n_informative:相关特征(相关自变量个数)即参与了建模型的特征数
n_targets:因变量个数
bias:偏差(截距)
coef:是否输出coef标识
在这里插入图片描述

datasets.make_biclusters  
datasets.make_blobs  
datasets.make_checkerboard  
datasets.make_circles  
datasets.make_classification  
datasets.make_friedman1  
datasets.make_friedman2  
datasets.make_friedman3  
datasets.make_gaussian_quantiles  
datasets.make_hastie_10_2  
datasets.make_low_rank_matrix  
datasets.make_moons  
datasets.make_multilabel_classification  
datasets.make_regression  
datasets.make_s_curve  
datasets.make_sparse_coded_signal  
datasets.make_sparse_spd_matrix  
datasets.make_sparse_uncorrelated  
datasets.make_spd_matrix  
datasets.make_swiss_roll  

实践

1、本地磁盘自带的小数据集

1.1 波士顿房价数据(适用于回归任务)

这个数据集包含了506处波士顿不同地理位置的房产的房价数据(因变量),和与之对应的包含房屋以及房屋周围的详细信息(自变量),其中包含城镇犯罪率、一氧化氮浓度、住宅平均房间数、到中心区域的加权距离以及自住房平均房价等13个维度的数据,因此,波士顿房价数据集能够应用到回归问题上。

加载数据进来是字典类型

from sklearn import datasets

print(datasets.load_iris())

x = datasets.load_iris()['data']
label = datasets.load_iris()['target']
target_names = datasets.load_iris()['target_names']
feature_names = datasets.load_iris()['feature_names']

print(x)
print(label)
print(target_names)
print(feature_names)

1.2 威斯康辛州乳腺癌数据(适用于分类问题)

这个数据集包含了威斯康辛州记录的569个病人的乳腺癌恶性/良性(1/0)类别型数据(训练目标),以及与之对应的30个维度的生理指标数据;因此这是个非常标准的二类判别数据集。

from sklearn import datasets

my_datas = datasets.load_breast_cancer()
print(my_datas)

x = my_datas['data']
label = my_datas['target']
target_names = my_datas['target_names']
feature_names = my_datas['feature_names']

print(x)
print(label)
print(target_names)
print(feature_names)

在这里插入图片描述
1.3 糖尿病数据(适用于回归任务)

这是一个糖尿病的数据集,主要包括442行数据,10个属性值,分别是:Age(年龄)、性别(Sex)、Body mass index(体质指数)、Average Blood Pressure(平均血压)、S1~S6一年后疾病级数指标。Target为一年后患疾病的定量指标,因此适合与回归任务;

from sklearn import datasets

my_datas = datasets.load_diabetes()
# print(my_datas)
print(my_datas.keys())

x = my_datas['data']
label = my_datas['target']
# target_names = my_datas['target_names']
feature_names = my_datas['feature_names']

print(x)
print(label)
# print(target_names)
print(feature_names)

在这里插入图片描述
1.4 手写数字数据集(适用于分类任务)

这个数据集是结构化数据的经典数据,共有1797个样本,每个样本有64的元素,对应到一个8x8像素点组成的矩阵,每一个值是其灰度值,我们都知道图片在计算机的底层实际是矩阵,每个位置对应一个像素点,有二值图,灰度图,1600万色图等类型,在这个样本中对应的是灰度图,控制每一个像素的黑白浓淡,所以每个样本还原到矩阵后代表一个手写体数字,这与我们之前接触的数据有很大区别;
在这里插入图片描述
1.5 Fisher的鸢尾花数据(适用于分类问题)

著名的统计学家Fisher在研究判别分析问题时收集了关于鸢尾花的一些数据,这是个非常经典的数据集,datasets中自然也带有这个数据集;这个数据集包含了150个鸢尾花样本,对应3种鸢尾花,各50个样本(target),以及它们各自对应的4种关于花外形的数据(自变量);

from sklearn import datasets
import numpy as np
from matplotlib import pyplot as plt

my_datas = datasets.load_iris()
print(my_datas.keys())

x = my_datas['data']
label = my_datas['target']
target_names = my_datas['target_names']
feature_names = my_datas['feature_names']

print(x)
print(label)
print(target_names)
print(feature_names)


在这里插入图片描述
1.6 红酒数据(适用于分类问题)

这是一个共178个样本,代表了红酒的三个档次(分别有59,71,48个样本),以及与之对应的13维的属性数据,非常适合用来练习各种分类算法;

from sklearn import datasets
import numpy as np
from matplotlib import pyplot as plt

my_datas = datasets.load_wine()
print(my_datas.keys())

x = my_datas['data']
label = my_datas['target']
target_names = my_datas['target_names']
feature_names = my_datas['feature_names']

print(x)
print(label)
print(target_names)
print(feature_names)


在这里插入图片描述

2、自定义数据集

前面我们介绍了几种datasets自带的经典数据集,但有些时候我们需要自定义生成服从某些分布或者某些形状的数据集,而datasets中就提供了这样的一些方法:

2.1 产生服从正态分布的聚类用数据

datasets.make_blobs(n_samples=100, n_features=2, centers=3, cluster_std=1.0, center_box=(-10.0, 10.0), shuffle=True, random_state=None),其中:

n_samples:控制随机样本点的个数

n_features:控制产生样本点的维度(对应n维正态分布)

centers:控制产生的聚类簇的个数
cluster_std:属于同一个类簇的数据之间的方差

from sklearn import datasets
import numpy as np
from matplotlib import pyplot as plt

my_datas = datasets.make_blobs(n_samples=1500, n_features=25, centers=3, cluster_std=[1.0, 2.0, 3.0])
x, y = my_datas
plt.scatter(x[:, 0], x[:, 1], c=y, s=8)

# x = my_datas['data']
# label = my_datas['target']
# target_names = my_datas['target_names']
# feature_names = my_datas['feature_names']
#
# print(x)
# print(label)
# print(target_names)
# print(feature_names)


在这里插入图片描述

2.2 产生同心圆样本点

datasets.make_circles(n_samples=100, shuffle=True, noise=0.04, random_state=None, factor=0.8)

n_samples:控制样本点总数

noise:控制属于同一个圈的样本点附加的漂移程度

factor:控制内外圈的接近程度,越大越接近,上限为1

from sklearn import datasets
import numpy as np
from matplotlib import pyplot as plt

x, y = datasets.make_circles(n_samples=1000, shuffle=True, noise=0.05, random_state=2, factor=0.35)
plt.scatter(x[:, 0], x[:, 1], c=y, s=8)

# x = my_datas['data']
# label = my_datas['target']
# target_names = my_datas['target_names']
# feature_names = my_datas['feature_names']
#
# print(x)
# print(label)
# print(target_names)
# print(feature_names)


在这里插入图片描述
2.3 生成模拟分类数据集

datasets.make_classification(n_samples=100, n_features=20, n_informative=2, n_redundant=2, n_repeated=0, n_classes=2, n_clusters_per_class=2, weights=None, flip_y=0.01, class_sep=1.0, hypercube=True, shift=0.0, scale=1.0, shuffle=True, random_state=None)

n_samples:控制生成的样本点的个数

n_features:控制与类别有关的自变量的维数

n_classes:控制生成的分类数据类别的数量

from sklearn import datasets

X,y = datasets.make_classification(n_samples=100, n_features=20, n_informative=2, n_redundant=2, n_repeated=0, n_classes=2, n_clusters_per_class=2, weights=None, flip_y=0.01, class_sep=1.0, hypercube=True, shift=0.0, scale=1.0, shuffle=True, random_state=None)

print(X.shape)
print(y.shape)
set(y)
  • 6
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值