当前位置: 首页 > news >正文

网站建设和编程的区别丽水百度seo

网站建设和编程的区别,丽水百度seo,门户网站怎么建设,网络维护与管理文章目录预测汽车燃油效率的模型1、获取 Auto MPG 数据集2、拆分训练数据集和测试数据集3、数据检查4、从标签中分离特征5、数据规范化6、建立模型7、训练模型8、预测9、总结10、参考资料预测汽车燃油效率的模型 在 回归 (regression) 问题中,我们的目的是预测出如…

文章目录

  • 预测汽车燃油效率的模型
    • 1、获取 Auto MPG 数据集
    • 2、拆分训练数据集和测试数据集
    • 3、数据检查
    • 4、从标签中分离特征
    • 5、数据规范化
    • 6、建立模型
    • 7、训练模型
    • 8、预测
    • 9、总结
    • 10、参考资料

预测汽车燃油效率的模型

在 回归 (regression) 问题中,我们的目的是预测出如价格或概率这样连续值的输出。

使用经典的 Auto MPG 数据集,构建了一个用来预测70年代末到80年代初汽车燃油效率的模型。为了做到这一点,我们将为该模型提供许多那个时期的汽车描述。这个描述包含:气缸数,排量,马力以及重量。

使用 tf.keras API

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import tensorflow as tf
from tensorflow import keras

1、获取 Auto MPG 数据集

# get Auto MPG dataset
dataset_path = keras.utils.get_file("auto-mpg.data", "http://archive.ics.uci.edu/ml/machine-learning-databases/auto-mpg/auto-mpg.data")
print(dataset_path)column_names = ['MPG', 'Cylinders', 'Displacement', 'Horsepower', 'Weight','Acceleration', 'Model Year', 'Origin']
raw_dataset = pd.read_csv(dataset_path, names=column_names,na_values="?", comment='\t',sep=" ", skipinitialspace=True)dataset = raw_dataset.copy()
print(dataset.tail())# 把数据集中Origin列改为不同的地方:'USA' 'Europe' 'Japan'
dataset.isna().sum()
dataset = dataset.dropna()
origin = dataset.pop('Origin')
dataset['USA'] = (origin == 1)*1.0
dataset['Europe'] = (origin == 2)*1.0
dataset['Japan'] = (origin == 3)*1.0
print(dataset.tail())

2、拆分训练数据集和测试数据集

现在需要将数据集拆分为一个训练数据集和一个测试数据集。最后将使用测试数据集对模型进行评估。

train_dataset = dataset.sample(frac=0.8, random_state=0)
test_dataset = dataset.drop(train_dataset.index)

3、数据检查

快速查看训练集中几对列的联合分布。

sns.pairplot(train_dataset[["MPG", "Cylinders", "Displacement", "Weight"]], diag_kind="kde")
plt.show()
train_stats = train_dataset.describe()
train_stats.pop("MPG")
train_stats = train_stats.transpose()
print(train_stats)

4、从标签中分离特征

将特征值从目标值或者"标签"中分离。 这个标签是你使用训练模型进行预测的值。

train_labels = train_dataset.pop('MPG')
test_labels = test_dataset.pop('MPG')

5、数据规范化

再次审视下上面的 train_stats 部分,并注意每个特征的范围有什么不同。

使用不同的尺度和范围对特征归一化是好的实践。尽管模型可能在没有特征归一化的情况下收敛,它会使得模型训练更加复杂,并会造成生成的模型依赖输入所使用的单位选择。

注意:尽管我们仅仅从训练集中有意生成这些统计数据,但是这些统计信息也会用于归一化的测试数据集。我们需要这样做,将测试数据集放入到与已经训练过的模型相同的分布中。

def norm(x):return (x - train_stats['mean']) / train_stats['std']
normed_train_data = norm(train_dataset)
normed_test_data = norm(test_dataset)

6、建立模型

构建模型:含两个隐藏层,一个输出层。

def build_model():model = keras.Sequential([keras.layers.Dense(64, activation='relu', input_shape=[len(train_dataset.keys())]),keras.layers.Dense(64, activation='relu'),keras.layers.Dense(1)])optimizer = tf.keras.optimizers.RMSprop(0.001)model.compile(loss='mse',optimizer=optimizer,metrics=['mae', 'mse'])return modelmodel = build_model()
model.summary()  #检查模型

7、训练模型

对模型进行1000个周期的训练,并在 history 对象中记录训练和验证的准确性。

class PrintDot(keras.callbacks.Callback):def on_epoch_end(self, epoch, logs):if epoch % 100 == 0: print('')print('.', end='')EPOCHS = 1000history = model.fit(normed_train_data, train_labels,epochs=EPOCHS, validation_split=0.2, verbose=0,callbacks=[PrintDot()])# 使用 history 对象中存储的统计信息可视化模型的训练进度
hist = pd.DataFrame(history.history)
hist['epoch'] = history.epoch
print('\n')
print(hist.tail())def plot_history(history):hist = pd.DataFrame(history.history)hist['epoch'] = history.epochplt.figure()plt.xlabel('Epoch')plt.ylabel('Mean Abs Error [MPG]')plt.plot(hist['epoch'], hist['mae'],label='Train Error')plt.plot(hist['epoch'], hist['val_mae'],label='Val Error')plt.ylim([0, 5])plt.legend()plt.figure()plt.xlabel('Epoch')plt.ylabel('Mean Square Error [$MPG^2$]')plt.plot(hist['epoch'], hist['mse'],label='Train Error')plt.plot(hist['epoch'], hist['val_mse'],label='Val Error')plt.ylim([0, 20])plt.legend()plt.show()plot_history(history)

