sklearn——加载数据集

1. 通用数据集 API

根据所需数据集的类型,有三种主要类型的数据集API接口可用于获取数据集;

方法一,loaders 可用来加载小的标准数据集,在玩具数据集中有介绍

方法二,fetchers 可用来下载并加载大的真实数据集,在真实世界中的数据集中有介绍

说明:

loaders和fetchers的所有函数都返回一个字典一样的对象,里面至少包含两项:shape为n_samples*n_features的数组,对应的字典key是data(20news groups数据集除外)以及长度为n_samples的numpy数组,包含了目标值,对应的字典key是target

通过将return_X_y参数设置为True,几乎所有这些函数都可以将输出约束为只包含数据和目标的元组。

数据集还包含一些对DESCR描述,同时一部分也包含feature_namestarget_names的特征。有关详细信息,请参阅下面的数据集说明

方法三,generation functions 它们可以用来生成受控的合成数据集(synthetic datasets),在人工合成的数据集中有介绍

说明:这些函数返回一个元组(X,y),该元组由shape为n_samples*n_features的numpy数组X和长度为n_samples的包含目标y的数组组成。

此外,还有一些用于加载其他格式或其他位置的数据集的混合工具(miscellanous tools),在加载其他类型的数据集中有介绍

2. 玩具数据集

调用描述 
load_boston([return_X_y])Load and return the boston house-prices dataset (regression). 
load_iris([return_X_y])Load and return the iris dataset (classification). 
load_diabetes([return_X_y])Load and return the diabetes dataset (regression). 
load_digits([n_class, return_X_y])Load and return the digits dataset (classification). 
load_linnerud([return_X_y])Load and return the linnerud dataset (multivariate regression). 
load_wine([return_X_y])Load and return the wine dataset (classification). 
load_breast_cancer([return_X_y])Load and return the breast cancer wisconsin dataset (classification). 

例:以加载iris(鸢尾花)Dataset数据集为例

功能:加载并返回IRIS数据集(分类)。

IRIS数据集是一个经典且非常简单的多类分类数据集。

类别数Classes3
每一个类别样本数Samples per class50
总样本数Samples total150
特征数Dimensionality4
特征Featuresreal, positive
参数:

return_X_y : boolean, default=False.

If True, returns (data, target) instead of a Bunch object. See below for more information about the data and target object.

New in version 0.18.

返回:

data : Bunch(像字典一样的对象 )

‘data’, 要学习的数据, ‘target’, 分类标签, ‘target_names’, 标签的含义, ‘feature_names’, 特征的含义, ‘DESCR’, 数据集的完整描述, ‘filename’, IRIS CSV数据集的物理位置(添加在Versio中N 0.20).

如果将参数 return_X_y 设定为True,则返回(data, target) 元组

New in version 0.18.

#导入数据集
from sklearn.datasets import load_iris
#1.创建对象,不指定return_X_y
data=load_iris()
print(type(data))          #<class 'sklearn.utils.Bunch'>
#获取对象参数,与获取字典的方式一样
x=data.data
y=data.target
print(x.shape)             # (150, 4)
print(y.shape)             #(150,)
#2.创建对象,指定return_X_y
data1=load_iris(return_X_y=True)
print(type(data1))
x1=data1[0]
y1=data1[1]
print(x1.shape)            # (150, 4)
print(y1.shape)            #(150,)

3 真实世界中的数据集

fetch_olivetti_faces([data_home, shuffle, …])Load the Olivetti faces data-set from AT&T (classification).
fetch_20newsgroups([data_home, subset, …])Load the filenames and data from the 20 newsgroups dataset (classification).
fetch_20newsgroups_vectorized([subset, …])Load the 20 newsgroups dataset and vectorize it into token counts (classification).
fetch_lfw_people([data_home, funneled, …])Load the Labeled Faces in the Wild (LFW) people dataset (classification).
fetch_lfw_pairs([subset, data_home, …])Load the Labeled Faces in the Wild (LFW) pairs dataset (classification).
fetch_covtype([data_home, …])Load the covertype dataset (classification).
fetch_rcv1([data_home, subset, …])Load the RCV1 multilabel dataset (classification).
fetch_kddcup99([subset, data_home, shuffle, …])Load the kddcup99 dataset (classification).
fetch_california_housing([data_home, …])Load the California housing dataset (regression).

