以下数据集为学习机器学习算法时,经常会用到的数据集,包括4种:小型模拟分类问题、小型模拟回归问题、中型实际分类问题、中型实际回归问题。这些数据集源自:[德]Andreas C.Muller和[美]Sarah Guido所著的书籍《Python机器学习基础教程》。
【数据集1】forge:小型模拟分类问题数据集
forge数据集是一个小型模拟二分类问题实例,有26个数据点,每个数据有两个特征。数据集中的数据可以通过sklearn模块的make_blobs函数来加载。下列代码绘制一个散点图,将数据的所有数据点可视化,图像以第一个特征为x轴,第二个特征为y轴。每个点的颜色和形状对应其类别。
mport mglearn.datasets
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
def forge():
# make_blobs: sklearn内置单标签类数据集
features, labels = make_blobs(centers=2, random_state=4, n_samples=30)
# discrete_scatter:数据集可视化
mglearn.discrete_scatter(features[:, 0], features[:, 1], labels)
plt.legend(['Class0', 'Class1'], loc=4)
plt.xlabel('First feature')
plt.ylabel('Second feature')
plt.show()
return features, labels
if __name__ == '__main__':
X, y = forge()
【数据集2】wave:小型模拟回归问题数据集
wave数据集是一个小型模拟回归问题实例,有30个数据点,每个数据点有一个特征和一个连续的标签值。数据集中的数据可以通过mglearn模块的make_wave函数来加载。下图绘制的图像中,单一特征位于x轴,标签位于y轴。
import mglearn.datasets
import matplotlib.pyplot as plt
def wave():
features, labels = mglearn.datasets.make_wave(n_samples=30)
plt.plot(features, labels, 'o')
plt.ylim(-3, 3)
plt.xlabel('Feature')
plt.ylabel('Target')
plt.show()
return features, labels
if __name__ == '__main__':
X, y = wave()
【数据集3】cancer:中型实际分类问题数据集
cancer是威斯康星州乳腺癌数据集,记录了乳腺癌肿瘤的临床测量数据。每个肿瘤都被标记为“良性”(benign,表示无害肿瘤)或“恶性”(malignant,表示癌性肿瘤),其任务是基于人体组织的测量数据来预测肿瘤是否为恶性。数据集中包含569个数据,每个数据中包含30个特征和标签。这些数据可以通过sklearn模块中的load_breast_cancer来加载。
from sklearn.datasets import load_breast_cancer
def breast_cancer():
cancer = load_breast_cancer()
features = cancer.data
labels = cancer.target
return cancer, features, labels
if __name__ == '__main__':
cancer_data, X, y = breast_cancer()
维度特征较多,难以直接做可视化。可以通过代码继续探查数据内容。
# cancer数据集所有属性
print('cancer.keys(): {}'.format(cancer_data.keys()))
cancer.keys(): dict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names', 'filename', 'data_module'])
# 数据和特征数量
print('Shape of cancer data: {}'.format(X.shape))
Shape of cancer data: (569, 30)
# 良性数量
print('benign count: {}'.format(sum(y)))
benign count: 357
# 恶性数量
print('malignant count: {}'.format(len(y) - sum(y)))
malignant count: 212
# 特征含义
print('Features name: \n{}'.format(cancer_data.feature_names))
Features name:
['mean radius' 'mean texture' 'mean perimeter' 'mean area'
'mean smoothness' 'mean compactness' 'mean concavity'
'mean concave points' 'mean symmetry' 'mean fractal dimension'
'radius error' 'texture error' 'perimeter error' 'area error'
'smoothness error' 'compactness error' 'concavity error'
'concave points error' 'symmetry error' 'fractal dimension error'
'worst radius' 'worst texture' 'worst perimeter' 'worst area'
'worst smoothness' 'worst compactness' 'worst concavity'
'worst concave points' 'worst symmetry' 'worst fractal dimension']
【数据集4】boston:中型实际回归问题数据集
boston是波士顿房价数据集。与这个数据集相关的任务是,利用犯罪率、是否临近查尔斯河、公路可达性等信息,来预测20世纪70年代波士顿地区房屋价格的中位数。数据集中包含506个数据点,有13个基本特征,同时把任意两个基本特征的乘积也作为特征,共计104个特征。
import mglearn.datasets
def boston():
features, labels = mglearn.datasets.load_extended_boston()
return features, labels
if __name__ == '__main__':
X, y = boston()