数据集
- Keras中常见的集成数据集
- 波士顿房价数据集
- 1. 加载数据集
- 2. 访问数据集
- 3. 数据可视化
Keras是一个高层的神经网络和深度学习库,可以快速搭建神经网络,易于调试和从扩展,是TensorFlow的官方API,内置了常用的公共数据集,可通过
keras.datasets
模块来加载和访问。
Keras中常见的集成数据集
名称 | 说明 |
---|---|
boston_sousing | 波士顿房价数据集 |
CIFAR10 | 10种类别的图片集 |
CIFAR100 | 100种类别的图片集 |
MNIST | 手写数字图片集 |
Fashion-MNIST | 10重时尚类别的图片集 |
IMDB | 电影点评数据集 |
reuters | 路透社新闻数据集 |
波士顿房价数据集
1. 加载数据集
import tensorflow as tfboston_housing=tf.keras.datasets.boston_housing
#train_x和train_y分别接收训练数据集的属性和房价
#test_x和test_y分别接收测试数据集的属性和房价
#(train_x,train_y),(test_x,test_y)=boston_housing.load_data() #默认test_split=0.2,即train数据占比0.8,test数据占比0.2
(train_x,train_y),(test_x,test_y)=boston_housing.load_data(test_split=0)#所有数据划分为训练数据print("Training set:",len(train_x))
print("Testing set:",len(test_x))
print("Dim of train_x:",train_x.ndim)#维度
print("Dim of train_x:",train_x.shape)#形状
print("Dim of train_y:",train_y.ndim)
print("Dim of train_y:",train_y.shape)
输出结果如下:
Training set: 506
Testing set: 0
Dim of train_x: 2
Dim of train_x: (506, 13)
Dim of train_y: 1
Dim of train_y: (506,)
数据集下载经常因为网络问题而下载错误,多试几次就好了,数据集下载提示如下图:
也可以自己在网上找链接下载后放到文件夹中(推荐),默认路径是:
C:\Users\Administrator\.keras\datasets\boston_housing.npz
我的路径是:C:\Users\覃忠原\.keras\datasets\boston_housing.npz
2. 访问数据集
- 输出行数据
#通过numpy数组的索引和切片来查看数据
print(train_x[0:3]) #输出train_x中的前3行数据
由输出结果可看出是二维数组,一个维度对应一条房屋信息数据,每条信息中包括13个属性,如下:
[[1.23247e+00 0.00000e+00 8.14000e+00 0.00000e+00 5.38000e-01 6.14200e+009.17000e+01 3.97690e+00 4.00000e+00 3.07000e+02 2.10000e+01 3.96900e+021.87200e+01][2.17700e-02 8.25000e+01 2.03000e+00 0.00000e+00 4.15000e-01 7.61000e+001.57000e+01 6.27000e+00 2.00000e+00 3.48000e+02 1.47000e+01 3.95380e+023.11000e+00][4.89822e+00 0.00000e+00 1.81000e+01 0.00000e+00 6.31000e-01 4.97000e+001.00000e+02 1.33250e+00 2.40000e+01 6.66000e+02 2.02000e+01 3.75520e+023.26000e+00]]
- 输出列数据
print(train_x[:,5]) #取出train_x中第一维的全部数据,第二维取出索引为5的数据
返回一个一维数组,分别是每条数据中的平均房间数,结果如下:
[6.142 7.61 4.97 6.037 6.376 5.708 5.536 5.468 5.628 5.019 6.404 4.6285.572 6.251 5.613 5.957 7.016 6.345 6.162 6.727 6.202 6.595 7.135 6.5755.895 6.794 6.012 7.185 5.813 5.569 6.315 6.297 6.301 5.935 7.024 6.415....... #太多了这里就不一一列出来了5.885 6.375 6.968 4.88 5.981 7.52 5.593 6.485 5.705 6.172 6.229 5.9516.593 7.061 6.03 5.884 6.897 8.259 6.812 6.122 7.333 8.78 6.273 7.8026.951 6.101]
- 输出全部数据
print(train_y) #输出train_y的全部数据
3. 数据可视化
- 波士顿房价属性描述
变量名 | 说明 |
---|---|
CRIM | 城镇人口犯罪率 |
ZN | 超过25000平方英尺的住宅用地所占比例 |
INDUS | 城镇非零售业务地区的比例 |
CHAS | 查尔斯河虚拟变量(如果土地在河边=1;否则是0) |
NOX | 一氧化氮浓度(每1000万份) |
RM | 平均每居民房数 |
AGE | 在1940年之前建成的所有者占用单位的比例 |
DIS | 与五个波士顿就业中心的加权距离 |
RAD | 辐射状公路的可达性指数 |
TAX | 每10,000美元的全额物业税率 |
RTRATIO | 城镇师生比例 |
B | 1000(Bk-0.63)^2其中Bk是城镇黑人的比例 |
LSTAT | 人口中地位较低人群的百分数 |
MEDV | (目标变量/类别属性)以1000美元计算的自有住房的中位数 |
scatter()
函数:展示平均房间数与房价之间的关系
import matplotlib.pyplot as plt
import numpy as np
import tensorflow as tfplt.rcParams['font.sans-serif']="SimHei"boston_housing=tf.keras.datasets.boston_housing
#没有用到test数据,故可用下划线_代替
(train_x,train_y),(_,_)=boston_housing.load_data(test_split=0)plt.figure(figsize=(5,5)) #设置绘图尺寸
plt.scatter(train_x[:,5],train_y) #散点图
plt.xlabel("平均房间数")
plt.ylabel("价格/$1000")
plt.title("平均房间数和价格之间的关系")
plt.show()
输出结果如下(总体上趋于数量越多价格越高):
- 循环语句:输出所有属性关系图
import matplotlib.pyplot as plt
import numpy as np
import tensorflow as tfplt.rcParams['font.sans-serif']="SimHei"
plt.rcParams['axes.unicode_minus']=Falseboston_housing=tf.keras.datasets.boston_housing
(train_x,train_y),(_,_)=boston_housing.load_data(test_split=0) #没有用到test数据,故可用下划线_代替titles=["CRIM","ZN","INDUS","CHAS","NOX","AGE","DIS","RAD","TAX","PTRATIO","B-1000","LSTAT","MEDV"]plt.figure(figsize=(12,9))for i in range(12):plt.subplot(3,4,(i+1))plt.scatter(train_x[:,i],train_y)plt.xlabel(titles[i])plt.ylabel("价格/$1000")plt.title(str(i+1)+"."+titles[i]+"-价格")plt.tight_layout()
plt.suptitle("各个属性与房价间的关系",x=0.5,y=1.02,fontsize=20)
plt.show()
输出结果如下: