尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Educator头歌答案分享:数据预处理与特征工程在线实验闯关

Educator头歌答案分享:数据预处理与特征工程在线实验闯关
📅 发布时间:2026/7/6 4:20:11

第1关:数据关联与分组计算

任务描述

读取’表5-3.xlsx'数据集,其中表格字段信息具体如下: 单品编码、单品名称、分类编码、分类名称 读取'表5-4.xlsx'数据集,其中表格字段信息具体如下: 销售日期、扫码销售时间、单品编码、销量(千克)、销售单价(元/千克)、销售类型、是否打折销售 任务如下: (1)表5-3和表5-4,以单品编码作为关联字段,进行内连接,合并为一个完整数据表。 (2)在此基础上,计算6个蔬菜品类每天的销售量和销售额。

相关知识

为了完成本关任务,你需要掌握:1.数据框关联,2.分组统计。

编程要求

根据提示,在右侧编辑器补充代码,计算并输出数组的平均值和最大值。

def return_values(): import pandas as pd A=pd.read_excel('表5-3.xlsx') B=pd.read_excel('表5-4.xlsx') ''' A和B读取的表5-3、表5-4数据框,以单品编码作为关联字段,进行内连接, 合并为一个完整数据表,记为C ''' C=pd.merge(A, B, on='单品编码', how='inner') ''' 计算销售额:销量(千克)*销售单价(元/千克),在C中增加一个字段“销售额” ''' C['销售额']=C['销量(千克)'] * C['销售单价(元/千克)'] ''' 用groupby分组统计函数,计算计算6个蔬菜品类每天的销售量res_Volume和销售额res_Amount ''' res_Volume=C.groupby(['销售日期', '分类名称'])['销量(千克)'].sum() res_Amount=C.groupby(['销售日期', '分类名称'])['销售额'].sum() return(C,res_Volume,res_Amount)

第2关:数据映射、离散化、去重、样本均衡与特征选择

任务描述

读取’data.xlsx'数据集,其中表格字段信息具体如下: 自变量28个,分别用x1-x27表示,其中x1为日期序号;x3、x4、x10、x11为状态变量,只取两个值:0或1; 剩余的自变量均为连续型取值变量。 因变量1个,用y表示,取值为0或4001 任务如下: (1)对累计变量做离散化处理,离散区间为 [-1,0,当日最大值0.25,当日最大值0.5,当日最大值*0.75,当日最大值]。 同时对每个离散区间依次用0、1、2、3、4来表示。如果整个变量只取一个值,则不用做离散化。 (2)对故障标签值进行映射操作,即0→0,4001→1。 (3)经过前面的两步,数据集中会有不少重复记录,删掉重复的记录。 (4)经过前面三步得到的数据集,我们作为训练集。训练集中故障标签为1的记录,应该是少数的(故障类), 而为0的记录是占大多数的,存在类样本不均衡的问题,需要对样本进行均衡处理。 (5)在第(4)步的基础上,作特征选择(特征重要度方法),并对比梯度提升决策树、逻辑回归和支持向量机回归模型的分类效果。

相关知识

为了完成本关任务,你需要掌握:映射、离散化、去重、样本均衡与特征选择。

