机器学习时间序列特征处理与构造,这篇我建议你收藏

news2024/11/15 5:35:06

数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。由此可见,特征工程在机器学习中占有相当重要的地位。在实际应用当中,可以说特征工程是机器学习成功的关键。

那特征工程是什么?

特征工程是利用数据领域的相关知识来创建能够使机器学习算法达到最佳性能的特征的过程。

特征工程又包含了 Data PreProcessing(数据预处理)、Feature Extraction(特征提取)、Feature Selection(特征选择)和 Feature construction(特征构造)等子问题,本章内容主要讨论特征构造的方法。

文章目录

    • 技术交流
    • 特征构造介绍
    • 时间特征构造
      • 1.连续值时间特征
      • 2.离散值时间特征
        • 1)时间特征拆解
          • 程序实现
        • 2)时间特征判断
          • 程序实现
      • 3.结合时间维度的聚合特征
        • 1)首日聚合特征
        • 2)最近时间聚合特征
        • 3)区间内的聚合特征
    • 时间序列特征构造
      • 1.时间序列聚合特征
          • 1)平均值
          • 2)最小值
          • 3)最大值
          • 4)扩散值
          • 5)离散系数值
          • 6)分布性
      • 2.时间序列历史特征
        • 1)前一(或n)个窗口的取值
        • 2)周期性时间序列前一(或n)周期的前一(或n)个窗口的取值
      • 3.时间序列复合特征
        • 1)趋势特征
        • 2)窗口差异值特征
        • 3)自相关性特征
    • 总结
      • 1.时间特征主要有两大类:
        • 1)从时间变量提取出来的特征
        • 2)对时间变量进行条件过滤,然后再对其他变量进行聚合操作所产生的特征
        • 2. 时间序列数据可以从带有时间的流水数据统计得到,实际应用中可以分别从带有时间的流水数据以及时间序列数据中构造特征,这些特征可以同时作为模型输入特征。
        • 参考文献

技术交流

技术要学会分享、交流,不建议闭门造车。 本文技术由粉丝群小伙伴分享汇总。源码、数据、技术交流提升,均可加交流群获取,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友。

方式①、添加微信号:dkl88191,备注:来自CSDN +研究方向
方式②、微信搜索公众号:Python学习与数据挖掘,后台回复:加群

特征构造介绍

时间特构造以及时间序列特征构造的具体方法:

时间特征构造

对于时间型数据来说,即可以把它转换成连续值,也可以转换成离散值。

1.连续值时间特征

  • 持续时间(单页浏览时长);

  • 间隔时间;

  • 上次购买/点击离现在的时长;

  • 产品上线到现在经过的时长;

2.离散值时间特征

1)时间特征拆解

  • 年;

  • 月;

  • 日;

  • 时;

  • 分;

  • 数;

  • 一天中的第几分钟;

  • 星期几;

  • 一年中的第几天;

  • 一年中的第几个周;

  • 一天中哪个时间段:凌晨、早晨、上午、中午、下午、傍晚、晚上、深夜;

  • 一年中的哪个季度;

程序实现
import pandas as pd  
# 构造时间数据  
date_time_str_list = [  
    '2019-01-01 01:22:26', '2019-02-02 04:34:52', '2019-03-03 06:16:40',  
    '2019-04-04 08:11:38', '2019-05-05 10:52:39', '2019-06-06 12:06:25',  
    '2019-07-07 14:05:25', '2019-08-08 16:51:33', '2019-09-09 18:28:28',  
    '2019-10-10 20:55:12', '2019-11-11 22:55:12', '2019-12-12 00:55:12',  
]  
df = pd.DataFrame({'时间': date_time_str_list})  
# 把字符串格式的时间转换成Timestamp格式  
df['时间'] = df['时间'].apply(lambda x: pd.Timestamp(x))  
  
# 年份  
df['年']=df['时间'].apply(lambda x: x.year)  
  
# 月份  
df['月']=df['时间'].apply(lambda x: x.month)  
  
# 日  
df['日']=df['时间'].apply(lambda x: x.day)  
  
# 小时  
df['时']=df['时间'].apply(lambda x: x.hour)  
  
# 分钟  
df['分']=df['时间'].apply(lambda x: x.minute)  
  
# 秒数  
df['秒']=df['时间'].apply(lambda x: x.second)  
  
# 一天中的第几分钟  
df['一天中的第几分钟']=df['时间'].apply(lambda x: x.minute + x.hour*60)  
  
# 星期几;  
df['星期几']=df['时间'].apply(lambda x: x.dayofweek)  
  
# 一年中的第几天  
df['一年中的第几天']=df['时间'].apply(lambda x: x.dayofyear)  
  
# 一年中的第几周  
df['一年中的第几周']=df['时间'].apply(lambda x: x.week)  
  
# 一天中哪个时间段:凌晨、早晨、上午、中午、下午、傍晚、晚上、深夜;  
period_dict ={  
    23: '深夜', 0: '深夜', 1: '深夜',  
    2: '凌晨', 3: '凌晨', 4: '凌晨',  
    5: '早晨', 6: '早晨', 7: '早晨',  
    8: '上午', 9: '上午', 10: '上午', 11: '上午',  
    12: '中午', 13: '中午',  
    14: '下午', 15: '下午', 16: '下午', 17: '下午',  
    18: '傍晚',  
    19: '晚上', 20: '晚上', 21: '晚上', 22: '晚上',  
}  
df['时间段']=df['时'].map(period_dict)  
  
# 一年中的哪个季度  
season_dict = {  
    1: '春季', 2: '春季', 3: '春季',  
    4: '夏季', 5: '夏季', 6: '夏季',  
    7: '秋季', 8: '秋季', 9: '秋季',  
    10: '冬季', 11: '冬季', 12: '冬季',  
}  
df['季节']=df['月'].map(season_dict)  

2)时间特征判断

  • 是否闰年;

  • 是否月初;

  • 是否月末;

  • 是否季节初;

  • 是否季节末;

  • 是否年初;

  • 是否年尾;

  • 是否周末;

  • 是否公共假期;

  • 是否营业时间;

  • 两个时间间隔之间是否包含节假日/特殊日期;

程序实现
import pandas as pd  
# 构造时间数据  
date_time_str_list = [  
    '2010-01-01 01:22:26', '2011-02-03 04:34:52', '2012-03-05 06:16:40',  
    '2013-04-07 08:11:38', '2014-05-09 10:52:39', '2015-06-11 12:06:25',  
    '2016-07-13 14:05:25', '2017-08-15 16:51:33', '2018-09-17 18:28:28',  
    '2019-10-07 20:55:12', '2020-11-23 22:55:12', '2021-12-25 00:55:12',  
    '2022-12-27 02:55:12', '2023-12-29 03:55:12', '2024-12-31 05:55:12',  
]  
df = pd.DataFrame({'时间': date_time_str_list})  
# 把字符串格式的时间转换成Timestamp格式  
df['时间'] = df['时间'].apply(lambda x: pd.Timestamp(x))  
  
# 是否闰年  
df['是否闰年'] = df['时间'].apply(lambda x: x.is_leap_year)  
  
# 是否月初  
df['是否月初'] = df['时间'].apply(lambda x: x.is_month_start)  
  
# 是否月末  
df['是否月末'] = df['时间'].apply(lambda x: x.is_month_end)  
  
# 是否季节初  
df['是否季节初'] = df['时间'].apply(lambda x: x.is_quarter_start)  
  
# 是否季节末  
df['是否季节末'] = df['时间'].apply(lambda x: x.is_quarter_end)  
  
# 是否年初  
df['是否年初'] = df['时间'].apply(lambda x: x.is_year_start)  
  
# 是否年尾  
df['是否年尾'] = df['时间'].apply(lambda x: x.is_year_end)  
  
# 是否周末  
df['是否周末'] = df['时间'].apply(lambda x: True if x.dayofweek in [5, 6] else False)  
  
# 是否公共假期  
public_vacation_list = [  
    '20190101', '20190102', '20190204', '20190205', '20190206',  
    '20190207', '20190208', '20190209', '20190210', '20190405',  
    '20190406', '20190407', '20190501', '20190502', '20190503',  
    '20190504', '20190607', '20190608', '20190609', '20190913',  
    '20190914', '20190915', '20191001', '20191002', '20191003',  
    '20191004', '20191005', '20191006', '20191007',  
] # 此处未罗列所有公共假期  
df['日期'] = df['时间'].apply(lambda x: x.strftime('%Y%m%d'))  
df['是否公共假期'] = df['日期'].apply(lambda x: True if x in public_vacation_list else False)  
  
# 是否营业时间  
df['是否营业时间'] = False  
df['小时']=df['时间'].apply(lambda x: x.hour)  
df.loc[((df['小时'] >= 8) & (df['小时'] < 22)), '是否营业时间'] = True  
  
df.drop(['日期', '小时'], axis=1, inplace=True)  

3.结合时间维度的聚合特征

具体就是指结合时间维度来进行聚合特征构造,聚合特征构造的具体方法可以参考《聚合特征构造以及转换特征构造》中的《聚合特征构造》章节。

1)首日聚合特征

例如:注册首日投资总金额、注册首日页面访问时长、注册首日总点击次数等;

2)最近时间聚合特征

例如:最近N天APP登录天数、最近一个月的购买金额、最近购物至今天数等;

3)区间内的聚合特征

例如:2018年至2019年的总购买金额、每天下午的平均客流量、在某公司工作期间加班的天数等;

时间序列特征构造

时间序列不仅包含一维时间变量,还有一维其他变量,如股票价格、天气温度、降雨量、订单量等。时间序列分析的主要目的是基于历史数据来预测未来信息。对于时间序列,我们关心的是长期的变动趋势、周期性的变动(如季节性变动)以及不规则的变动。

按固定时间长度把时间序列划分成多个时间窗,然后构造每个时间窗的特征。

1.时间序列聚合特征

按固定时间长度把时间序列划分成多个时间窗,然后使用聚合操作构造每个时间窗的特征。

1)平均值

例子:历史销售量平均值、最近N天销售量平均值。

2)最小值

例子:历史销售量最小值、最近N天销售量最小值。

3)最大值

例子:历史销售量最大值、最近N天销售量最大值。

4)扩散值

分布的扩散性,如标准差、平均绝对偏差或四分位差,可以反映测量的整体变化趋势。

5)离散系数值

离散系数是策略数据离散程度的相对统计量,主要用于比较不同样本数据的离散程度。

6)分布性

时间序列测量的边缘分布的高阶特效估计(如偏态系数或峰态系数),或者更进一步对命名分布进行统计测试(如标准或统一性),在某些情况下比较有预测力。

程序实现:洗发水销售数据

import pandas as pd  
# 加载洗发水销售数据集  
df = pd.read_csv('shampoo-sales.csv')  
df.dropna(inplace=True)  
df.rename(columns={'Sales of shampoo over a three year period': 'value'}, inplace=True)  
  
# 平均值  
mean_v = df['value'].mean()  
print('mean: {}'.format(mean_v))  
  
# 最小值  
min_v = df['value'].min()  
print('min: {}'.format(min_v))  
  
# 最大值  
max_v = df['value'].max()  
print('max: {}'.format(max_v))  
  
# 扩散值:标准差  
std_v = df['value'].std()  
print('std: {}'.format(std_v))  
  
# 扩散值:平均绝对偏差  
mad_v = df['value'].mad()  
print('mad: {}'.format(mad_v))  
  
# 扩散值:四分位差  
q1 = df['value'].quantile(q=0.25)  
q3 = df['value'].quantile(q=0.75)  
irq = q3 - q1  
print('q1={}, q3={}, irq={}'.format(q1, q3, irq))  
  
