sklearn生成数据集(sklearn提供的自带的数据集)
sklearn生成数据集(sklearn提供的自带的数据集)回归加载和返回一个boston房屋价格的数据集任务数据规模load_boston()
sklearn 的数据集有好多个种- 自带的小数据集(packaged dataset):sklearn.datasets.load_
- 可在线下载的数据集(Downloaded Dataset):sklearn.datasets.fetch_
- 计算机生成的数据集(Generated Dataset):sklearn.datasets.make_
- svmlight/libsvm格式的数据集:sklearn.datasets.load_svmlight_file(…)
- 从买了data.org在线下载获取的数据集:sklearn.datasets.fetch_mldata(…)
其中的自带的小的数据集为:sklearn.datasets.load_
sklearn包含一些不许要下载的toy数据集,见下表:
导入toy数据的方法 |
介绍 |
任务 |
数据规模 |
load_boston() |
加载和返回一个boston房屋价格的数据集 |
回归 |
506*13 |
load_iris([return_X_y]) |
加载和返回一个鸢尾花数据集 |
分类 |
150*4 |
load_diabetes() |
加载和返回一个糖尿病数据集 |
回归 |
442*10 |
load_digits([n_class]) |
加载和返回一个手写字数据集 |
分类 |
1797*64 |
load_linnerud() |
加载和返回健身数据集 |
多分类 |
20 |
这些数据集都可以在官网上查到,以鸢尾花为例,可以在官网上找到demo,http://scikit-learn.org/stable/auto_examples/datasets/plot_iris_dataset.html
from sklearn.datasets import load_iris
#加载数据集
iris=load_iris()
iris.keys() #dict_keys(['target' 'DESCR' 'data' 'target_names' 'feature_names'])
#数据的条数和维数
n_samples n_features=iris.data.shape
print("number of sample:" n_samples) #Number of sample: 150
print("Number of feature" n_features) #Number of feature 4
#第一个样例
print(iris.data[0]) #[ 5.1 3.5 1.4 0.2]
print(iris.data.shape) #(150 4)
print(iris.target.shape) #(150 )
print(iris.target)
"""
[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]
"""
import numpy as np
print(iris.target_names) #['setosa' 'versicolor' 'virginica']
np.bincount(iris.target) #[50 50 50]
import matplotlib.pyplot as plt
#以第3个索引为划分依据,x_index的值可以为0,1,2,3
x_index=3
color=['blue' 'red' 'green']
for label color in zip(range(len(iris.target_names)) color):
plt.hist(iris.data[iris.target==label x_index] label=iris.target_names[label] color=color)
plt.xlabel(iris.feature_names[x_index])
plt.legend(loc="Upper right")
plt.show()
#画散点图,第一维的数据作为x轴和第二维的数据作为y轴
x_index=0
y_index=1
colors=['blue' 'red' 'green']
for label color in zip(range(len(iris.target_names)) colors):
plt.scatter(iris.data[iris.target==label x_index]
iris.data[iris.target==label y_index]
label=iris.target_names[label]
c=color)
plt.xlabel(iris.feature_names[x_index])
plt.ylabel(iris.feature_names[y_index])
plt.legend(loc='upper left')
plt.show()
手写数字数据集load_digits():用于多分类任务的数据集
from sklearn.datasets import load_digits
digits=load_digits()
print(digits.data.shape)
import matplotlib.pyplot as plt
plt.gray()
plt.matshow(digits.images[0])
plt.show()
from sklearn.datasets import load_digits
digits=load_digits()
digits.keys()
n_samples n_features=digits.data.shape
print((n_samples n_features))
print(digits.data.shape)
print(digits.images.shape)
import numpy as np
print(np.all(digits.images.reshape((1797 64))==digits.data))
fig=plt.figure(figsize=(6 6))
fig.subplots_adjust(left=0 right=1 bottom=0 top=1 hspace=0.05 wspace=0.05)
#绘制数字:每张图像8*8像素点
for i in range(64):
ax=fig.add_subplot(8 8 i 1 xticks=[] yticks=[])
ax.imshow(digits.images[i] cmap=plt.cm.binary interpolation='nearest')
#用目标值标记图像
ax.text(0 7 str(digits.target[i]))
plt.show()
乳腺癌数据集load-barest-cancer():简单经典的用于二分类任务的数据集
糖尿病数据集:load-diabetes():经典的用于回归认为的数据集,值得注意的是,这10个特征中的每个特征都已经被处理成0均值,方差归一化的特征值,
波士顿房价数据集:load-boston():经典的用于回归任务的数据集
体能训练数据集:load-linnerud():经典的用于多变量回归任务的数据集,其内部包含两个小数据集:Excise是对3个训练变量的20次观测(体重,腰围,脉搏),physiological是对3个生理学变量的20次观测(引体向上,仰卧起坐,立定跳远)
svmlight/libsvm的每一行样本的存放格式:
: : …
这种格式比较适合用来存放稀疏数据,在sklearn中,用scipy sparse CSR矩阵来存放X,用numpy数组来存放Y
from sklearn.datasets import load_svmlight_file
x_train y_train=load_svmlight_file("/path/to/train_dataset.txt" "")#如果要加在多个数据的时候,可以用逗号隔开
Sample images
sklearn 带有一组JPEG格式的图片,可用与测试需要2D数据的算法和流程
导入图片数据的方法 |
介绍 |
load_sample_images() |
导入样本图片,用于加载自带的2个图片 |
load_sample_image(image_name) |
导入单个图片,返回numpy数组,用于加载外部图片 |
生成数据集:可以用来分类任务,可以用来回归任务,可以用来聚类任务,用于流形学习的,用于因子分解任务的
用于分类任务和聚类任务的:这些函数产生样本特征向量矩阵以及对应的类别标签集合
make_blobs:多类单标签数据集,为每个类分配一个或多个正太分布的点集
make_classification:多类单标签数据集,为每个类分配一个或多个正太分布的点集,提供了为数据添加噪声的方式,包括维度相关性,无效特征以及冗余特征等
make_gaussian-quantiles:将一个单高斯分布的点集划分为两个数量均等的点集,作为两类
make_hastie-10-2:产生一个相似的二元分类数据集,有10个维度
make_circle和make_moom产生二维二元分类数据集来测试某些算法的性能,可以为数据集添加噪声,可以为二元分类器产生一些球形判决界面的数据
#生成多类单标签数据集
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets.samples_generator import make_blobs
center=[[1 1] [-1 -1] [1 -1]]
cluster_std=0.3
X labels=make_blobs(n_samples=200 centers=center n_features=2
cluster_std=cluster_std random_state=0)
print('X.shape' X.shape)
print("labels" set(labels))
unique_lables=set(labels)
colors=plt.cm.Spectral(np.linspace(0 1 len(unique_lables)))
for k col in zip(unique_lables colors):
x_k=X[labels==k]
plt.plot(x_k[: 0] x_k[: 1] 'o' markerfacecolor=col markeredgecolor="k"
markersize=14)
plt.title('data by make_blob()')
plt.show()
#生成用于分类的数据集
from sklearn.datasets.samples_generator import make_classification
X labels=make_classification(n_samples=200 n_features=2 n_redundant=0 n_informative=2
random_state=1 n_clusters_per_class=2)
rng=np.random.RandomState(2)
X =2*rng.uniform(size=X.shape)
unique_lables=set(labels)
colors=plt.cm.Spectral(np.linspace(0 1 len(unique_lables)))
for k col in zip(unique_lables colors):
x_k=X[labels==k]
plt.plot(x_k[: 0] x_k[: 1] 'o' markerfacecolor=col markeredgecolor="k"
markersize=14)
plt.title('data by make_classification()')
plt.show()
#生成球形判决界面的数据
from sklearn.datasets.samples_generator import make_circles
X labels=make_circles(n_samples=200 noise=0.2 factor=0.2 random_state=1)
print("X.shape:" X.shape)
print("labels:" set(labels))
unique_lables=set(labels)
colors=plt.cm.Spectral(np.linspace(0 1 len(unique_lables)))
for k col in zip(unique_lables colors):
x_k=X[labels==k]
plt.plot(x_k[: 0] x_k[: 1] 'o' markerfacecolor=col markeredgecolor="k"
markersize=14)
plt.title('data by make_moons()')
plt.show()
make_blobs 产生多类数据集,对每个类的中心和标准差有很好的控制
输入参数:
sklearn.datasets.samples_generator.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 |
int类型 |
可选参数 (default=100) |
总的点数,平均的分到每个clusters中。 |
n_features |
int类型 |
可选参数 (default=2) |
每个样本的特征维度。 |
centers |
int类型 or 聚类中心坐标元组构成的数组类型 |
可选参数(default=3) |
产生的中心点的数量 or 固定中心点位置。 |
cluster_std |
float or floats序列 |
可选参数 (default=1.0) |
clusters的标准差。 |
center_box |
一对floats (min max) |
可选参数 (default=(-10.0 10.0)) |
随机产生数据的时候,每个cluster中心的边界。 |
shuffle |
boolean |
可选参数 (default=True) |
打乱样本。 |
random_state |
int RandomState对象 or None |
可选参数 (default=None) |
如果是int random_state作为随机数产生器的seed; 如果是RandomState对象 random_state是随机数产生器; 如果是None RandomState 对象是随机数产生器通过np.random. |
返回的是:
X:[n_samples n_features]大小的特征矩阵 y: [n_samples]大小的标签数据矩阵,对应特征矩阵的每一行 例子:
- 例子:
产生两类样本点,两个聚类中心,坐标是(-3 -3)和(3 3); 方差是0.5和0.7; 样本点有1000个,每个点维度是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,样本点2000个
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()
输入参数:
sklearn.datasets.samples_generator.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 |
int类型 |
可选 (default=100) |
样本数量. |
n_features |
int |
可选 (default=20) |
总的特征数量 是从有信息的数据点,冗余数据点,重复数据点,和特征点-有信息的点-冗余的点-重复点中随机选择的。 |
n_informative |
int |
optional (default=2) |
informative features数量 |
n_redundant |
int |
optional (default=2) |
redundant features数量 |
n_repeated |
int |
optional (default=0) |
duplicated features数量 |
n_classes |
int |
optional (default=2) |
类别或者标签数量 |
n_clusters_per_class |
int |
optional (default=2) |
每个class中cluster数量 |
weights |
floats列表 or None |
(default=None) |
每个类的权重,用于分配样本点 |
flip_y |
float |
optional (default=0.01) |
随机交换样本的一段 |
class_sep |
float |
optional (default=1.0) |
The factor multiplying the hypercube dimension. |
hypercube |
boolean |
optional (default=True) |
If True the clusters are put on the vertices of a hypercube. If False the clusters are put on the vertices of a random polytope. |
shift |
float array of shape [n_features] or None |
optional (default=0.0) |
Shift features by the specified value. If None then features are shifted by a random value drawn in [-class_sep class_sep]. |
scale |
float array of shape [n_features] or None |
optional (default=1.0) |
Multiply features by the specified value. If None then features are scaled by a random value drawn in [1 100]. Note that scaling happens after shifting. |
shuffle |
boolean |
optional (default=True) |
Shuffle the samples and the features. |
random_state |
int RandomState instance or None |
optional (default=None) |
If int random_state is the seed used by the random number generator; If RandomState instance random_state is the random number generator; If None the random number generator is the RandomState instance used by np.random. |
返回的是:
X : array of shape [n_samples n_features]; 特征矩阵 y : array of shape [n_samples]:矩阵每一行的整数类型标签
例子:
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()
输入参数:
sklearn.datasets.samples_generator.make_gaussian_quantiles(mean=None cov=1.0 n_samples=100 n_features=2 n_classes=3 shuffle=True random_state=None)
参数 |
类型 |
默认 |
说明 |
mean |
array of shape [n_features] |
optional (default=None) |
The mean of the multi-dimensional normal distribution. If None then use the origin (0 0 …). |
cov |
float |
optional (default=1.) |
The covariance matrix will be this value times the unit matrix. This dataset only produces symmetric normal distributions. |
n_samples |
int |
optional (default=100) |
The total number of points equally divided among classes. |
n_features |
int |
optional (default=2) |
The number of features for each sample. |
n_classes |
int |
optional (default=3) |
The number of classes |
shuffle |
boolean |
optional (default=True) |
Shuffle the samples. |
random_state |
int RandomState instance or None |
optional (default=None) |
If int random_state is the seed used by the random number generator; If RandomState instance random_state is the random number generator; If None the random number generator is the RandomState instance used by 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()
产生用于二分类的数据。Hastie et al. 2009
输入参数:
参数 |
类型 |
默认 |
说明 |
n_samples |
int |
optional (default=12000) |
The number of samples. |
random_state |
int RandomState instance or None |
optional (default=None) |
If int random_state is the seed used by the random number generator; If RandomState instance random_state is the random number generator; If None the random number generator is the RandomState instance used by np.random. |
输出:
X : array of shape [n_samples 10] 特征矩阵。 y : array of shape [n_samples],对应特征矩阵每一个行的真实值。
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()