持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天,点击查看活动详情
总计:今天是十月更文计划第十一天,第二十一篇
今天学习回归Regression,使用的数据集为波士顿房价
导入的数据包为:
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
import sklearn
import pandas as pd
import os
import sys
import time
import tensorflow as tf
from tensorflow import keras
对于导入keras自带的数据集,使用到的语句为:
from sklearn.datasets import fetch_california_housing
这样子就导入了波士顿房价数据集,在使用的过程中,第一句话为:
housing = fetch_california_housing()
将房价数据集引用到housing中,对数据集进行查看,研究,一般使用到的语句为:
print(housing.data.shape)
输出的结果为:
查看这个自带数据集的describe,describe为描述,在python中的语言为DSECR:
在这张图片中就可以看到,这个数据集的特征数目为8个,MedInc,HouseAge,...etc
对于sklearn数据集的引入,应该都没有问题了:
可以随意的引入sklearn提供的数据集。
引入了数据集之后,就要对数据集进行分割,分割为训练集,验证集与测试集。
具体分割的方法如下:
x_train_all, x_test, y_train_all, y_test = train_test_split(housing.data, housing.target, random_state = 7)
如果不指定random_state,那么这个值默认为75%与25%。
由于还有验证集:
x_train, x_valid, y_train, y_valid = train_test_split(x_train_all, y_train_all, random_state = 11)
验证集的划分就是在训练集上再次做一次划分,全部的代码如下:
x_train_all, x_test, y_train_all, y_test = train_test_split(
housing.data, housing.target, random_state = 7)
x_train, x_valid, y_train, y_valid = train_test_split(
x_train_all, y_train_all, random_state = 11)
# 训练集
print(x_train.shape, y_train.shape)
# 验证集
print(x_valid.shape, y_valid.shape)
# 测试集
print(x_test.shape, y_test.shape)
在运行之前使用如下代码: from sklearn.model_selection import train_test_split
输出的结果为:
对数据集进行标准化与归一化的处理:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
x_train_scaled = scaler.fit_transform(x_train)
x_valid_scaled = scaler.transform(x_valid)
x_test_scaled = scaler.transform(x_test)
在处理完之后才能进行使用。
查看特征数目:
x_train_scaled.shape[1:]
对于神经网络的建立:
model=keras.models.Sequential([
keras.layers.Dense(50,activation='relu',
input_shape=x_train.shape[1:]),
keras.layers.Dense(1),
])
model.summary()
这样就建立了一个最简单的神经网络模型,在网络模型中,隐藏层中的神经元个数为50个,输出层为1个。
在隐藏层中的参数个数,就为8*50+50。为什么呢?
因为在隐藏层中,每一个神经元都要接收到8个特征值的传入,一共有50个神经元,一共400个元素,再加上每一个神经元还要有50个偏执值,所以参数个数一共含有450个参数,使用
model.summary()
方法同样可以看到。