# 离散系数  
variation_v = std_v/mean_v  
print('variation: {}'.format(variation_v))  
  
# 分布性:偏态系数  
skew_v = df['value'].skew()  
print('skew: {}'.format(skew_v))  
# 分布性:峰态系数  
kurt_v = df['value'].kurt()  
print('kurt: {}'.format(kurt_v))  
  
# 输出:  
mean: 312.59999999999997  
min: 119.3  
max: 682.0  
std: 148.93716412347473  
mad: 119.66666666666667  
q1=192.45000000000002, q3=411.1, irq=218.65  
variation: 0.47644646232717447  
skew: 0.8945388528534595  
kurt: 0.11622821118738624  

注:

  • 上面是单个时间序列的实现代码,多个时间序列的数据集构造特征时需要先进行分组再计算。如IJCAI-17口碑商家客流量预测比赛中,数据集中包含多个商家的历史销售数据,构造特征时需要先按商家分组,然后再构建特征。

  • 上述代码都是使用所有历史数据来构造特征,实际项目中如果待预测目标为t时刻的值,则使用t时刻之前的值来构造特征,不同的t值都可以分别构造训练样本对应的特征。 如:使用t时刻的y值作为label,则使用t-1时刻之前的y值来构造特征;使用t-1时刻的y值作为label时,则使用t-2时刻之前的y值来构造特征。如此类推,我们可以得到多个训练样本,每个样本有多个特征。

2.时间序列历史特征

1)前一(或n)个窗口的取值

例子:昨天、前天和3天前的销售量。

2)周期性时间序列前一(或n)周期的前一(或n)个窗口的取值

例子:写字楼楼下的快餐店的销售量一般具有周期性,周期长度为7天,7天前和14天前的销售量。

程序实现:洗发水销售数据

import pandas as pd  
# 加载洗发水销售数据集  
df = pd.read_csv('shampoo-sales.csv')  
df.dropna(inplace=True)  
df.rename(columns={'Sales of shampoo over a three year period': 'value'}, inplace=True)  
  
  
df['-1day'] = df['value'].shift(1)  
df['-2day'] = df['value'].shift(2)  
df['-3day'] = df['value'].shift(3)  
  
df['-1period'] = df['value'].shift(1*12)  
df['-2period'] = df['value'].shift(2*12)  
  
display(df.head(60))  

3.时间序列复合特征

1)趋势特征

趋势特征可以刻画时间序列的变化趋势。

例子:每个用户每天对某个Item行为次数的时间序列中,User一天对Item的行为次数/User三天对Item的行为次数的均值,表示短期User对Item的热度趋势,大于1表示活跃逐渐在提高;三天User对Item的行为次数的均值/七天User对Item的行为次数的均值表示中期User对Item的活跃度的变化情况;七天User对Item的行为次数的均值/ 两周User对Item的行为次数的均值表示“长期”(相对)User对Item的活跃度的变化情况。

程序实现:

import pandas as pd  
# 加载洗发水销售数据集  
df = pd.read_csv('shampoo-sales.csv')  
df.dropna(inplace=True)  
df.rename(columns={'Sales of shampoo over a three year period': 'value'}, inplace=True)  
  
df['last 3 day mean'] = (df['value'].shift(1) + df['value'].shift(2) + df['value'].shift(3))/3  
df['最近3天趋势'] = df['value'].shift(1)/df['last 3 day mean']  
display(df.head(60))  

2)窗口差异值特征

一个窗口到下一个窗口的差异。例子:商店销售量时间序列中,昨天的销售量与前天销售量的差值。

程序实现:

import pandas as pd  
# 加载洗发水销售数据集  
df = pd.read_csv('shampoo-sales.csv')  
df.dropna(inplace=True)  
df.rename(columns={'Sales of shampoo over a three year period': 'value'}, inplace=True)  
  
