tnblog
首页
视频
资源
登录

python 选择和训练模型(三)

3005人阅读 2023/3/30 11:43 总访问:3467391 评论:0 收藏:0 手机
分类: AI

python 选择和训练模型(三)


请根据上一篇结合。

训练和评估训练集


使用sklearn的LinearRegression(线性回归)、DecisionTreeRegressor(决策数)、

线性回归


首先添加两句话,在预测房价之前

  1. housing = strat_train_set.drop("median_house_value", axis=1)
  2. housing_labels = strat_train_set["median_house_value"].copy()


然后在末尾添加如下代码进行RMSE的计算。

  1. from sklearn.linear_model import LinearRegression
  2. # 创建实例
  3. lin_reg = LinearRegression()
  4. # 训练
  5. lin_reg.fit(housing_prepared, housing_labels)
  6. # 找训练集里面后5条数据
  7. some_data = housing.iloc[:5]
  8. some_labels = housing_labels.iloc[:5]
  9. # 用模型转换一下
  10. some_data_prepared = full_pipeline.transform(some_data)
  11. print("Predictions:",lin_reg.predict(some_data_prepared))
  12. print("Labels:",list(some_labels))


我们可以看到预测值与实际值还是有一定的差距,RMSE还需要取平方根。

  1. from sklearn.metrics import mean_squared_error
  2. # 接收一个numpy数组
  3. housing_predictions = lin_reg.predict(housing_prepared)
  4. # 计算均方误差
  5. lin_mse = mean_squared_error(housing_labels,housing_predictions)
  6. # 计算均方根误差
  7. lin_rmse = np.sqrt(lin_mse)
  8. lin_rmse


误差6.8w。

决策数

  1. from sklearn.tree import DecisionTreeRegressor
  2. tree_reg = DecisionTreeRegressor()
  3. tree_reg.fit(housing_prepared, housing_labels)
  4. housing_predictions = tree_reg.predict(housing_prepared)
  5. tree_mse = mean_squared_error(housing_labels,housing_predictions)
  6. tree_rmse = np.sqrt(tree_mse)
  7. tree_rmse


误差得出来是0

使用交叉验证来更好的评估


一个选择是sklearn的K-fold交叉验证功能。
原理:先将训练集分割成十个不同的子集,每一个子集分割成一个fold。然后通过决策树模型进行十次训练与评估,每次挑选一个进行评估,九个进行训练,产生的结果就是一个包含十次结果的数组。

  1. from sklearn.model_selection import cross_val_score
  2. scores = cross_val_score(tree_reg, housing_prepared, housing_labels,scoring="neg_mean_squared_error", cv=10)
  3. tree_rmse_scores = np.sqrt(-scores)
  4. # 帮助函数
  5. def display_scores(scores):
  6. # 源数据
  7. print("Scores:", scores)
  8. # 平均数
  9. print("Mean:", scores.mean())
  10. # 标准差
  11. print("Standard deviation:", scores.std())
  12. display_scores(tree_rmse_scores)


通过它我们看到它比线性回归模型还要糟糕。

随机森林回归

  1. from sklearn.ensemble import RandomForestRegressor
  2. forest_reg = RandomForestRegressor()
  3. forest_reg.fit(housing_prepared, housing_labels)
  4. housing_predictions = forest_reg.predict(housing_prepared)
  5. forest_mse = mean_squared_error(housing_labels, housing_predictions)
  6. forest_rmse = np.sqrt(forest_mse)
  7. forest_rmse

交叉验证

  1. scores = cross_val_score(forest_reg, housing_prepared, housing_labels,scoring="neg_mean_squared_error", cv=10)
  2. forest_rmse_scores = np.sqrt(-scores)
  3. display_scores(forest_rmse_scores)

调优模型


GirdSearchCV、随机搜索、集成方法、分析最佳模型和误差、使用测试集来评估系统。

超参数Hyperparameter


模型参数。例如 y = ax + b,通过训练得到的参数
超参数:需要人为设定。是开始学习过程之前设置值的参数,而不是通过训练得到的参数数据。

GridSearchCV


