一、内容实现概述
本文主要讲述使用keras库内置的Sequential(序列)模型,实现房价预测。具体实现过程如下:
- 1. 导入所需库:预先导入keras以及scikit-learn库
- 2. 导入数据:调用keras库内置的房价数据库(boston_housing)方法load_data(),导入并分割好数据
- 3. 数据预处理:对房价数据进行特征缩放预处理(由于它的特征列数据所在的维度(范围)不同,不便于统一训练)
- 4. 构建模型:调用keras库的Sequential模型类,构建模型
- 5. 添加中间(网络)层,并使用常见的Relu类型激活函数
- 6. 编译模型:调用keras库的compile()方法对模型进行编译,设置常见的损失函数模板(mse,均方误差)和评估模板(mae,平均绝对误差)
- 7. 训练模型:调用keras库的fit()方法对训练集数据进行拟合,设置好迭代轮次和批次参数值
- 8. 评估模型:调用keras库的evaluate()方法对测试集数据进行预测
- 9. 预测模型:调用keras库的predict()方法对测试集数据进行预测
注:
- 在Python中使用(导入)keras库时,需要先安装,本实现使用的是pip命令安装 pip install --upgrade keras
- 在Python中使用(导入)scikit-learn库时,需要先安装,本实现使用的是pip命令安装 pip install -U scikit-learn
- Scikit-Learn官方教程
- Keras官方教程
二、代码实现
注:源代码地址
# 主题:实现预测波士顿房价(中位数)的神经网络模型 # 模型存在的问题:在house_price_prediction这个例子中,预测房价与实际房价平均相差2600美元,考虑到实际房价范围是10000美元~50000美元,这一差别还是很大的 # 优化策略:根据MAE曲线绘制图结果(剔除前10个数据点),将轮数改为130 import os os.environ['TF_ENABLE_ONEDNN_OPTS'] = '0' from sklearn.preprocessing import StandardScaler from keras.src.datasets import boston_housing from keras.src.models.sequential import Sequential from keras.src.layers import Dense # 1. 导入波士顿房价数据集 (X_train, y_train), (X_test, y_test) = boston_housing.load_data() # 2. 数据预处理 # a. 数据标准化,也叫特征缩放 # 该数据标准化实现,就是下面的StandardScaler类实现 # mean = X_train.mean(axis=0) # X_train -= mean # std = X_train.std(axis=0) # X_train /= std # X_test -= mean # X_test /= std scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) # 3. 模型处理 # 由于样本数量很少,因此我们将使用一个非常小的模型。它包含两个中间层,每层有64个单元 # 一般来说,训练数据越少,过拟合就会越严重,而较小的模型可以降低过拟合 def build_model(): model = Sequential() model.add(Dense(64, activation='relu')) model.add(Dense(64, activation='relu')) model.add(Dense(1)) # 模型的最后一层只有一个单元且没有激活函数,表面它是一个线性层。因为这是标量回归(用于预测单一连续值的回归)的典型设置。添加激活函数将限制输出范围。如果向最后一层添加sigmoid激活函数,那么模型只能学会预测0到1的值。这里最后一层是纯线性的,所以模型可以学会预测任意范围的值 # 第三步:编译模型 model.compile(optimizer='rmsprop', loss='mse', metrics=['mae']) return model model = build_model() # 构建Keras模型(已编译) # 第四步:训练模型 # 使用静默模式参数,verbose=0 model.fit(X_train, y_train, epochs=130, batch_size=16, verbose=0) # 第五步:评估模型 test_mse_score, test_mae_score = model.evaluate(X_test, y_test) print("test_mae_score: ", test_mae_score) # 第六步:预测模型 y_pred = model.predict(X_test) print("first house price: ", y_pred[0])
三、运行结果
标签:keras,train,模型,Deep,Sequential,Learning,test,model From: https://www.cnblogs.com/xl1164191281/p/18681066