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

高端网站建设谷美今日国际新闻最新消息

高端网站建设谷美,今日国际新闻最新消息,启航网站建设,番禺网站开发平台对数变换 和Box-Cox变换 变换的目的 就是让数据分布更适合建模,减少偏态和异常值带来的负面影响,从而提升模型的表现和稳定性。准备工作 确保要处理的数据的值都大于 0 。在这之前,可以统计对应列的最值print(df.min(), df.max()),观察是否有< 0 的值,有的话,就必须先…

对数变换 和Box-Cox变换

变换的目的
  • 就是让数据分布更适合建模,减少偏态和异常值带来的负面影响,从而提升模型的表现和稳定性。
准备工作
  • 确保要处理的数据的值都大于 0 。
  • 在这之前,可以统计对应列的最值print(df.min(), df.max()),观察是否有< 0 的值,有的话,就必须先处理,再做后续变换
  • 示例代码如下:
def reset_zero(x):  return max(x,0)  
# 先给这两列的值,确保大于0,再进行对数转换或者Box-Cox转换  
features['Garage spaces']=features['Garage spaces'].apply(lambda x: reset_zero(x))  
features['Total spaces']=features['Total spaces'].apply(lambda x: reset_zero(x))
对数变换log和boxcox变换的联系
  • log1p(x) 实际上是 Box-Cox 变换的特殊情况(λ=0),
    • log1p(x) == boxcox1p(x, λ=0)
  • Box-Cox 变换通过调节 λ,可以在 log1p 和其他幂次变换之间自适应选择,使数据分布更接近正态分布。
  • 所以 Box-Cox 更灵活,能自动适应不同特征的分布;而 log1p 只是 λ=0 的情况。

对数变换 – np.log / np.log1p

  • 🧨🧨🧨注意内容:
    • log1p 对应 +1,如果需要,求逆的时候还要 -1;
  1. 观察法:直观的方式:
    数值比较大,且不同样本之间的数据变化也比较大【下面给出个具体例子】
print(train_features.min(), train_features.max())  # 应在一个合理范围内  
print(train_labels.min(), train_labels.max())# 调整前
# tensor(0) tensor(72993.2)
# tensor(0) tensor(18100053)# 调整后
# tensor(-15.2072) tensor(72.9932)
# tensor(11.5179) tensor(18.3153)
"""
  1. 更科学一点的方法:一般是要结合数据的特性来使用,比如这里使用偏度(skewness)
    • |skewness| < 0.5:分布近似对称(无需处理)
    • 0.5 ≤ |skewness| < 1:中等偏斜(可考虑处理)
    • |skewness| ≥ 1:高度偏斜(建议处理)
    • 综上,对于>0.5 就可以使用这个了
    • 举例子:根据下面的输出的head(20) 来查看数据的偏度,决定是否使用
# 选取 features 数据集中所有数值型(int64 和 float64)列的列名  
numerical_columns = features.select_dtypes(include=['int64','float64']).columns  # 对每个数值型特征计算偏度(skewness),即分布的不对称程度。  
# stats.skew(x) 计算偏度,偏度越大,分布越偏斜。  
# 结果按偏度从大到小排序。  
skewed_features = features[numerical_columns].apply(lambda x: stats.skew(x)).sort_values(ascending=False)  
skewness = pd.DataFrame({'Skew value' :skewed_features})  
# 展示偏度最大的前20个特征。  
skewness.head(20)
使用方法

y = np.log1p(y) 等价于 y =np.log(1 + y)

import numpy as np
import pandas as pdtrain_data = pd.read_csv("train.csv")
# train_data["Sold Price"] = np.log(train_data["Sold Price"]+1) 
train_data["Sold Price"] = np.log1p(train_data["Sold Price"]) # 求原数值
train_data["Sold Price"] = np.exp(train_data["Sold Price"]) - 1
逆变换
import numpy as np# 生成示例数据
np.random.seed(0)
original_data = [0.5, 1.0
http://www.dtcms.com/wzjs/43143.html

相关文章:

  • 武汉单位做网站深圳网络优化推广公司
  • 大连网站制作的公司seo企业建站系统
  • 创办免费企业网站关键词筛选工具
  • 网站图片左右滚动惠州seo外包公司
  • 网站为什么做版心限制软文300字介绍商品
  • 青岛即墨网站开发优化快速排名公司
  • 网站制作网站价格seo网站优化工具大全
  • 什么是网站名google搜索
  • 阿里云突发性能适用于做网站吗宁波网络推广公司有哪些
  • 网站建设时间规划竞价广告是什么意思
  • 专门做品牌折扣的网站青岛seo计费
  • 网站建设的技术指标河源今日头条新闻最新
  • 网站开发需要提供哪些资料快速建站哪个平台好
  • 清河网站制作网络营销的方式有几种
  • 改图网网站谁做的如何分步骤开展seo工作
  • 青岛做网站的大公司有站长工具网站备案查询
  • 广州软件制作公司谷歌seo技巧
  • 网上做外贸都有哪些网站百度搜索app免费下载
  • 广东网站建设包括什么软件上海网络推广招聘
  • 公司做网站 手机 电脑网站推广排名教程
  • 韶关市住房和城乡建设部网站百度公司在哪里
  • 网站企业备案和个人备案的区别吗推广自己的网站
  • 做网站那个平台好百度平台营销
  • 深圳营销型网站制作公司营销的概念是什么
  • 做营销网站多少钱百度电话怎么转人工
  • 网络推广公司怎么找客户怎样优化标题关键词
  • 公司网站建设厂家怎么做一个自己的网站
  • 上海网站建设模板外贸公司一般怎么找客户
  • 网站建设登录结构图百度seo可能消失
  • h5网站开发语言选择商城全网推广运营公司