scikit-learn数据集

Scikit-learn 数据集

在使用Scikit-learn数据集之前要先引用相应的包sklearn.datasets。数据集详细的信息还是要参考官方文档的。

数据集简介

  1. The dataset loaders. 可以加载sklearn包自带的一些小型数据集,例如Toy datasets.

  2. The dataset fetchers. 可以下载并加载一些大型数据集。

上面两种接口可以通过属性n_samples*n_features获得长度为n_samples的numpy array格式的数据;键data访问数据,键target获得标签。

如果只是想获得数据和标签的元组,可以将输入参数return_X_y设为True。

  1. The dataset generation functions. 可以生成一些常见的数据集,例如服从高斯分布的数据。返回n_samples*n_features的元组(X, y)。

  2. 还包含其他数据集,例如图片svmlight/libsvm格式的数据集等。

toy数据集

导入数据简介任务大小(样本*属性)
load_boston([return_X_y])boston房价回归506*13
load_iris([return_X_y])鸢尾花数据集分类150*4
load_diabetes([return_X_y])糖尿病数据集回归442*10
load_digits([n_class, return_X_y])手写字数据集分类1797*64
load_linnerud([return_X_y])健身数据集多分类20*3
load_wine([return_X_y])红酒数据集分类178*13
load_breast_cancer([return_X_y])乳腺癌数据集分类569*30

糖尿病数据集

糖尿病数据集介绍

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

数据集使用

可以通过下面的语句查看数据集信息

from sklearn import datasets
diabetes = datasets.load_diabetes()                         #载入数据
print(diabetes.data)                                         #数据
print(diabetes.target)                                       #类标
print(diabetes.feature_names)                                #特征
print(u'总行数: ', len(diabetes.data), len(diabetes.target)) #数据总行数
print(u'特征数: ', len(diabetes.data[0]))                    #每行数据集维数
print(u'数据类型: ', diabetes.data.shape)                    #类型
print(type(diabetes.data), type(diabetes.target))            #数据集类型

也可以访问数据集的DESCR属性获得数据集的完整描述,而某些数据集包含feature_names和target_names。

获得数据可以使用diabetes_X, diabetes_y = datasets.load_diabetes(return_X_y = True),返回值: X: [n_samples, n_features]是特征矩阵的大小, y: [n_maples]是返回的标签数据,每条数据的标签。

# 糖尿病实例 import package
from sklearn import datasets, linear_model
# Load the diabetes dataset 
diabetes_X, diabetes_y = datasets.load_diabetes(return_X_y = True)
# Size of dataset
diabetes_X.shape

生成服从特定概率分布的数据集

1. 单标签数据集

make_blobs产生多类数据集,对每个类的中心和标准差有很好的控制

输入参数:sklearn.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)[source]

参数类别默认值说明
n_samplesint类型可选参数 (default=100)总的点数,平均的分到每个clusters中
n_featuresint类型可选参数 (default=2)每个样本的特征维度
centersint类型 or 聚类中心坐标元组构成的数组类型可选参数(default=3)产生的中心点的数量, or 固定中心点位置
cluster_stdfloat or floats序列可选参数 (default=1.0)clusters的标准差
center_box一对floats (min, max)可选参数 (default=(-10.0, 10.0))随机产生数据的时候,每个cluster中心的边界
shuffleboolean可选参数 (default=True)打乱样本
random_stateint/ RandomState对象 / None可选参数(default=None)如果是int,random_state作为随机数产生器的seed; 如果是RandomState对象, random_state是随机数产生器; 如果是None, RandomState 对象是随机数产生器通过np.random

实例:产生两类样本点,两个聚类中心,坐标为(-3, 3)和(3, 3);方差为0.5和0.7;样本点有1K个,每个点的纬度为2.

from sklearn.datasets.samples_generator import make_blobs
centers = [(-3, -3),(3, 3)]
cluster_std = [0.5,0.7]
X,y = make_blobs(n_samples=1000, centers=centers,n_features=2, random_state=0, cluster_std=cluster_std)

%matplotlib inline
import matplotlib
import matplotlib.pyplot as plt
plt.style.use('ggplot')
plt.figure(figsize=(20,5))
plt.subplot(1, 2, 1 )
plt.scatter(X[:,0] , X[:,1],  c = y, alpha = 0.7)
plt.subplot(1, 2, 2)
plt.hist(y)
plt.show()

实例:产生3类样本点,3个距离中心,方差分别为0.5,0.7, 0.5,2K个样本点。

from sklearn.datasets.samples_generator import make_blobs
centers = [(-3, -3),(0,0),(3, 3)]
cluster_std = [0.5,0.7,0.5]
X,y = make_blobs(n_samples=2000, centers=centers,n_features=2, random_state=0, cluster_std=cluster_std)

%matplotlib inline
import matplotlib
import matplotlib.pyplot as plt
plt.style.use('ggplot')
plt.figure(figsize=(20,5))
plt.subplot(1, 2, 1 )
plt.scatter(X[:,0] , X[:,1],  c = y, alpha = 0.7)
plt.subplot(1, 2, 2)
plt.hist(y)
plt.show()