在这里插入图片描述
在这里插入图片描述
该图表显示在约100个 epochs 之后误差非但没有改进,反而出现恶化。让我们更新 model.fit 调用,当验证值没有提高时自动停止训练。我们将使用一个 EarlyStopping callback 来测试每个 epoch 的训练条件。如果经过一定数量的 epochs 后没有改进,则自动停止训练。

# patience 值用来检查改进 epochs 的数量
early_stop = keras.callbacks.EarlyStopping(monitor='val_loss', patience=10)
history = model.fit(normed_train_data, train_labels, epochs=EPOCHS,validation_split=0.2, verbose=0,callbacks=[early_stop, PrintDot()])
plot_history(history)

改进后的结果:
在这里插入图片描述在这里插入图片描述

# 评估模型
print('\n')
loss, mae, mse = model.evaluate(normed_test_data, test_labels, verbose=2)
print("Testing set Mean Abs Error: {:5.2f} MPG".format(mae))
# 78/78 - 0s - loss: 6.4349 - mae: 1.9872 - mse: 6.4349
# Testing set Mean Abs Error:  1.99 MPG

8、预测

使用测试集中的数据预测 MPG 值,以及误差分布:

test_predictions = model.predict(normed_test_data).flatten()plt.scatter(test_labels, test_predictions)
plt.xlabel('True Values [MPG]')
plt.ylabel('Predictions [MPG]')
plt.axis('equal')
plt.axis('square')
plt.xlim([0, plt.xlim()[1]])
plt.ylim([0, plt.ylim()[1]])
_ = plt.plot([-100, 100], [-100, 100])
plt.show()error = test_predictions - test_labels
plt.hist(error, bins=25)
plt.xlabel("Prediction Error [MPG]")
_ = plt.ylabel("Count")
plt.show()

在这里插入图片描述
在这里插入图片描述

9、总结

处理回归问题的技术:

  1. 均方误差(MSE)是用于回归问题的常见损失函数(分类问题中使用不同的损失函数)
  2. 类似的,用于回归的评估指标与分类不同。 常见的回归指标是平均绝对误差(MAE)
  3. 当数字输入数据特征的值存在不同范围时,每个特征应独立缩放到相同范围。
  4. 如果训练数据不多,一种方法是选择隐藏层较少的小网络,以避免过度拟合。
  5. 早期停止是一种防止过度拟合的有效技术。

10、参考资料

TensorFlow教程:https://tensorflow.google.cn/tutorials/keras/regression?hl=zh_cn
https://github.com/tensorflow/docs-l10n/blob/master/site/zh-cn/tutorials/keras/regression.ipynb
Auto MPG Data Set:https://archive.ics.uci.edu/ml/datasets/auto+mpg

http://www.lbrq.cn/news/2421991.html

相关文章:

  • 做网站建设的公司有哪些内容品牌营销成功案例
  • 网站备案后 如何建设长沙百家号seo
  • 湖北网站建设 鄂 icp长春seo顾问
  • 长春建设集团网站百度搜索引擎收录
  • 微信对接网站可以做301跳转吗今日百度小说排行榜风云榜
  • 西安高校定制网站建设公司推荐电商网站规划
  • 企业网站搭建哪家好新闻源发稿平台
  • 动软代码生成器 做网站网站百度不收录
  • 北京通州网站建设石家庄网络seo推广
  • 网站建设标准规范济南谷歌推广
  • 杭州企业网站优化哪家公司建设网站好
  • 衡水做网站开发的百度怎么发自己的小广告
  • 网站后台密码忘了怎么办今日头条新闻大事件
  • 上海网站建设lv cn在线bt磁力搜索
  • 做购物网站哪种服务器好整合营销经典案例
  • 做任务兼职赚钱的网站有哪些链网
  • 电商网站开发文献汇总seo优化查询
  • 西安网站建站优化网站推广软件免费
  • 建站吧网站建设seo优化平台
  • 宝安最好的网站建设在线视频用什么网址
  • 网站做推广需要营业执照广东seo网站推广代运营
  • 建立网站的优势crm
  • 新鸿儒网站seo教程论坛
  • 社区做图网站北京网站推广排名服务
  • 上海电子通科技网站建设seoul怎么读
  • 兖州网站建设有没有自动排名的软件
  • 网站建设的产品类型是什么电脑培训网
  • 手把手做网站页面网站关键词怎么设置
  • 用别人的资源做网站营销策划品牌策划
  • 西宁做网站君博专注中国局势最新消息今天
  • 5.6 framebuffer驱动
  • PyQt5—QInputDialog 学习笔记
  • 【每日算法】专题四_前缀和
  • 【单片机外部中断实验修改动态数码管0-99】2022-5-22
  • 对粒子群算法的理解与实例详解
  • 构建一个简单的Java框架来测量并发执行任务的时间