例:加载自然条件下的已经标记的人脸数据集(LFW)

描述:总共有5749个人物对应id为0~5748,总共有13233张图片,每张图片大小为5828,由于resize默认值0.5,所有在不改变resize的情况下,返回图片的大小2914=62*47

类别数Classes5749
总样本数Samples total13233
特征数Dimensionality5828
特征Features

real, between 0 and 255

参数:

data_home : 可选的,默认值:没有

    为数据集指定另一个下载和缓存文件夹。默认情况下,所有scikit-learn数据都存储在“~/scikit_learn_data”子文件夹中。

funneled : 布尔值,可选,默认值:True      下载并使用数据集的漏斗变体。

resize : 浮点数据,可选,默认0.5              比例用于调整每张脸部图片的大小。

min_faces_per_person :整型数据,可选,默认值:没有

    提取的数据集只保留至少具有min_faces_per_person不同图片的人的图片。

color :布尔值,可选,默认为False

    保留3个RGB通道,而不是将它们平均到单个灰度通道。如果color=True,则数据的形状比color = False的形状多一个维度。

slice_ : 可选

   提供一个自定义2D切片(高度、宽度)来提取jpeg文件的“有趣”部分,并避免使用来自背景的统计相关性

download_if_missing : 可选,默认为True

   如果为False,如果数据在本地不可用,则引发IOError,而不是尝试从源站点下载数据。

return_X_y : 布尔值、默认= False

如果为真, 返回 (dataset.data, dataset.target) 否则,返回 Bunch (一种类似字典类型的数据)对象类型.

New in version 0.20.

返回:

dataset : 类dict对象,具有以下属性:

dataset.data : numpy array of shape (13233, 2914)

     每一行对应一个原始大小为62 x 47像素的网格化人脸图像。更改slice_或resize参数将更改输出的形状。

dataset.images : numpy array of shape (13233, 62, 47)

    每一行都是对应于数据集中5749个人之一的人脸图像。更改slice_或resize参数将更改输出的形状。

dataset.target : numpy array of shape (13233,)

    与每张人脸图像相关的标签。这些标签的范围从0-5748,并对应于人员id。

data.target_names:numpy array of shape(5749,)

    对应标签的人名
dataset.DESCR : string

     描述(LFW)数据集中标记的人脸。

(data, target) : tuple if return_X_y is True

New in version 0.20.
#导入数据集
from sklearn.datasets import load_iris
from sklearn.datasets import fetch_lfw_people
import matplotlib.pyplot as plt
import cv2
import numpy as np
#1.创建对象,不指定return_X_y
#data=load_iris()
data=fetch_lfw_people()
print(type(data))
#获取对象参数,与获取字典的方式一样
x=data.data
image=data.images
y=data.target
name=data.target_names
descr=data.DESCR
print(x.shape)
print(image.shape)
print(y[0])
print(data.target_names)
print(name.shape)
#print(descr)
#2.1显示图片,方法一
image_a=np.array(image[0],dtype=np.uint8)
plt.imshow(image_a)
plt.show()
#2.2显示图片,方法二,cv2仅支持uint8格式图片
#image_a=np.array(image[0],dtype=np.uint8)
#img_res=cv2.resize(image_a,dsize=(100,100),interpolation=cv2.INTER_CUBIC)
#cv2.imshow("a",img_res)
#cv2.waitKey()
#cv2.destroyAllWindows()

 4. 样本生成器

   4.1. 分类和聚类生成器——这些生成器将产生一个相应特征的离散矩阵。

   4.1.1. 单标签

          make_blobsmake_classification,make_gaussian_quantiles,make_hastie_10_2make_circlesmake_moon

   4.1.2. 多标签

   make_multilabel_classification

 4.1.3. 二分聚类

