学习阶段可以用的数据集可以在以下三个地方找: 1)sklearn 2)kaggle 3)UCI
下面介绍Scikit-learn,Scikit-learn 是一个开源的机器学习库,它提供了一系列的机器学习算法,可以直接使用。
1 获取小规模数据集,可以使用:sklearn.datasets.load_*,数据包含在datasets里。
from sklearn.datasets import load_iris
iris = load_iris()
2 获取大规模数据集,可以使用:sklearn.datasets.fetch_*
from sklearn.datasets import fetch_openml
iris = fetch_openml('iris', data_home=None, download_if_missing=True)
获取大规模的数据集,需要从网络下载,函数的第一个参数为数据集名称。第二个参数为是否下载数据集(data_home),表示数据集下载的路径,如果为None,则使用默认路径~/scikit_learn_data/,第三个参数为是否下载数据集的描述。subset表示要加载的数据集的子集,如果是train,则是训练集,如果是test,则是测试集,如果为None,则加载全部数据集。
3 load和fetch的返回值介绍:
load和fetch的返回类型都是datasets.base.Bunch(字典格式)。
- data: 数据集,是[n_samples, n_features]的二维数组
- target: 数据集的标签,是n_samples的一维数组
- target_names: 数据集的标签名称
- DESCR: 数据集的描述
- feature_names: 数据集的特征名称
- filename: 数据集的名称
- frame: 数据集的格式
- md5_checksum: 数据集的md5校验码
- module: 数据集的模块
- url: 数据集的url
- data_home: 数据集的路径
既然是字典,则可以直接使用字典的键来获取对应的值。 使用dict["key"] = values或者bunch.key = values
下面使用鸢尾花数据集举例子:
from sklearn.datasets import load_iris
def datasets_demo():
"""
sklearn数据集使用
"""
# 获取数据集
iris = load_iris()
print("查看鸢尾花数据集: \n", iris)
print("查看鸢尾花数据集的描述: \n", iris["DESCR"])
print("查看鸢尾花数据集的特征: \n", iris["feature_names"])
print("查看鸢尾花数据集的标签: \n", iris["target_names"])
print("查看鸢尾花数据集的特征数据: \n", iris["data"]) # 可以使用iris.data或者iris["data"]
print("查看鸢尾花数据集的标签数据: \n", iris.target)
print("查看鸢尾花数据集的类型: \n", type(iris))
print("查看鸢尾花数据集的特征数据的形状: \n", iris.data.shape)
print("查看鸢尾花数据集的标签数据的形状: \n", iris["target"].shape)
if __name__ == '__main__':
# 代码1 sklearn的使用
datasets_demo()
4 划分数据集
我们拿到的数据,是否全部作为一个训练集来训练一个模型呢?
- 训练数据,用于训练,构建模型。
- 测试数据,在模型检验时使用,用于评估模型的效果。
- 训练数据和测试数据划分的比例,一般是8:2或者7:3。
- 数据集划分的api:
- sklearn.model_selection.train_test_split(X, y, test_size=None, train_size=None, random_state=None, shuffle=True, stratify=None)
- 其中X是数据集,
- y是标签,
- test_size是测试数据占比,
- train_size是训练数据占比,
- random_state是随机数种子,因为是伪随机,所以需要设置随机数种子,不同的种子会造成不同的随机采样结果,相同的种子采样结果相同。
- shuffle是是否打乱数据,
- stratify是是否根据标签进行分组。
- 返回值 训练集特征值x_train,测试集特征值x_test,训练集标签y_train,测试集标签y_test。
from sklearn.datasets import load_iris
def datasets_demo():
"""
sklearn数据集使用
"""
# 获取数据集
iris = load_iris()
print("查看鸢尾花数据集: \n", iris)
print("查看鸢尾花数据集的描述: \n", iris["DESCR"])
print("查看鸢尾花数据集的特征: \n", iris["feature_names"])
print("查看鸢尾花数据集的标签: \n", iris["target_names"])
print("查看鸢尾花数据集的特征数据: \n", iris["data"]) # 可以使用iris.data或者iris["data"]
print("查看鸢尾花数据集的标签数据: \n", iris.target)
print("查看鸢尾花数据集的类型: \n", type(iris))
print("查看鸢尾花数据集的特征数据的形状: \n", iris.data.shape)
print("查看鸢尾花数据集的标签数据的形状: \n", iris["target"].shape)
# 划分数据集
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=42)
print("查看训练集的特征数据: \n", X_train)
print("查看训练集的标签数据: \n", y_train)
print("查看测试集的特征数据: \n", X_test)
print("查看测试集的标签数据: \n", y_test)
if __name__ == '__main__':
# 代码1 sklearn的使用
datasets_demo()