def return_values(): import pandas as pd import numpy as np ''' 1.读取数据 ''' A=pd.read_excel('data.xlsx') ''' 2.因变量映射处理,并覆盖原来的因变量 ''' A['y']=A['y'].map({0: 0, 4001: 1}) ''' 3.累计变量离散化处理,先定义一个函数,然后调用函数依次对每个变量进行处理,覆盖原来的变量 ''' def num_cut(A,field): if sum(A[field].values)!=0: r=pd.cut(A[field], bins=[-1, 0, A[field].max()*0.25, A[field].max()*0.5, A[field].max()*0.75, A[field].max()], labels=[0, 1, 2, 3, 4]) #请填写完整 else: r=A[field].values return r A['x2']=num_cut(A,'x2') A['x5']=num_cut(A,'x5') A['x6']=num_cut(A,'x6') A['x7']=num_cut(A,'x7') A['x8']=num_cut(A,'x8') A['x9']=num_cut(A,'x9') A['x12']=num_cut(A,'x12') A['x13']=num_cut(A,'x13') A['x14']=num_cut(A,'x14') A['x15']=num_cut(A,'x15') A['x16']=num_cut(A,'x16') A['x17']=num_cut(A,'x17') A['x18']=num_cut(A,'x18') A['x19']=num_cut(A,'x19') A['x20']=num_cut(A,'x20') A['x21']=num_cut(A,'x21') A['x22']=num_cut(A,'x22') A['x23']=num_cut(A,'x23') A['x24']=num_cut(A,'x24') A['x25']=num_cut(A,'x25') A['x26']=num_cut(A,'x26') A['x27']=num_cut(A,'x27') A=A.drop_duplicates() ''' 4.物理方法进行均衡处理,就是直接对类别少的类数据,重复复制,也可以通过其他方法进行处理 ''' A_1=A.iloc[A.iloc[:,-1].values==1,:] n=int(len(A_1)) for i in range(n): A_1=pd.concat([A_1, A_1], axis = 0) A_0=A.iloc[A.iloc[:,-1].values==0,:] A=pd.concat([A_1, A_0], axis = 0) ''' 5.因变量和自变量定义 ''' Y=A.iloc[:,-1] X=A.iloc[:,1:-1] ''' 6.训练集和测试集的划分 ''' from sklearn.model_selection import train_test_split x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.2, random_state=4) ''' 7.特征重要度方法识别重要特征,可以尝试其他方法,获取重要特征 ''' from sklearn.ensemble import GradientBoostingClassifier # 新版本方法 model = GradientBoostingClassifier(random_state=0) # 建立梯度增强分类模型对象 model.fit(x_train,y_train) rv=model.score(x_train,y_train) y_pre=model.predict(x_test) te=y_test.values-y_pre r=len(te[te==0])/len(te) res=pd.DataFrame({'y_test':y_test.values,'y_pre':y_pre}) f=model.feature_importances_ f=np.round(f,2) ''' 8.获取重要特征列index序号,所谓重要特征是指重要度大于0的特征 ''' importance_index=[i for i in range(len(f)) if f[i] > 0] ''' 9.基于重要特征进行模型检验 ''' model.fit(x_train.iloc[:,importance_index],y_train) rv1=model.score(x_train.iloc[:,importance_index],y_train) y_pre=model.predict(x_test.iloc[:,importance_index]) te=y_test.values-y_pre r1=len(te[te==0])/len(te) from sklearn.linear_model import LogisticRegression as LR lr = LR() #创建逻辑回归模型类 lr.fit(x_train.iloc[:,importance_index],y_train) #训练数据 rv2=lr.score(x_train.iloc[:,importance_index],y_train) y_pre=lr.predict(x_test.iloc[:,importance_index]) te=y_test.values-y_pre r2=len(te[te==0])/len(te) from sklearn import svm clf = svm.SVC(kernel='rbf') clf.fit(x_train.iloc[:,importance_index],y_train) rv3=clf.score(x_train.iloc[:,importance_index],y_train) y_pre=clf.predict(x_test.iloc[:,importance_index]) te=y_test.values-y_pre r3=len(te[te==0])/len(te) ''' 评估指标:特征选择后,梯度提升决策树、逻辑回归和支持向量机回归模型的模型准确率和测试准确率 ''' return(rv1,r1,rv2,r2,rv3,r3)

相关新闻

  • Java面试突击指南!1个月拿下Java高级开发岗!AI大模型简历必备/面试必备!
  • Jetson Nano Super + Ubuntu 22.04 + ROS2 Humble:MID-360、FAST-LIO 与 EGO-Planner 实时建图部署记录
  • HarmonyOS 小游戏《对战五子棋》开发第3篇-项目配置文件全解析

最新新闻

  • MNIST 与 Fashion-MNIST 数据集对比:2 种经典基准在 3 类模型上的泛化性分析
  • LinkSwift:打破网盘下载速度限制的智能解决方案
  • 动态量化技术:运行时自适应精度调整与 Mixed-Precision 推理
  • 终极指南:使用C++语音合成推理库为二次元角色赋予声音
  • 5分钟掌握OpenVINO AI音频处理:在Audacity中实现专业级音频分离
  • 127、DyHead 的 Block 数量消融:1/2/3/4/6 个 DyHead Block 的精度-延迟曲线

日新闻

  • AI智能体安全防护框架AgentGuard:从原理到实战部署指南
  • KMX63与PIC18F26K40硬件组合及低功耗设计实践
  • 基于YOLO13改进的门体检测模型:C3k2模块与PoolingFormer技术解析

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号