调用描述
make_biclusters(shape, n_clusters[, noise, …])Generate an array with constant block diagonal structure for biclustering.
make_checkerboard(shape, n_clusters[, …])Generate an array with block checkerboard structure for biclustering.

4.2. 回归生成器

   make_regression,make_sparse_uncorrelated,make_friedman1,make_friedman2,make_friedman3

4.3. 流形学习生成器

调用描述
make_s_curve([n_samples, noise, random_state])Generate an S curve dataset.
make_swiss_roll([n_samples, noise, random_state])Generate a swiss roll dataset.

4.4. 生成器分解

调用描述
make_low_rank_matrix([n_samples, …])Generate a mostly low rank matrix with bell-shaped singular values
make_sparse_coded_signal(n_samples, …[, …])Generate a signal as a sparse combination of dictionary elements.
make_spd_matrix(n_dim[, random_state])Generate a random symmetric, positive-definite matrix.
make_sparse_spd_matrix([dim, alpha, …])Generate a sparse symmetric definite positive matrix.

5. 加载其他数据集

5.1. 样本图片 

scikit 在通过图片的作者共同授权下嵌入了几个样本 JPEG 图片。这些图像为了方便用户对 test algorithms (测试算法)和 pipeline on 2D data (二维数据管道)进行测试。

调用描述
load_sample_images()Load sample images for image manipulation.
load_sample_image(image_name)Load the numpy array of a single sample image

5.2. svmlight或libsvm格式的数据集

5.3. 从openml.org下载数据集

openml.org是一个用于机器学习数据和实验的公共存储库,它允许每个人上传开放的数据集。

sklearn.datasets包中,可以通过sklearn.datasets.fetch_openml函数来从openml.org下载数据集.

5.4. 从外部数据集加载

scikit-learn使用任何存储为numpy数组或者scipy稀疏数组的数值数据。 其他可以转化成数值数组的类型也可以接受,如pandas中的DataFrame。

以下推荐一些将标准纵列形式的数据转换为scikit-learn可以使用的格式的方法:

  • pandas.io 提供了从常见格式(包括CSV,Excel,JSON,SQL等)中读取数据的工具.DateFrame 也可以从由 元组或者字典组成的列表构建而成.Pandas能顺利的处理异构的数据,并且提供了处理和转换 成方便scikit-learn使用的数值数据的工具。
  • scipy.io 专门处理科学计算领域经常使用的二进制格式,例如.mat和.arff格式的内容。
  • numpy/routines.io 将纵列形式的数据标准的加载为numpy数组
  • scikit-learn的datasets.load_svmlight_file处理svmlight或者libSVM稀疏矩阵
  • scikit-learn的 datasets.load_files 处理文本文件组成的目录,每个目录名是每个 类别的名称,每个目录内的每个文件对应该类别的一个样本

对于一些杂项数据,例如图像,视屏,音频。您可以参考:

存储为字符串的无序(或者名字)特征(在pandas的DataFrame中很常见)需要转换为整数,当整数类别变量 被编码成独热变量(sklearn.preprocessing.OneHotEncoder)或类似数据时,它或许可以被最好的利用。 参见预处理数据.

