【python】scikit-learn包:模型评估与优化

这篇具有很好参考价值的文章主要介绍了【python】scikit-learn包:模型评估与优化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

模型构建的目的

首先明确,模型拟合的目的:
不是对训练数据进行准确预测,而是对新数据进行准确预测

欠拟合 与 过拟合

【python】scikit-learn包:模型评估与优化
欠拟合:可以通过训练数据及时发现,且可通过优化模型结果解决
过拟合:难以发觉;

过拟合的原因与解决

过拟合原因

本质原因: 对训练数据的拟合过于准确,忽略了训练数据也可能存在的误差
模型上的原因
1. 模型过于复杂(维度过高)
2. 把过多的属性参考在内,产生了干扰

过拟合解决思路

解决
1. 简化模型结构(使用低阶模型)
2. 数据预处理(降维处理,PCA主成分分析)
3. 模型训练时,增加正则化项

法一:要素降维——PCA主成分分析

详见:【python】sikit-learn包:机器学习

法二:增加正则项

普通拟合时,损失函数如下:
【python】scikit-learn包:模型评估与优化
其中 g(Θ,xi) 可以理解为 :
【python】scikit-learn包:模型评估与优化

添加正则项后的损失函数如下:
【python】scikit-learn包:模型评估与优化
可以通过抬高 λ 的值,控制 Θ 的值在较小范围内,从而降低高阶自变量对因变量的影响

模型评估方法——数据分离 & 混淆矩阵

什么是数据分离?

由模型构建目的 => 我们要想评估模型,我们在具有“训练数据”的同时,还需要“新数据”,并且知道“新数据”的正确结果
=> 所以我们需要将我们已有数据进行分离,
分成:训练集测试集
训练集用于模型训练,测试集用于预测
训练集和测试集的比例可以不断调整

数据分离的代码实现

from sklearn.model_selection import train_test_split
Xtrain,Xtest,y_train,y_test=train_test_split(X,y,random_state=4,test_size=0.4)
# x与y为一一对应关系,随机状态为4,测试数据的占全部数据的比例为0.4

准确率评估的局限性:

传统模型评估方法:直接计算准确率 accuracy
局限性例子
对0-1数据进行预测,被预测数据中有900个1和100个0

模型1:猜对850个1和50个0,其余猜错,准确率90%
模型2:全部猜测为1,准确率为90%

显然,模型2不靠谱,但它具备和模型1一样的准确率
准确率具有局限性的原因
reason1: 没有体现数据预测的实际分布情况(0和1的分布比例等)
reason2: 没有体现模型错误预判的类型(因为什么错了)

混淆矩阵

定义

混淆矩阵又叫误差矩阵,用来衡量分类算法的准确程度
【python】scikit-learn包:模型评估与优化
【python】scikit-learn包:模型评估与优化
混淆矩阵的评估要素
【python】scikit-learn包:模型评估与优化
混淆矩阵可以提供更加全面的评估信息
可以将混淆矩阵所包含的各种率都进行观察,即可得知该模型的具体情况;哪个指标更重要,取决于模型使用的环境
F1分数 越高,模拟

混淆矩阵的代码实现

from sklearn.metrics import confusion matrix
cm = confusion_matrix(y,pred_y)
TP = cm[1,1] #正样本猜对
TN = cm[0,0] #正样本猜错
FP = cm[0,1] #负样本猜对
FN = cm[1,0] #负样本猜错
recall = TP/(TP+FN) #召回率,正样本的猜对率
specificity = TN/(TN+FP) #特异度,负样本的猜对率
precision = TP/(TP+FP) # 精确率 预测为正样本的正确率
f1 = 2*precision*recall / (precision +recall) #F1分数,综合精确度和召回率的指标

模型优化方法

数据质量决定模型表现的上限

思路:

  1. 数据属性的意义,是否为无关数据
  2. 不同属性数据的数量级差异
  3. 是否有异常数据
  4. 采集数据的方法是否合理,采集到的数据是否有代表性
  5. 数据标签映射编码 的结果具有一致性

方法:

  1. 删除无关属性的数据
  2. 数据预处理:整合、规范、标准、归一
  3. 异常数据 是否保留或过滤
  4. 尝试多种模型,对比模型表现

模型优化 的 思路框架

Step 1. 观察原始数据(数据内容、数据范围等)
Step 2. 数据格式整理(标签编码、数据类型转换等)
Step 3. 筛出异常数据【异常检测算法】(决定是否保留)
Step 4. 删除低相关属性【PCA主成分分析算法】(提高模型效率)
Step 5. 尝试不同的模型
Step 6. 对不同模型的表现进行评价【混淆矩阵评估法】
Step 6. 模型优化【调整模型参数、正则化处理】文章来源地址https://www.toymoban.com/news/detail-428167.html