2. 有噪点的数据集

make_blobs和make_classification都通过为每个类分配一个或多个正态分布的点簇来创建多类数据集。make_blobs提供了有关每个聚类的中心和标准偏差,便于聚类。 make_classification专门通过以下方式引入噪声:相关,冗余和非信息性特征;每个类别有多个高斯聚类;以及通过特征空间的线性变换。

输入参数:sklearn.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)

返回值:* X: array of shape [n_sample, n_features] 特征矩阵
* y: array of shape [n_sample] 矩阵每一行的整数类型标签

参数类型默认值说明
n_samplesint类型可选 (default=100)样本数量
n_featuresint可选 (default=20)总的特征数量,是从有信息的数据点,冗余数据点,重复数据点,和特征点-有信息的点-冗余的点-重复点中随机选择的
n_informativeintoptional (default=2)informative features数量
n_redundantintoptional (default=2)redundant features数量
n_repeatedintoptional (default=0)duplicated features数量
n_classesintoptional (default=2)类别或者标签数量
n_clusters_per_classintoptional (default=2)每个class中cluster数量
weightsfloats列表 or None(default=None)每个类的权重,用于分配样本点
flip_yfloatoptional (default=0.01)随机交换样本的一段
class_sepfloatoptional (default=1.0)超立方体维数乘积
hypercubebooleanoptional (default=True)如果为Ture则聚类到超立方体的顶点上. 如果为False则随机放置
shiftfloat,array of shape [n_features] or Noneoptional (default=0.0)按照指定的值改变特征. 如果是None,特征就在[-class_sep,class_sep]中随机选取值来改变
scalefloat array of shape [n_features] or Noneoptional (default=1.0)将特征值乘以指定值. 如果是None,特征就乘以[1,100]内的随机值. 注意特征值放缩是在改变之后
shufflebooleanoptional (default=True)随机排列样本和特征
random_stateint,RandomState instance or Noneoptional (default=None)如果是int型,random_state由随机生成器的随机种子生成; 如果是RandomState instance,random_state 是随机生成; 如果是None,随机由np.random随机产生.
from sklearn.datasets.samples_generator import make_classification
X,y = make_classification(n_samples=2000, n_features=10, n_informative=4, n_classes=4, random_state=0)

%matplotlib inline
import matplotlib
import matplotlib.pyplot as plt
plt.style.use('ggplot')
plt.figure(figsize=(20,5))
plt.subplot(1, 2, 1 )
plt.scatter(X[:,0] , X[:,1],  c = y, alpha = 0.7)
plt.subplot(1, 2, 2)
plt.hist(y)
plt.show()

3. 高斯分布数据集

输入参数:sklearn.datasets.make_gaussian_quantiles(mean=None, cov=1.0, n_samples=100, n_features=2, n_classes=3, shuffle=True, random_state=None)

参数类型默认说明
meanarray of shape [n_features]optional (default=None)指定多维正态分布的均值. 如果是None就使用原点(0, 0, …).
covfloatoptional (default=1.)cov乘以单位矩阵产生协方差矩阵. 该数据集仅产生对称正态分布
n_samplesintoptional (default=100)注意样本点在各个类之间均匀分布
n_featuresintoptional (default=2)每个样本的特征数量.
n_classesintoptional (default=3)分类数
shufflebooleanoptional (default=True)更改样本
random_stateint, RandomState instance or Noneoptional (default=None)如果是int型,random_state由随机生成器的随机种子生成; 如果是RandomState instance,random_state 是随机生成; 如果是None,随机由np.random随机产生.
from sklearn.datasets.samples_generator import make_gaussian_quantiles
X,y = make_gaussian_quantiles(mean=(1,1), cov=1.0, n_samples=1000, n_features=2, n_classes=2, shuffle=True, random_state=None)

%matplotlib inline
import matplotlib
import matplotlib.pyplot as plt
plt.style.use('ggplot')
plt.figure(figsize=(20,5))
plt.subplot(1, 2, 1 )
plt.scatter(X[:,0] , X[:,1],  c = y, alpha = 0.7)
plt.subplot(1, 2, 2)
plt.hist(y)
plt.show()

4. 产生二分类数据

make_hastie_10_2产生二分类数据

参数类型默认说明
n_samplesintoptional (default=12000)样本数量
random_stateint, RandomState instance or Noneoptional (default=None)如果是int型,random_state由随机生成器的随机种子生成; 如果是RandomState instance,random_state 是随机生成; 如果是None,随机由np.random随机产生.
from sklearn.datasets.samples_generator import make_hastie_10_2
X,y = make_hastie_10_2(n_samples=1000, random_state=None)