df['最近两月销量差异值'] = df['value'].shift(1) - df['value'].shift(2)  
display(df.head(60))  

3)自相关性特征

原时间序列与自身左移一个时间空格(没有重叠的部分被移除)的时间序列相关联。

程序实现:

import statsmodels.tsa.api as smt  
import pandas as pd  
# 加载洗发水销售数据集  
df = pd.read_csv('shampoo-sales.csv')  
df.dropna(inplace=True)  
df.rename(columns={'Sales of shampoo over a three year period': 'value'}, inplace=True)  
  
print('滞后数为1的自相关系数:{}'.format(df['value'].autocorr(1)))  
print('滞后数为2的自相关系数:{}'.format(df['value'].autocorr(2)))  
# 输出:  
滞后数为1的自相关系数:0.7194822398024308  
滞后数为2的自相关系数:0.8507433352850972  

除了上面描述的特征外,时间序列还有历史波动率、瞬间波动率、隐含波动率、偏度、峰度、瞬时相关性等特征。

总结

1.时间特征主要有两大类:

1)从时间变量提取出来的特征

  • 如果每条数据为一条训练样本,时间变量提取出来的特征可以直接作为训练样本的特征使用。

例子:用户注册时间变量。对于每个用户来说只有一条记录,提取出来的特征可以直接作为训练样本的特征使用,不需要进行二次加工。

  • 如果每条数据不是一条训练样本,时间变量提取出来的特征需要进行二次加工(聚合操作)才能作为训练样本的特征使用。

例子:用户交易流水数据中的交易时间。由于每个用户的交易流水数量不一样,从而导致交易时间提取出来的特征的数据不一致,所以这些特征不能直接作为训练样本的特征来使用。我们需要进一步进行聚合操作才能使用,如先从交易时间提取出交易小时数,然后再统计每个用户在每个小时(1-24小时)的交易次数来作为最终输出的特征。

2)对时间变量进行条件过滤,然后再对其他变量进行聚合操作所产生的特征

主要是针对类似交易流水这样的数据,从用户角度进行建模时,每个用户都有不定数量的数据,因此需要对数据进行聚合操作来为每个用户构造训练特征。而包含时间的数据,可以先使用时间进行条件过滤,过滤后再构造聚合特征。

2. 时间序列数据可以从带有时间的流水数据统计得到,实际应用中可以分别从带有时间的流水数据以及时间序列数据中构造特征,这些特征可以同时作为模型输入特征。

例如:美团的商家销售量预测中,每个商家的交易流水经过加工后可以得到每个商家每天的销售量,这个就是时间序列数据。

参考文献

  • [1] https://machinelearning-notes.readthedocs.io/zh_CN/latest/feature/%E7%89%B9%E5%BE%81%E5%B7%A5%E7%A8%8B%E2%80%94%E2%80%94%E6%97%B6%E9%97%B4.html
  • [2] https://www.cnblogs.com/nxf-rabbit75/p/11141944.html#_nav_12 \
  • [3] https://gplearn.readthedocs.io/en/stable/examples.html#symbolic-classifier
  • [4] 利用 gplearn 进行特征工程. https://bigquant.com/community/t/topic/120709
  • [5] Practical Lessons from Predicting Clicks on Ads at Facebook. https://pdfs.semanticscholar.org/daf9/ed5dc6c6bad5367d7fd8561527da30e9b8dd.pdf
  • [6] Feature Tools:可自动构造机器学习特征的Python库. https://www.jiqizhixin.com/articles/2018-06-21-2
  • [7] 各种聚类算法的系统介绍和比较. https://blog.csdn.net/abc200941410128/article/details/78541273

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

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

相关文章

vue3 antd项目实战——Form表单使用【v-model双向绑定数据,form表单嵌套input输入框、Radio单选框】

vue3 ant design vue项目实战——单选框&#xff08;Radio&#xff09;的使用以及Form表单的双向绑定知识调用&#xff08;form表单的源代码附在文章最后&#xff09;场景复现实现需求form表单整体架构的搭建input输入框文本域的嵌套单选组合Radio的嵌套button按钮组合的嵌套fo…