可使用GridSearchCV来搜索超参数
你只需要告诉它你要进行实验的超参数是什么,以及需要尝试的值,它会使用交叉验证来评估超参数值的所有可能组合。

随机搜索


如果超参数的搜索范围较大,可选择RandomizedSearchCV

集成方法


还有一种调优方法是将表现最优的模型组合起来,通常比单一模型好。

使用测试集来评估系统

  1. X_test = strat_test_set.drop("median_house_value",axis=1)
  2. y_test = strat_test_set["median_house_value"].copy()
  3. X_test_prepared = full_pipeline.transform(X_test)
  4. # 随机森林
  5. final_predictions = forest_reg.predict(X_test_prepared)
  6. final_mse = mean_squared_error(y_test, final_predictions)
  7. final_rmse = np.sqrt(final_mse)
  8. final_rmse

启动、监控、维护你的系统


将模型部署到生产环境:一种方法是保存训练好的模型(使用joblib),包括预处理和流水线,然后在生产环境中加载该模型,并调用prepare()方法来预测。


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价

python学习 1-安装

Ptyhon非常简单易用的面向对象的脚本语言,跨平台 入门简单python分2个版本 Python2、Python3。Python 2.7 将于 2020 年结...

python学习 2-基本语法

基础:python脚本语言,不需要编译(像C#、Java、PHP、C++需要编译成机器可识别的语言), 而直接由解释器解释,很多地方类似...

python学习 3-爬虫基本介绍 及简单实例

爬虫爬虫就是一只猪,蜘蛛。。 网络蜘蛛。互联网是一个网由各个网站组成。无数的蜘蛛就在网上到处爬,根据网址从一个网站爬...

python实例 1-日志抓取处理 补错附日志小技巧

有时候数据出了问题,可以从日志中恢复数据(如果你没记日志..没备份..→_→..)一、日志展示介绍个平常自己用的小方法,如...

python实例 2-12306抢票(一) 登陆

开坑年关将近,终于对12306下手了,,平安夜撸代码,攻克了12306的登陆 2018-12-24 22:16:00没错 这篇博客就写从零开始的异...

python安装pip以及使用pip安装requests等模块

pip很简单的介绍pip 是一个现代的,通用的 Python 包管理工具。提供了对 Python 包的查找、下载、安装、卸载的功能。如果想...

python数据集合区别

列表(list):可读写,值可以重复,有序排列,初始化语法:['tom',‘jerry’]元组(tuple):只读,值可以重复,...

python实例 2-12306抢票(二) 下单

第二篇 刷票与下单1.记住登陆上一篇写了登陆:http://www.tnblog.net/cz/article/details/162 为了方便调试 不让每次登陆都...

使用VS Code开发python

Vs Code开发Python可以很好的支持代码调试、智能提示、代码对齐等1:下载VS Codehttps://code.visualstudio.com/Downloadvs ...

python变量与命名

Python使用等号 ( = ) 作为赋值运算符,例如a = 66 就是一条赋值语句,作用就是将66赋值给变量a。Python是弱类型语言,弱类...

python关键字和内置函数

Python中包含了如下所示的关键字:上面这些关键字都不能作为变量名。另外,Python 3还提供了如下表所示的内置函数:也不能...

python基础输入和输出

Python使用print()函数向打印程序输出,采用input()函数接收程序输入。print()函数的语法格式如下:print(value,...,sep=&#...

python基本数据类型

Python包含两大类基本数据类型:数值类型、字符串类型,三大类组合数据类型:集合类型、序列类型和字典类型.数值类型:整型...

python中通过fake_useragent生成随机UserAgent

fake_useragent第三方库,来实现随机请求头的设置;GitHub ---> https://github.com/hellysmile/fake-useragent安...

python 升级pip

一条命令即可: python -m pip install --upgrade pip 安装成功后,一般是在python目录下面的Scripts里边的

python html编码解码

使用方法:html.escape(s)与html.unescape即可 import html s="<div>jsdlfjsl</div>" #html编...
这一世以无限游戏为使命!
排名
2
文章
634
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 : 好是好,这个对效率影响大不大哇,效率高不高
ASP.NET Core 服务注册生命周期
剑轩 : http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术