%matplotlib inline
import matplotlib
import matplotlib.pyplot as plt
plt.style.use('ggplot')
plt.figure(figsize=(20,5))
plt.subplot(1, 2, 1 )
plt.scatter(X[:,0] , X[:,1],  c = y, alpha = 0.7)
plt.subplot(1, 2, 2)
plt.hist(y)
plt.show()

其他数据集

图片数据集

scikit-learn自带一组JPEG格式的图片,可用于测试2D数据的算法。

导入图片简介
load_sample_images()导入样本图片,用于加载自带的2个图片
load_sample_images(image_name)导入单个图片,返回numpy数组,用于加载外部图片

图片的默认uint-8格式。如果首先将输入转换为浮点表示形式,则机器学习算法效果最好。另外,如果您打算使用matplotlib.pyplpt.imshow,请不要忘记将其缩放到0-1。

# Authors: Robert Layton <robertlayton@gmail.com>
#          Olivier Grisel <olivier.grisel@ensta.org>
#          Mathieu Blondel <mathieu@mblondel.org>
#
# License: BSD 3 clause

print(__doc__)
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.metrics import pairwise_distances_argmin
from sklearn.datasets import load_sample_image
from sklearn.utils import shuffle
from time import time

n_colors = 64

# Load the Summer Palace photo
china = load_sample_image("china.jpg")

# Convert to floats instead of the default 8 bits integer coding. Dividing by
# 255 is important so that plt.imshow behaves works well on float data (need to
# be in the range [0-1])
china = np.array(china, dtype=np.float64) / 255

# Load Image and transform to a 2D numpy array.
w, h, d = original_shape = tuple(china.shape)
assert d == 3
image_array = np.reshape(china, (w * h, d))

print("Fitting model on a small sub-sample of the data")
t0 = time()
image_array_sample = shuffle(image_array, random_state=0)[:1000]
kmeans = KMeans(n_clusters=n_colors, random_state=0).fit(image_array_sample)
print("done in %0.3fs." % (time() - t0))

# Get labels for all points
print("Predicting color indices on the full image (k-means)")
t0 = time()
labels = kmeans.predict(image_array)
print("done in %0.3fs." % (time() - t0))


codebook_random = shuffle(image_array, random_state=0)[:n_colors]
print("Predicting color indices on the full image (random)")
t0 = time()
labels_random = pairwise_distances_argmin(codebook_random,
                                          image_array,
                                          axis=0)
print("done in %0.3fs." % (time() - t0))


def recreate_image(codebook, labels, w, h):
    """Recreate the (compressed) image from the code book & labels"""
    d = codebook.shape[1]
    image = np.zeros((w, h, d))
    label_idx = 0
    for i in range(w):
        for j in range(h):
            image[i][j] = codebook[labels[label_idx]]
            label_idx += 1
    return image

# Display all results, alongside original image
plt.figure(1)
plt.clf()
plt.axis('off')
plt.title('Original image (96,615 colors)')
plt.imshow(china)

plt.figure(2)
plt.clf()
plt.axis('off')
plt.title('Quantized image (64 colors, K-Means)')
plt.imshow(recreate_image(kmeans.cluster_centers_, labels, w, h))

plt.figure(3)
plt.clf()
plt.axis('off')
plt.title('Quantized image (64 colors, Random)')
plt.imshow(recreate_image(codebook_random, labels_random, w, h))
plt.show()

svmlight/libsvm格式的数据集

SVMlight是实现半监督SVM的一个工具包,LIBSVM是台湾大学林智仁(Lin Chih-Jen)教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包.

from sklearn.datasets import load_svmlight_file
# 加载数据集
X_train, y_train = load_svmlight_file("/path/to/train_dataset.txt")
# 加载多个数据集
X_train, y_train, X_test, y_test = load_svmlight_files(("/path/to/train_dataset.txt", "/path/to/test_dataset.txt"))
# 保证X_test, y_test有相同的特征值
X_test, y_test = load_svmlight_file("/path/to/test_dataset.txt", n_features=X_train.shape[1])

从openml.org下载数据集

openml.org是一个公开的机器学习网站。

from sklearn.datasets import fetch_openml
mice = fetch_openml(name='miceprotein', version=4)
print(mice.data.shape) #(1080, 77)
print(mice.target.shape) #(1080,)
print(np.unique(mice.target)) #'c-CS-m', 'c-CS-s', 'c-SC-m', 'c-SC-s', 't-CS-m', 't-CS-s', 't-SC-m', 't-SC-s'
print(mice.DESCR) 
print(mice.details) 
print(mice.url)

on
from sklearn.datasets import fetch_openml
mice = fetch_openml(name=‘miceprotein’, version=4)
print(mice.data.shape) #(1080, 77)
print(mice.target.shape) #(1080,)
print(np.unique(mice.target)) #‘c-CS-m’, ‘c-CS-s’, ‘c-SC-m’, ‘c-SC-s’, ‘t-CS-m’, ‘t-CS-s’, ‘t-SC-m’, ‘t-SC-s’
print(mice.DESCR)
print(mice.details)
print(mice.url)


  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值