线性回归模型进行特征重要性分析

目的

        线性回归是很常用的模型;在局部可解释性上也经常用到。

数据归一化

        归一化通常是为了确保不同特征之间的数值范围差异不会对线性模型的训练产生过大的影响。在某些情况下,特征归一化可以提高模型的性能,但并不是所有情况下都需要进行归一化。

        归一化的必要性取决于你的数据和所使用的算法。对于某些线性模型,比如线性回归和支持向量机,数据归一化是一个常见的实践,因为它们对特征的尺度敏感。

        但对于其他算法,如决策树和随机森林,通常不需要进行归一化。

        在实际应用中,建议根据你的数据和所选用的模型来决定是否进行归一化。如果你的数据特征具有不同的尺度,并且你使用的是那些对特征尺度敏感的线性模型,那么进行归一化可能会有所帮助。否则,你可以尝试在没有归一化的情况下训练模型,然后根据模型性能来决定是否需要进行归一化。

 对新数据进行归一化处理
new_data_sample_scaled = scaler.transform(new_data_sample)# 使用模型进行预测
predicted_value = model.predict(new_data_sample_scaled)
这样就能确保在预测新数据时,特征的尺度与训练数据保持一致。

MinMaxScaler底层代码

class MinMaxScaler Found at: sklearn.preprocessing.dataclass MinMaxScaler(BaseEstimator, TransformerMixin):def __init__(self, feature_range=(0, 1), copy=True):self.feature_range = feature_rangeself.copy = copydef _reset(self):"""Reset internal data-dependent state of the scaler, if necessary.__init__ parameters are not touched."""# Checking one attribute is enough, becase they are all set together# in partial_fitif hasattr(self, 'scale_'):del self.scale_del self.min_del self.n_samples_seen_del self.data_min_del self.data_max_del self.data_range_def fit(self, X, y=None):"""Compute the minimum and maximum to be used for later scaling.Parameters----------X : array-like, shape [n_samples, n_features]The data used to compute the per-feature minimum and maximumused for later scaling along the features axis."""# Reset internal state before fittingself._reset()return self.partial_fit(X, y)def partial_fit(self, X, y=None):"""Online computation of min and max on X for later scaling.All of X is processed as a single batch. This is intended for caseswhen `fit` is not feasible due to very large number of `n_samples`or because X is read from a continuous stream.Parameters----------X : array-like, shape [n_samples, n_features]The data used to compute the mean and standard deviationused for later scaling along the features axis.y : Passthrough for ``Pipeline`` compatibility."""feature_range = self.feature_rangeif feature_range[0] >= feature_range[1]:raise ValueError("Minimum of desired feature range must be smaller"" than maximum. Got %s." % str(feature_range))if sparse.issparse(X):raise TypeError("MinMaxScaler does no support sparse input. ""You may consider to use MaxAbsScaler instead.")X = check_array(X, copy=self.copy, warn_on_dtype=True, estimator=self, dtype=FLOAT_DTYPES)data_min = np.min(X, axis=0)data_max = np.max(X, axis=0)# First passif not hasattr(self, 'n_samples_seen_'):self.n_samples_seen_ = X.shape[0]else:data_min = np.minimum(self.data_min_, data_min)data_max = np.maximum(self.data_max_, data_max)self.n_samples_seen_ += X.shape[0] # Next stepsdata_range = data_max - data_minself.scale_ = (feature_range[1] - feature_range[0]) / _handle_zeros_in_scale(data_range)self.min_ = feature_range[0] - data_min * self.scale_self.data_min_ = data_minself.data_max_ = data_maxself.data_range_ = data_rangereturn selfdef transform(self, X):"""Scaling features of X according to feature_range.Parameters----------X : array-like, shape [n_samples, n_features]Input data that will be transformed."""check_is_fitted(self, 'scale_')X = check_array(X, copy=self.copy, dtype=FLOAT_DTYPES)X *= self.scale_X += self.min_return Xdef inverse_transform(self, X):"""Undo the scaling of X according to feature_range.Parameters----------X : array-like, shape [n_samples, n_features]Input data that will be transformed. It cannot be sparse."""check_is_fitted(self, 'scale_')X = check_array(X, copy=self.copy, dtype=FLOAT_DTYPES)X -= self.min_X /= self.scale_return X


数据分箱