进一步优化方法

  1. 遍历模型的核心参数的组合,评估模型表现
  2. 扩大数据样本量
  3. 增减属性数据
  4. 模型正则化处理,调整正则项λ的值

到了这里,关于【python】scikit-learn包:模型评估与优化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器学习实战----使用Python和Scikit-Learn构建简单分类器

    前言: Hello大家好,我是Dream。 今天来学习一下如何使用Python和Scikit-Learn构建一个简单的分类器 今天我们将学习 使用Python和Scikit-Learn创建一个简单的文本分类器来识别垃圾邮件 。我们将先介绍数据集,并通过可视化和数据预处理方式更好地理解数据集。接着,我们将选择一

    2023年04月09日
    浏览(43)
  • Python案例|使用Scikit-learn实现客户聚类模型

    聚类是一种经典的无监督学习方法,无监督学习的目标是通过对无标记训练样本的学习,发掘和揭示数据集本身潜在的结构与规律,即不依赖于训练数据集的类标记信息。聚类试图将数据集划分为若干个互不相交的类簇,从而每个簇对应一个潜在的类别。 聚类算法体现了“物

    2024年02月15日
    浏览(31)
  • Python机器学习:Scikit-learn和TensorFlow的应用和模型设计

    Python在机器学习领域中已经成为非常受欢迎的编程语言。Scikit-learn和TensorFlow是Python中应用最广泛的两个机器学习库,它们提供了丰富的机器学习算法和工具,帮助开发人员轻松地构建和训练机器学习模型。本文将详细介绍Scikit-learn和TensorFlow的应用和模型设计。   Scikit-learn是

    2024年02月04日
    浏览(35)
  • 【python】scikit-learn包:机器学习

    只支持python语言 Win+R ,输入指令: pip install -U scikit-learn 借助pandas和numpy 进行数据导入与处理 机器学习的函数大部分只能对数字信息进行处理,无法对string类数据进行分析,因此需要将string类信息进行编码数字化 参考blog链接,可进行补码 给定数据集 [x1,x2,x3,…,y],拟合y与各

    2024年02月01日
    浏览(40)
  • Python数据科学:Scikit-Learn机器学习

    Scikit-Learn使用的数据表示:二维网格数据表 鸢尾花数据集说明: sepal_length:萼片长度 sepal_width:萼片宽度 petal_length:花瓣长度 petal_width:花瓣宽度 species:鸢尾花类型,Iris-setosa(山鸢尾),Iris-versicolor(变色鸢尾),Iris-virginica(维吉尼亚鸢尾) df_iris.head() 样本:鸢尾花数据集矩阵,矩阵

    2024年02月21日
    浏览(50)
  • Python机器学习:Scikit-learn库与应用

    当涉及到Python机器学习时,Scikit-learn是一个非常流行且功能强大的库。它提供了广泛的算法和工具,使得机器学习变得简单而高效。下面是一个简单的Scikit-learn库与应用示例,其中包括代码。 首先,确保你已经安装了Scikit-learn库。你可以使用pip命令来安装它: bash复制代码

    2024年02月19日
    浏览(48)
  • 探索 Scikit-learn:Python 机器学习初级篇

    Scikit-learn 是 Python 中最著名的机器学习库之一,它提供了大量实用的机器学习算法以及相关的工具,可以方便我们进行数据挖掘和数据分析。在这篇文章中,我们将介绍 Scikit-learn 的基本使用,包括如何导入数据、预处理数据、选择和训练模型,以及评估模型的性能。 在使用

    2024年02月17日
    浏览(40)
  • Python案例|使用Scikit-learn进行房屋租金回归分析

    回归分析是一种预测性的建模技术,研究的是因变量(目标)和自变量(预测器)之间的关系。回归分析是建模和分析数据的重要工具。比如预测股票价格走势、预测居民收入、预测微博互动量等等。常用的有线性回归、逻辑回归、岭回归等。本文主要使用线性回归。 本文使

    2024年02月15日
    浏览(53)
  • 掌握 Scikit-Learn: Python 中的机器学习库入门

    机器学习 (Machine Learning) 是一个近年来频繁出现在科技新闻, 研究报告, 行业分析和实际应用中的热门领域. 机器学习 (Machine Learning) 正以前所未有的速度影响着我们的生活. 从智能音响的语音识别, 手机摄像头的人脸解锁, 到金融领域的评估, 医疗健康的预测分析. 机器学习的应

    2024年02月07日
    浏览(52)
  • 深入Scikit-learn:掌握Python最强大的机器学习库

    本篇博客详细介绍了Python机器学习库Scikit-learn的使用方法和主要特性。内容涵盖了如何安装和配置Scikit-learn,Scikit-learn的主要特性,如何进行数据预处理,如何使用监督学习和无监督学习算法,以及如何评估模型和进行参数调优。本文旨在帮助读者深入理解Scikit-learn,并有效

    2024年02月15日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包