小米手机不为人知的秘密—后台静默安装任何应用

导读你是否拥有一台小米&#xff0c;HTC&#xff0c;三星或者是一加的 Android 手机呢&#xff1f;如果回答是肯定的&#xff0c;那么你应该意识到&#xff0c;几乎所有的智能手机厂商提供的定制 ROM&#xff0c;如 CyanogenMod、Paranoid Android、 MIUI 或者一些其它的 ROM 都…

再谈指针(12)

目录 1、字符指针 2、指针数组 3、数组指针 1、定义 2、&数组名VS数组名 3、数组指针的使用 1、二维数组的数组名 4、数组参数、指针参数 1、一维数组传参 2、二维数组传参 3、一级指针传参 4、二级指针传参 5、函数指针 6、函数指针数组 7、指向函数指针数…

SpringCloud之Sleuth全链路日志跟踪

文章目录1 Sleuth链路跟踪1.1 分布式系统面临的问题1.2 Sleuth是什么1.3 Zipkin是什么1.4 链路监控相关术语1.5 实战练习1.5.1 pom.xml1.5.2 添加yml配置1.5.3 添加控制器1.5.4 测试访问1.6 Zipkin1.6.1 下载与启动1.6.2 搭建链路监控步骤1.6.2.1 搭建8990提供者1.6.2.2 搭建89…

08 `.o`中的汇编信息 hopper disassembler 调试 HelloWorld

前言 上周[2020.05.23]想要 直接使用 fastdebug 版本的 jdk 来进行调试, 可惜失败了 原来是 缺少 可执行文件关联的, object file, 里面记录了 关联的源码的一些信息 看来还是 免不了, 需要 手动 编译 open jdk, 哎 本文主要是两个东西 : 1. 查看 object file 中的汇编信…

CSS权威指南(一)CSS概述

文章目录1.元素2.引入样式表3.样式表4.媒体查询5.特性查询1.元素 &#xff08;1&#xff09;置换元素和非置换元素 置换元素&#xff0c;指用来置换元素内容的部分不由文档内容直接表示。比如img标签。非置换元素&#xff0c;元素的内容是由用户代理在元素自身生成的框中显示…

这样的C盘或许还有?救救C盘......

C盘红了&#xff01;&#xff01;&#xff01; 大部分软件默认缓存在C盘&#xff08;有的甚至只能安装到C盘&#xff09; C盘太满电脑运行会很卡顿 对于这种情况&#xff0c;为了节约C盘空间&#xff0c;我们可以将这些被迫存在C盘的文件挪到其他盘 但是有的应用无法更改默…

C++ 显示图片

编译环境为codeblocks 20.03&#xff0c;编译器为mingw64非自带的版本&#xff08;版本号多少忘记了&#xff09; 头文件 #include <graphics.h>//图形库 #include <conio.h>//_getch() 显示图片代码 int main() {initgraph(640,360,EX_SHOWCONSOLE);//初始化绘…

我亲身经历的2022年软件质量工作——测试工作的经验总结及一些建议

2022年对于大部分人来说都是辛苦的一年。对于整个社会&#xff0c;疫情反反复复&#xff0c;折磨的每一个人都心力交瘁。 经济下滑&#xff0c;失业率上升似乎听到的都是不好的消息。对于整个互联网行业也频频传出大厂裁员的消息。 而质量团队在大厂的裁员计划里也是首当其冲。…

4)Django模型,表单,视图,路由

目录 一 Django模型 Django ORM 数据库配置 Django 如何使用 mysql 数据库 实例 定义模型 创建 APP 数据库操作 添加数据 获取数据 更新数据 删除数据 二 Django 表单 HTTP 请求 GET 方法 POST 方法 Request 对象 QueryDict对象 三 Django视图 视图层 请求…

Vault的程序侧接入方式-AppRole