n_bins = [5]
kb = KBinsDiscretizer(n_bins=n_bins, encode = 'ordinal')
kb.fit(X[selected_features])
X_train=kb.transform(X_train[selected_features])
from sklearn.preprocessing import KBinsDiscretizer
import joblib# 创建 KBinsDiscretizer 实例并进行分箱
est = KBinsDiscretizer(n_bins=3, encode='ordinal', strategy='uniform')
X_binned = est.fit_transform(X)# 保存 KBinsDiscretizer 参数到文件
joblib.dump(est, 'kbins_discretizer.pkl')# 加载 KBinsDiscretizer 参数
loaded_estimator = joblib.load('kbins_discretizer.pkl')# 使用加载的参数进行分箱
X_binned_loaded = loaded_estimator.transform(X)from sklearn.preprocessing import KBinsDiscretizerdef save_kbins_discretizer_params(estimator, filename):params = {'n_bins': estimator.n_bins,'encode': estimator.encode,'strategy': estimator.strategy,# 其他可能的参数}with open(filename, 'w') as f:for key, value in params.items():f.write(f"{key}: {value}\n")# 创建 KBinsDiscretizer 实例并进行分箱
est = KBinsDiscretizer(n_bins=3, encode='ordinal', strategy='uniform')# 保存 KBinsDiscretizer 参数到文本文件
save_kbins_discretizer_params(est, 'kbins_discretizer_params.txt')

 KBinsDiscretizer 的源代码


KBinsDiscretizer 的源代码参数包括:n_bins:指定要创建的箱的数量。
encode:指定编码的方法。可以是'onehot'、'onehot-dense'、'ordinal'中的一个。
strategy:指定分箱的策略。可以是'uniform'、'quantile'、'kmeans'中的一个。
dtype:指定输出数组的数据类型。
bin_edges_:一个属性,它包含每个特征的箱的边界。
以下是 KBinsDiscretizer 类的源代码参数的简要说明:n_bins:用于指定要创建的箱的数量。默认值为5。
encode:指定编码的方法。可选值包括:
'onehot':使用一热编码。
'onehot-dense':使用密集矩阵的一热编码。
'ordinal':使用整数标签编码。默认为 'onehot'。
strategy:指定分箱的策略。可选值包括:
'uniform':将箱的宽度保持相等。
'quantile':将箱的数量保持不变,但是每个箱内的样本数量大致相等。
'kmeans':将箱的数量保持不变,但是使用 k-means 聚类来确定箱的边界。默认为 'quantile'。
dtype:指定输出数组的数据类型。默认为 np.float64。
bin_edges_:一个属性,它包含每个特征的箱的边界。这是一个列表,其中每个元素都是一个数组,表示相应特征的箱的边界。
您可以在 sklearn/preprocessing/_discretization.py 中找到 KBinsDiscretizer 类的完整源代码,以查看详细的参数和实现细节。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/103566.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Magica Cloth 使用方法笔记

Magica Cloth 使用方法笔记 效果展示: 参考资料: 1、官方使用文档链接: インストールガイド – Magica Soft 2、鱼儿效果案例: https://www.patreon.com/posts/69459293 3、插件工具链接:版本() 目录&#xff1a…

理解线程池源码 【C++】面试高频考点

理解线程池 C 文章目录 理解线程池 C程序源码知识点emplace_back 和 push_back有什么区别?互斥锁 mutexcondition_variablestd::move()函数bind()函数join 函数 线程池的原理就是管理一个任务队列和一个工作线程队列。 工作线程不断的从任务队列取任务,然…

区块链在游戏行业的应用

区块链技术在游戏行业有许多潜在的应用,它可以改变游戏开发、发行和玩家交互的方式。以下是区块链技术在游戏行业的一些主要应用,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.游戏资产…

云梦富盈:智慧投资引领未来市场

随着2023年的到来,全球股市呈现出令人关注的趋势和挑战。投资者纷纷寻求智慧投资,以更好地把握市场动向。云梦富盈,作为一支备受瞩目的投资团队,正在洞悉并解析2023年全球股市的趋势,为投资者提供智慧投资的护航。 20…

[Error]在Swift项目Build Settings的Preprocessor Macros中定义的宏无效的问题

问题 如图,在Build Settings -> Preprocessor Macros中添加了ISADEMO1。但在代码中判断无效,还是会输出“isn’t ADemo” #if ISADEMOprint("is ADemo") #elseprint("isnt ADemo") #endif解决 如图,要让Preproces…

学习编程-先改变心态

编程失败的天才 林一和我很久以前就认识了——我从五年级就认识他了。他是班上最聪明的孩子。如果每个人在家庭作业或考试准备方面需要帮助,他们都会去那里。 有趣的是,林一不是那种连续学习几个小时的孩子。 他的聪明才智似乎与生俱来,几乎毫…

机器学习(21)---召回率(recall)、精度(precision)和准确率(accuracy)

文章目录 1. 分布不平衡的数据集2. TP、TN 、FP 、FN3. 混淆矩阵4. 各自的计算公式5. 例题应用 1. 分布不平衡的数据集 1. 精度(precision)和召回率(recall)是衡量机器学习模型性能的重要指标,特别是数据集分布不平衡的…

Maven系列第3篇:详解maven解决依赖问题

maven系列目标:从入门开始开始掌握一个高级开发所需要的maven技能。 这是maven系列第3篇。 我们先来回顾一下什么是maven? maven是apache软件基金会组织维护的一款自动化构件工具,专注服务于java平台的项目构件和依赖管理。 本文主要内容…

使用任务定时执行软件的定时关机功能,控制电脑可用时间段

目录 定时关机功能可以设置有效的时间段 控制电脑可用时间段的意义 定时执行软件介绍 - 定时执行专家 定时关机设置方法 不可用时间段设置方法 注意事项 总结 在现代社会,电脑已经成为人们生活和工作中不可或缺的一部分。但是,长时间使用电脑也会对…

Torch生成类激活图CAM

import torch from torch.nn import functional as F from torchvision import models, transforms from PIL import Image import os os.environ[KMP_DUPLICATE_LIB_OK]TRUE# 加载经过训练的 ResNet 模型 model models.resnet50(pretrainedTrue) model.eval()# 载入图像并进行…

【AI】深度学习——前馈神经网络——卷积神经网络

文章目录 1.2 卷积神经网络1.2.1 卷积一维卷积近似微分低通滤波器/高通滤波器卷积变种 二维卷积卷积的核心就是翻转相乘卷积应用于图像处理 互相关互相关代替卷积 卷积与互相关的交换性 1.2.2 卷积神经网络卷积代替全连接卷积层特征映射卷积层结构参数数量 汇聚层(池化层)汇聚层…

Chrome 118 版本中的新功能

Google Chrome 的最新版本V118正式版 2023/10/10 发布,以下是新版本中的相关新功能供参考。 本文翻译自 New in Chrome 118,作者: Adriana Jara, 略有删改。 以下是主要内容: 使用scope css规则在组件中指定特定样式。…

Mybatis 实现简单增删改查

目录 前言 一、Mybatis是什么 二、配置Mybatis环境 三、创建数据库和表 四、添加业务代码 4.1、添加实体类 4.2、添加mapper接口 4.3、添加实现接口方法的xml文件 五、简单的增删改查操作及单元测试 5.1、单元测试 单元测试具体步骤: 单元测试如何才能不污…

好莱坞编剧大罢工终于结束;与OpenAI创始人共进早餐;使用DALL-E 3制作绘本分享;生成式AI的基础设施架构 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🔥 好莱坞编剧大罢工终于结束:简单说就是AI妥协了 https://www.wgacontract2023.org/the-campaign/summary-of-the-2023-wga-…

【Python爬虫 js渲染思路一】

Python爬虫 破解js渲染思路一 当我们在谈论网页js渲染的时候,我们在谈论什么 js渲染网页,从某种程度来说,是指单纯的http请求,返回的文本数据,与我们在浏览器看到的内容,相距甚远.其可包括为以下几点&…

C++的高手之旅

要学习C并成为C大佬,以下是一些建议: 掌握C基础知识:C是一种面向对象的编程语言,它包含了C语言的大部分语法和特性。因此,学习C之前,建议先掌握C语言的基础知识,包括数据类型、控制流、指针、内…

微调Yolov8动物姿势估计模型

本文主要以狗的姿势估计为例,展示如何对当下流行的YOLOv8姿势模型进行Fine-tuning,并附录完整代码。 动物姿势估计是计算机视觉领域的一个研究方向,它是人工智能的一个子领域,专注于自动检测和分析图像或视频中动物的姿势和位置。其目标是确定一个或多个动物身体部位的空间…

msvcr120.dll丢失怎样修复?总结msvcr120.dll丢失的5修复方法

在使用计算机的过程中,我们常常会遇到各种问题,其中之一就是“计算机丢失msvcr120.dll丢失的困扰”。这个问题可能对一些人来说并不陌生,但是对于初次遇到这个问题的人来说,可能会感到无所适从。因此,小编将详细探讨这…

免费开源的非标项目型制造BOM一键导入方案介绍

非标项目型制造,每一个订单都会引入很多新料号、新BoM、新工艺路线。实施ERP/MES系统,实现生产管理数字化,第一步就是要导入这些料号、BoM和工艺。项目型制造,大多数订单只生产一次。但在ERP/MES系统中,订单的料号、Bo…

【Unity】【VR】如何让Distance Grab抓取物品时限制物品的Rotation

【背景】 遇到这样的场景,希望抓取Canvas时,Canvas不会沿Z轴旋转。 【问题】 发现Freeze Canvas的Rigid Body没有用。 【分析】 应该是RigidBody的限制仅在物理互动下生效,抓取可能不属于物理互动(比如碰撞),所以不生效。 【思路】 还是得写脚本挂载在Interacta…