iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python机器学习入门(六)之Python优化模型
  • 285
分享到

Python机器学习入门(六)之Python优化模型

2024-04-02 19:04:59 285人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录1.集成算法1.1袋装算法1.1.1袋装决策树1.1.2随机森林1.1.3极端随机树1.2提升算法1.2.1AdaBoost1.2.2随机梯度提升1.3投票算法2.算法调参2.1

有时提升一个模型的准确度很困难。你会尝试所有曾学习过的策略和算法,但模型正确率并没有改善。这时你会觉得无助和困顿,这也正是90%的数据科学家开始放弃的时候。不过,这才是考验真正本领的时候!这也是普通的数据科学家和大师级数据科学家的差距所在。

1.集成算法

三个臭皮匠,顶个诸葛亮。群体的智慧是很强大的。那么,在机器学习中能否同样采用此策略呢?答案是肯定的,就是集成算法——将多个不同算法从集成起来,使结果更优。

1.1袋装算法

袋装算法是一种提高分类准确率的算法。通过给定组合投票的方式获得最优解。比如你生病了,去n个医院看了n个医生,每个医生都给你开了药方,最后哪个药方的出现次数多,就说明这个药方可能是最优解。

1.1.1袋装决策树

袋装算法在数据具有很大方差时非常有效,最常见的例子就是决策树的袋装算法。


from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.ensemble import BagginGClassifier
from sklearn.tree import DecisionTreeClassifier
 
filename = 'pima_data.csv'
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(filename, names=names)
array = data.values
X = array[:,0:8]
Y = array[:,8]
num_folds = 10
seed = 7
kfold = KFold(n_splits=num_folds,shuffle=True,random_state=seed)
 
#袋装决策树
cart = DecisionTreeClassifier()
num_tree = 100
model = BaggingClassifier(base_estimator=cart,n_estimators=num_tree,random_state=seed)
result = cross_val_score(model, X, Y, cv=kfold)
print(result.mean())

0.7578263841421736

1.1.2随机森林

随机森林是由很多决策树构成的,不同决策树之间没有关联。

当我们进行分类任务时,新的输入样本进入,就让森林中的每一棵决策树分别进行判断和分类,每个决策树会得到一个自己的分类结果,决策树的分类结果中哪一个分类最多,那么随机森林就会把这个结果当做最终的结果。


from sklearn.ensemble import RandomForestClassifier
 
#随机森林
num_tree = 100
max_features = 3
model = RandomForestClassifier(n_estimators=num_tree,random_state=seed,max_features=max_features)
result = cross_val_score(model, X, Y, cv=kfold)
print(result.mean())

0.759107997265892

1.1.3极端随机树

极端随机数与随机森林十分相似,都是由许多决策树构成的,但它与随机森林由两个主要区别:

  • 随机森林应用的是Bagging模型,而极端随机树是使用所有的训练样本得到每棵决策树,也就是每棵决策树应用的是全部训练样本。
  • 随机森林是在一个随机子集内得到最优分叉特征属性,而极端随机树是完全随机地选择分叉特征属性,从而实现对决策树进行分叉。

from sklearn.ensemble import ExtraTreesClassifier
 
#极端随机树
num_tree = 100
max_features = 3
model = ExtraTreesClassifier(n_estimators=num_tree,random_state=seed,max_features=max_features)
result = cross_val_score(model, X, Y, cv=kfold)
print(result.mean())

0.7630211893369789

1.2提升算法

提升算法也称为boosting算法,它是将弱学习算法提升为强学习算法的一类算法,可用来提升弱分类器的准确度。

1.2.1AdaBoost

AdaBoost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。


from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.ensemble import AdaBoostClassifier
 
filename = 'pima_data.csv'
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(filename, names=names)
array = data.values
X = array[:,0:8]
Y = array[:,8]
num_folds = 10
seed = 7
kfold = KFold(n_splits=num_folds,shuffle=True,random_state=seed)
 
#AdaBost
num_tree = 100
model = AdaBoostClassifier(n_estimators=num_tree,random_state=seed)
result = cross_val_score(model, X, Y, cv=kfold)
print(result.mean())

0.7578605604921395

1.2.2随机梯度提升

随机梯度提升法(GBM)的基本思想是:要找到某个函数的最大值,最好的办法就是沿着该函数的梯度方向探寻。梯度算子总是指向函数增长值最快的方向。


from sklearn.ensemble import GradientBoostingClassifier
 
#随机 梯度提升
num_tree = 100
model = GradientBoostingClassifier(n_estimators=num_tree,random_state=seed)
result = cross_val_score(model, X, Y, cv=kfold)
print(result.mean())

0.7591934381408066

1.3投票算法