注意:如果你要管理你的数值数据,建议使用优化后的文件格式来减少数据加载时间,例如HDF5。像 H5Py, PyTables和pandas等的各种库提供了一个Python接口,来读写该格式的数据。

 

  • 6
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: sklearn房价预测数据集是一个经典的机器学习问题,旨在通过给定的房屋特征预测房价。这个数据集包含了506个样本和13个特征,如房间数、城镇犯罪率、学生-教师比例等。 要使用sklearn对房价进行预测,可以采用线性回归模型。该模型可以通过训练数据拟合出一个线性方程,从而预测房价。首先,需要将数据集分为训练集和测试集。通常,我们会将大多数数据作为训练集,少部分数据作为测试集。 接下来,我们可以使用sklearn库中的LinearRegression模型来训练模型。在训练过程中,模型会根据训练数据拟合出最佳的线性回归方程。然后,我们可以使用测试集来评估训练出的模型的性能。利用预测的房价和实际房价之间的差异来计算模型的均方误差(MSE)或者决定系数(R2 Score)等指标,从而评估模型的准确性。 除了线性回归模型外,sklearn还提供了其他一些模型,如决策树、支持向量机、随机森林等,可以用于房价预测。这些模型可以根据不同的数据特点和需求选择合适的模型进行训练和评估。 总之,使用sklearn房价预测数据集可以通过机器学习模型来预测房价。可以根据特征和标签之间的关系,拟合出一个最佳的预测模型,以便在未来预测房价时提供参考。 ### 回答2: sklearn房价预测数据集是一个经典的机器学习问题,旨在通过给定的特征来预测房屋的价格。这个数据集包含了506个样本和13个特征。其中的特征包括犯罪率、住宅用地比例、每个小镇的非零售业务面积比例等等。 我们首先需要导入sklearn库,并加载这个数据集。接着,我们可以将数据集分为训练集和测试集,通常采用80:20的比例。然后,我们可以选择合适的机器学习算法,例如线性回归模型。 在训练模型之前,我们可以进行一些数据预处理的步骤,例如特征缩放,以确保不同特征具有相同的尺度。然后,我们可以使用训练集的数据来拟合模型,使用测试集的数据来评估模型的性能。 评估模型的性能可以使用不同的指标,例如均方误差(Mean Squared Error)或决定系数(Coefficient of Determination)。这些指标可以帮助我们了解模型的预测能力和准确度。 如果模型的表现不佳,我们可以尝试调整模型的超参数,例如正则化参数或学习率等。同时,我们还可以通过特征选择来改进模型的性能,选择对于预测目标更重要的特征。 最后,我们可以使用训练好的模型来对新的样本进行预测。这个模型可以帮助我们预测房屋的价格,并提供给我们有关房屋市场的有用信息。 总而言之,sklearn房价预测数据集是一个非常好的实践机会,可以帮助我们理解机器学习模型的使用和性能评估。通过掌握这个数据集,我们可以更好地应用机器学习算法来解决房价预测这样的实际问题。 ### 回答3: sklearn房价预测数据集是一个经典的机器学习问题,被广泛用于房价预测模型的训练与评估。该数据集包含了一系列房屋的特征信息,例如房间的数量、土地面积、建造年份、位置等,以及相应的目标变量——房屋的价格。 使用sklearn进行房价预测的一般步骤如下: 1. 数据加载与预处理:首先,我们需要加载数据集并进行一些必要的预处理工作。可能的预处理包括数据清洗、缺失值处理、特征选择等。 2. 特征工程:特征工程是非常重要的一步,它涉及对原始特征进行转换和衍生,以更好地表达数据的特征。例如,可以计算每个房屋的平均房间面积、每个房屋与最近学校之间的距离等。 3. 模型选择与训练:根据预测问题的性质,我们可以选择不同的机器学习模型,如线性回归、决策树、随机森林等。然后,我们使用训练数据对选定的模型进行训练。 4. 模型评估与调优:使用测试数据集对训练好的模型进行评估,常用的评估指标包括均方误差(Mean Squared Error,简称MSE)和决定系数(R-squared)。如果模型表现不佳,我们需要进行调优,如调整模型参数、尝试不同的模型等。 5. 模型应用与预测:最后,我们可以使用训练好的模型对新的、未知的房屋特征进行预测。根据模型的表现,我们可以估计出房屋的价格。 总之,使用sklearn对房价预测数据集进行建模是一个典型的机器学习问题。通过数据加载与预处理、特征工程、模型选择与训练、模型评估与调优等步骤,我们可以建立一个准确、可靠的房价预测模型,为房地产市场的决策提供有力的支持。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值