前言&#xff1a; 程序侧的接入对于Vault来说也是一种Accessor的接入&#xff0c;而AppRole绝对不是Vault首推的程序侧接入方式&#xff0c;但它是最方便的接入方式。 AppRole的本质是由Vault为程序单独引入一套由Vault托管的鉴权方式&#xff0c;对于安全平台来说没引入一套…

videojs-flvjs:video.js + flv.js播放m3u8和flv视频

videojs-flvjs是video.js的扩展&#xff0c;让video.js支持flv.js播放器&#xff0c;可以在video.js的techOrder里配置flvjs播放器。 下面做了一个切换m3u8和flv直播流的简易工具&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta ch…

线程安全(万字详解)

目录 线程安全 概念 用一段代码感受线程安全 线程安全问题的原因 修改上述代码,使其线程安全 synchronized synchronized使用方法 锁对象的规则 synchronized用法,代码展示 monitor lock sychronized的特性 java标准库中的线程安全类 死锁 死锁的常见原因 多个…

LVGL学习笔记9 - 标签Label

目录 1. 显示字符串 1.1 lv_label_set_text 1.2 lv_label_set_text_fmt 1.3 lv_label_set_text_static 2. 设置长字符串模式 3. 改变颜色 3.1 改变背景颜色和对比度 3.2 设置字符串颜色 3.2.1 设置Style的字符串颜色 3.2.2 设置对象的字符串颜色 3.2.3 局部改色 显示…

钧瓷产业将占禹州GDP50%以上,产生千亿市值钧瓷生态型科技公司

这里的上市指沪深的主板&#xff0c;创业板和科创板&#xff0c;区域的挂牌不算。 这个数据是根据禹州钧瓷产业2022年实际税收&#xff0c;综合钧瓷产业报税幅度&#xff0c;钧瓷数据开放平台&#xff0c;钧瓷产业决策内参&#xff0c;钧瓷产业化&#xff0c; 数字化后的预期增…

【CUDA入门笔记】GPU存储结构模型(1)

GPU存储结构模型 1.CPU可以读写GPU设备中的Global Memory、Constant Memory以及Texture Memory内存储的内容&#xff1b;主机代码可以把数据传输到设备上&#xff0c;也可以从设备中读取数据&#xff1b; 2.GPU中的线程使用Register、Shared Memory、Local Memory、Global Mem…

信息时代,企业如何安全管理数据

随着企业信息化的发展&#xff0c;企业所产生的数据量也越来越多&#xff0c;企业数据的存储安全和传输安全管理工作则成为企业数据管理者的重中之重。但是对数据的保护要依靠一定的基础设施&#xff0c;目前&#xff0c;世界各国对数据保护的基础设施建设还是不够完善&#xf…

VSCode搭建ruby开发调试环境

安装rvm rvm是ruby版本管理工具&#xff0c;可以管理本地的ruby的版本 curl -sSL https://get.rvm.io | bash -s stable安装ruby 使用 rvm list known获取已知的ruby版本&#xff0c;这里安装3.0.0版本的ruby rvm install 3.0.0新建ruby文件 在VSCode中新建ruby文件main.r…

【强训】Day1

努力经营当下&#xff0c;直至未来明朗&#xff01; 文章目录一、选择二、编程1. 组队竞赛2. 删除公共字符答案1. 选择2. 编程普通小孩也要热爱生活&#xff01; 一、选择 下列选项中属于面向对象编程主要特征的是&#xff08;&#xff09; A 继承 B 自顶向下 C 模块化 D 逐步…

【BP靶场portswigger-服务端4】操作系统命令注入-5个实验(全)

目录 一、操作系统命令注入 1、意义 2、有用的命令 3、注入操作系统命令的方式 4、防止操作系统命令注入攻击 二、执行任意命令 1、示例&#xff1a; 实验1&#xff1a;操作系统命令注入&#xff08;简单&#xff09; 三、盲操作系统命令注入漏洞 1、简述 2、示例 3…