投票算法(Voting)是一个非常简单的多个机器学习算法的集成算法。投票算法是通过创建两个或多个算法模型,利用投票算法将这些算法包装起来,计算各个子模型的平均预测情况。


from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.ensemble import VotingClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.svm import SVC
from sklearn.linear_model import LoGISticRegression
 
filename = 'pima_data.csv'
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(filename, names=names)
array = data.values
X = array[:,0:8]
Y = array[:,8]
num_folds = 10
seed = 7
kfold = KFold(n_splits=num_folds,shuffle=True,random_state=seed)
 
#投票算法
models=[]
model_logistic = LogisticRegression(max_iter=3000)
model_cart = DecisionTreeClassifier()
model_svc = SVC()
models.append(('logistic',model_logistic))
models.append(('cart',model_cart))
models.append(('svc',model_svc))
ensemble_model = VotingClassifier(estimators=models)
result = cross_val_score(ensemble_model, X, Y, cv=kfold)
print(result.mean())

0.7721804511278196

2.算法调参

机器学习的模型都是参数化的,可以通过调参来提高模型的准确度。模型参数的调整应该遵循偏差和方差协调的原则。

调整算法参数是机器学习解决问题的最后一个步骤,有时也被成为超参数优化。学会调参是进行机器学习项目的前提。参数可分为两种:一种是影响模型在训练集上的准确度或防止过拟合能力的参数;另一种是不影响这两者的参数。模型在样本总体上的准确度由其在训练集上的准确度及其防止过拟合的能力共同决定,所以在调参时主要针对第一种参数进行调整,最终达到的效果是:模型在训练集上的准确度和防止过拟合能力的大和谐。

2.1网络搜索优化参数

网格搜索优化参数是一种算法参数优化的方法。它是通过遍历已定义参数的列表,来评估算法的参数,从而找到最优参数。


from pandas import read_csv
from sklearn.linear_model import Ridge
from sklearn.model_selection import GridSearchCV
 
#导入数据
filename = 'pima_data.csv'
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(filename, names=names)
#将数据分为输入数据和输出结果
array = data.values
X = array[:,0:8]
Y = array[:,8]
#算法实例化
model = Ridge()
#设置要遍历的参数
param_grid = {'alpha':[1,0.1,0.01,0.001,0]}
#通过网格搜索查询最优参数
grid = GridSearchCV(model, param_grid)
grid.fit(X,Y)
#搜索结果
print('max_score:%.3f'% grid.best_score_)
print('best_para:%.3f'% grid.best_estimator_.alpha)

max_score:0.276
best_para:1.000

2.2随机搜索优化参数

随机搜索优化参数是另一种对算法参数优化的方法。随机搜索优化参数通过固定次数的迭代,采用随机采样分布的方式搜索合适的参数。


from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import unifORM
 
#随即搜索优化参数
grid = RandomizedSearchCV(model, param_grid,100,random_state=7)
grid.fit(X,Y)
#搜索结果
print('max_score:%.3f'% grid.best_score_)
print('best_para:%.3f'% grid.best_estimator_.alpha)

max_score:0.276
best_para:1.000

总结

本文主要讲解了如何优化模型,包括集成算法和算法调参,这些都是在实际项目中非常有用的。

到此这篇关于python机器学习入门(六)优化模型的文章就介绍到这了,更多相关Python机器学习内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python机器学习入门(六)之Python优化模型

