赞
踩
初学者学习机器学习的时候,经常会找不到练习的数据,实际上scikit-learn内置了很多可以用于机器学习的数据,可以用两行代码就可以使用这些数据。
一、自带数据集
自带的小的数据集为:sklearn.datasets.load_<name>
怎么用:
数据集的信息关键字:
数据介绍:
第一步:
导入数据
- from sklearn.datasets import load_iris
- iris = load_iris()
-
- 第二步:
-
- 定义X和y
- X, y = iris.data, iris.target
- 此外,可以看下数据的维度:
-
- X.shape,y.shape输出为:
-
- ((150, 4), (150,))
-
-
- 查看特征名:
-
- iris.feature_names输出为:
- ['sepal length (cm)',
- 'sepal width (cm)',
- 'petal length (cm)',
- 'petal width (cm)']
-
-
- 查看标签名:
-
- iris.target_names
输出为:
array(['setosa', 'versicolor', 'virginica'], dtype='<U10')
划分训练集和测试集:
- from sklearn.model_selection import train_test_split
- X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25)
这样就把训练集和测试集按照3比1划分了,接下来就可以用机器学习算法进行训练和测试了。
小技巧:将数据转换为Dataframe格式(两种方法都可以):
- import pandas as pd
- df_X = pd.DataFrame(iris.data, columns=iris.feature_names)
- #这个是X
- df_y = pd.DataFrame(iris.target, columns=["target"])
- #这个是y
- df=pd.concat([df_X,df2],axis=1)#横向合并
- df.head()
或者:
- import numpy as np
- import pandas as pd
- col_names = iris['feature_names'] + ['target']
- df = pd.DataFrame(data= np.c_[iris['data'], iris['target']], columns=col_names)
- df.head()
输出结果一致:
二、可在线下载的数据集(需要下载)
下载的数据集为:sklearn.datasets.fetch_<name>
这类数据需要在线下载,有点慢
用于文本分类、文本挖据和信息检索研究的国际标准数据集之一。数据集收集了大约20,000左右的新闻组文档,均匀分为20个不同主题的新闻组集合。返回一个可以被文本特征提取器
这是上面这个文本数据的向量化后的数据,返回一个已提取特征的文本序列,即不需要使用特征提取器
加利福尼亚的房价数据,总计20640个样本,每个样本8个属性表示,以及房价作为target,所有属性值均为number,详情可调用fetch_california_housing()['DESCR']了解每个属性的具体含义;
森林植被类型,总计581012个样本,每个样本由54个维度表示(12个属性,其中2个分别是onehot4维和onehot40维),以及target表示植被类型1-7,所有属性值均为number,详情可调用fetch_covtype()['DESCR']了解每个属性的具体含义
KDD竞赛在1999年举行时采用的数据集,KDD99数据集仍然是网络入侵检测领域的事实Benckmark,为基于计算智能的网络入侵检测研究奠定基础,包含41项特征
该任务称为人脸验证:给定一对两张图片,二分类器必须预测这两个图片是否来自同一个人。
打好标签的人脸数据集
从 http://mldata.org 中下载数据集
Olivetti 脸部图片数据集
路透社新闻语聊数据集
物种分布数据集
使用方法与自带数据集一致,只是多了下载过程(示例:fetch_20newsgroups)
- from sklearn.datasets import fetch_20newsgroups
- news = fetch_20newsgroups(subset='all') #本次使用的数据需要到互联网上下载
- from sklearn.model_selection import train_test_split
- #对数据训练集和测试件进行划分
- X_train, X_test, y_train, y_test = train_test_split(
- news.data, news.target, test_size=0.25, random_state=33)
三、生成数据集
可以用来分类任务,可以用来回归任务,可以用来聚类任务,用于流形学习的,用于因子分解任务的,用于分类任务和聚类任务的:这些函数产生样本特征向量矩阵以及对应的类别标签集合
举例:
- import matplotlib.pyplot as plt
- from sklearn.datasets import make_moons
- X, y = make_moons(n_samples=100, noise=0.15, random_state=42)
- plt.title('make_moons function example')
- plt.scatter(X[:,0],X[:,1],marker='o',c=y)
- plt.show()
四、其它数据集
kaggle:https://www.kaggle.com
天池:https://tianchi.aliyun.com/dataset
搜狗实验室:http://www.sogou.com/labs/resource/list_pingce.php
DC竞赛:https://www.pkbigdata.com/common/cmptIndex.html
DF竞赛:https://www.datafountain.cn/datasets
总结
本文为机器学习初学者提供了使用scikit-learn内置数据的方法,用两行代码就可以使用这些数据,可以进行大部分的机器学习实验了。
参考
https://scikit-learn.org/stable/datasets/index.html
关于本站
“机器学习初学者”公众号由是黄海广博士创建,黄博个人知乎粉丝23000+,github排名全球前110名(32000+)。本公众号致力于人工智能方向的科普性文章,为初学者提供学习路线和基础资料。原创作品有:吴恩达机器学习个人笔记、吴恩达深度学习笔记等。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。