本文链接: https://www.lsjlt.com/news/133790.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python机器学习入门(六)之Python优化模型
    目录1.集成算法1.1袋装算法1.1.1袋装决策树1.1.2随机森林1.1.3极端随机树1.2提升算法1.2.1AdaBoost1.2.2随机梯度提升1.3投票算法2.算法调参2.1...
    99+
    2022-11-12
  • Python机器学习入门(四)之Python选择模型
    目录1.数据分离与验证1.1分离训练数据集和评估数据集1.2K折交叉验证分离1.3弃一交叉验证分离1.4重复随机分离评估数据集与训练数据集2.算法评估2.1分类算法评估2.1.1分类...
    99+
    2022-11-12
  • Python机器学习入门(二)之Python数据理解
    目录1.数据导入1.1使用标准Python类库导入数据1.2使用Numpy导入数据1.3使用Pandas导入数据2.数据理解2.1数据基本属性2.1.1查看前10行数据2.1.2查看...
    99+
    2022-11-12
  • Python机器学习入门(三)之Python数据准备
    目录1.数据预处理1.1调整数据尺度1.2正态化数据1.3标准化数据1.4二值数据2.数据特征选定2.1单变量特征选定2.2递归特征消除2.3数据降维2.4特征重要性总结特征选择时困...
    99+
    2022-11-12
  • Python机器学习入门(五)之Python算法审查
    目录1.审查分类算法1.1线性算法审查1.1.1逻辑回归1.1.2线性判别分析1.2非线性算法审查1.2.1K近邻算法1.2.2贝叶斯分类器1.2.3分类与回归树1.2.4支持向量机...
    99+
    2022-11-12
  • Python机器学习入门(一)序章
    目录前言写在前面1.什么是机器学习?1.1 监督学习1.2无监督学习2.Python中的机器学习3.必须环境安装Anacodna安装总结前言 每一次变革都由技术驱动。纵观人类历史,上...
    99+
    2022-11-12
  • 【机器学习】Python 快速入门笔记
    Python 快速入门笔记Xu An   2018-3-7 1、Python print#在Python3.X中使用print()进行输出,而2.x中使用()会报错 print("hello world")  print('I\'m app...
    99+
    2023-01-31
    入门 机器 快速
  • Python机器学习库scikit-learn入门开发示例
    目录1.数据采集和标记2.特征选择3.数据清洗4.模型选择5.模型训练6.模型测试7.模型保存与加载8.实例数据采集和标记特征选择模型训练模型测试模型保存与加载1.数据采集和标记 先...
    99+
    2022-11-11
  • python解释模型库Shap实现机器学习模型输出可视化
    目录安装所需的库导入所需库创建模型创建可视化1、Bar Plot2、队列图3、热图4、瀑布图5、力图6、决策图解释一个机器学习模型是一个困难的任务,因为我们不知道这个模型在那个黑匣子...
    99+
    2022-11-12
  • python解释模型库Shap怎么实现机器学习模型输出可视化
    本篇内容主要讲解“python解释模型库Shap怎么实现机器学习模型输出可视化”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python解释模型库Shap怎么实现机器学习模型输出可视化”吧!安装...
    99+
    2023-06-25
  • Python DPED机器学习之实现照片美化
    目录前言环境部署项目结构tensorflow安装其他依赖安装VGG-19下载项目运行准备图片素材测试效果前言 最近发现了一个可以把照片美化的项目,自己玩了玩,挺有意思的,分享一下。 ...
    99+
    2022-11-12
  • python机器学习Github已达8.9Kstars模型解释器LIME
    目录LIME代 码对单个样本进行预测解释适用问题简单的模型例如线性回归,LR等模型非常易于解释,但在实际应用中的效果却远远低于复杂的梯度提升树模型以及神经网络等模型。 现在大部分互联...
    99+
    2022-11-12
  • Python中怎么创建线性回归机器学习模型
    Python中怎么创建线性回归机器学习模型,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。线性回归机器学习模型1.要使用的数据集由于线性回归是我们在本文中学习的第一个机器学习模型...
    99+
    2023-06-16
  • Python机器学习应用之基于线性判别模型的分类篇详解
    目录一、Introduction1 LDA的优点2 LDA的缺点3 LDA在模式识别领域与自然语言处理领域的区别二、Demo三、基于LDA 手写数字的分类四、小结一、Introduc...
    99+
    2022-11-12
  • Python机器学习之使用Pyecharts制作可视化大屏
    目录前言Pyecharts可视化Map世界地图柱状图、饼图Pyecharts组合图表总结前言 ECharts是由百度开源的基于JS的商业级数据图表库,有很多现成的图表类型和实例,而P...
    99+
    2022-11-12
  • python人工智能human learn绘图创建机器学习模型
    目录什么是 human-learn安装 human-learn互动绘图创建模型并进行预测预测新数据解释结果预测和评估测试数据结论如今,数据科学家经常给带有标签的机器学习模型数据,以便...
    99+
    2022-11-12
  • python怎么使用Evidently创建机器学习模型仪表板
    这篇文章主要讲解了“python怎么使用Evidently创建机器学习模型仪表板”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python怎么使用Evidently创建机器学习模型仪表板”吧...
    99+
    2023-06-25
  • Python使用机器学习模型实现温度预测详解
    目录温度预测 回归分析温度预测 随机森林 Python 写法使用 Python 可以使用机器学习模型进行温度预测。常用的模型有回归分析、随机森林等。使用前需要准备足够的历史数据并进行...
    99+
    2023-01-31
    Python机器学习 温度预测 Python温度预测 Python 预测
  • Python机器学习之实现模糊照片人脸恢复清晰
    目录前言环境安装验证模型总结前言 最近看到一个有意思的机器学习项目——GFPGAN,他可以将模糊的人脸照片恢复清晰。开源项目的Github地址:https://github.com/...
    99+
    2022-11-12
  • python机器学习朴素贝叶斯算法及模型的选择和调优详解
    目录一、概率知识基础1.概率2.联合概率3.条件概率二、朴素贝叶斯1.朴素贝叶斯计算方式2.拉普拉斯平滑3.朴素贝叶斯API三、朴素贝叶斯算法案例1.案例概述2.数据获取3.数据处理...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作