版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
人工智能+金融应用【职业能力测评】一、选择题1.机器学习按照学习方式可分为哪几类?(ABCD)(多选)A.有监督学习B.半监督学习C.无监督学习D.强化学习2.线性回归和逻辑回归之间的主要区别是(ABC)。(多选)A.线性回归用于预测连续值,而逻辑回归用于预测二分类标签。
B.线性回归的输出范围是(-∞,+∞),而逻辑回归的输出范围是(0,1)。
C.线性回归通常使用均方误差(MSE)作为损失函数,而逻辑回归使用交叉熵损失函数。
D.线性回归可以处理多分类问题,而逻辑回归只能处理二分类问题。3.线性回归是一种(B)。A.分类算法B.回归算法C.聚类算法D.优化算法4.逻辑回归是一种(A)。A.分类算法B.回归算法C.聚类算法D.优化算法5.准确率是最常用的分类性能指标,其计算公式为(D)。Accuracy=TP/((TP+FP)Accuracy=TP/(TP+FN)Accuracy=1/Precisin+1/RecallAccuracy=(TP+TN)/(TP+FN+FP+TN)二、实训操作题【Python程序开发-技能竞赛真题】配套教学资源中的day.csv文件中包含了多个城市2011年1月1日至2022年4月30日的天气数据。原始数据中存在脏数据,不能直接用于后续数据分析,现需要对该表数据进行清洗操作,并将清洗之后的数据进行保存。参考代码:importnumpyasnp
importpandasaspd
importdatetimeasdt
defdeal_tem_col(df,tem_col):
"""将温度处理成浮点型,传入df和要处理的列名"""
#将温度后面的C去掉
df[tem_col]=df[tem_col].apply(lambdax:x[:-1]ifxisnotnp.nanelsex)
#将空串替换为np.nan
df[tem_col]=df[tem_col].replace('',np.nan)
#将除空值以外的数据变为浮点型,方便计算
df[tem_col]=df[tem_col].apply(lambdax:float(x)ifxisnotnp.nanelsex)
defgen_full_df(origin_df,all_date,left_on,right_on,sorted_field,drop_col=None):
"""
定义函数生成日期完整的DataFrame
origin_df:原始数据
all_date:完整的日期
left_on:左连接字段
right_on:右连接字段
sort_field:排序字段
drop_col:要删除的字段
"""
new_list=[]#获取城市
citys=pd.unique(origin_df['city'])
forcityincitys:
#筛选城市的DataFrame
city_df=origin_df.loc[origin_df['city']==city]
#将城市的DataFrame和日期合并
merge_df=pd.merge(city_df,all_date,left_on=left_on,right_on=right_on,how='right')
#合并后,有些数据城市为nan,修改城市列
merge_df['city']=city
#将表中的date_week删掉
ifdrop_col:
merge_df=merge_df.drop(labels=drop_col,axis=1)
#按日期降序排序
merge_df=merge_df.sort_values(by=sorted_field,ascending=False,ignore_index=True)
new_list.append(merge_df)
full_df=pd.concat(new_list)
returnfull_df
defget_wind_direction_and_level(winds):
"""
传入原有风力,得到风向和风力等级
winds:原有的风力列
"""
#定义风向和风力列表
wind_directions,wind_levels=[],[]
#遍历风力
forwindinwinds:
try:
wind_split=wind.split()
#如果切分长度等于2
iflen(wind_split)==2:
#前面代表风向
wind_directions.append(wind_split[0])
#后面代表风力等级
wind_levels.append(wind_split[1])
else:
wind_directions.append(np.nan)
wind_levels.append(np.nan)
exceptException:
wind_directions.append(np.nan)
wind_levels.append(np.nan)
returnwind_directions,wind_levels
defget_mode(x):
"""求众数,求不到返回nan"""
try:
returnx.mode().values[0]
exceptException:
returnnp.nan
deffill_null_value(wait_fill_df,to_fill_df,col_name,idx1,idx2):
"""
wait_fill_df:待填充的DataFrame
to_fill_df:填充的DataFrame
col_name:需要填充列名
idx1:从填充DataFrame中去查询数据的字段索引
idx2:从填充DataFrame中去查询数据的字段索引
"""
#按列筛选出该列存在缺失值的数据
col_value=wait_fill_df.loc[wait_fill_df[col_name].isnull()]
#空值列表
null_list=[]
forrowincol_value.values:#计算应该填充的值
null_v=to_fill_df.loc[(row[idx1],row[idx2]),col_name]
null_list.append(null_v)
#将计算出来的值赋值到原来为nan的地方
wait_fill_df.loc[wait_fill_df[col_name].isnull(),col_name]=null_list
print("%s填充成功"%col_name)
#处理每日天气数据
defdeal_day_data():
#1.1获取2011年1月1日至2022年4月30日的所有天数
days=pd.date_range(start='2011-01-01',end='2022-04-30',freq='D').to_frame(name='date').astype({'date':'str'})
print("天数:%s"%len(days))
#1.2读取每日数据,根据数据实际存放路径修改
day_df=pd.read_csv('../data/day.csv')
print(day_())
print(day_df.describe())
print("#"*30)
#将id设置为行索引
day_df=day_df.set_index('id')
#1.3处理date_week
day_df['date_week']=day_df['date_week'].apply(lambdax:x[:10])
#1.4处理最高温和最低温
#查看以下最高温中各类数据的频数,除了空值之外,基本就是数字+C这种形式
vc=day_df['hightest_tem'].value_counts()
#print(vc)
deal_tem_col(day_df,'hightest_tem')
deal_tem_col(day_df,'lowest_tem')
#1.5去重,按照城市和日期去重
print("去重前:",len(day_df))#后续删除
day_df=day_df.drop_duplicates(subset=['city','date_week'])
print("去重之后数据条数:%s"%len(day_df))
#1.6生成日期完整的DataFrame
full_day_df=gen_full_df(day_df,days,left_on='date_week',right_on='date',sorted_field='date',
drop_col='date_week')
#1.7从风力中得到风向和风力等级
full_day_df['wind_direction']=get_wind_direction_and_level(full_day_df['wind'].values)[0]
full_day_df['wind_level']=get_wind_direction_and_level(full_day_df['wind'].values)[1]
#处理之后,将原来的风力删掉
full_day_df.drop(labels='wind',axis=1,inplace=True)
#1.8填充缺失值
#每天的缺失值需要按照其它年份相应月相应天的平均值来填充,比如2022年1月1日的数据缺失,我们需要用除该年之外的其它年份的1月1日数据填充
#首先需要生成一列,月日,用于分组
full_day_df['month_day']=full_day_df['date'].apply(lambdax:x[5:])
#按照城市和month_day分组,温度求平均值,weather、风向、风力等级求众数,这些值计算出来用于填充缺失值
month_day_group=full_day_df.groupby(by=['city','month_day']).agg({'hightest_tem':'mean','lowest_tem':'mean',
'weather':get_mode,
'wind_direction':get_mode,
'wind_level':get_mode})
#对刚才分组得到的df中的nan进行填充,以该列的平均值和众数来填充
month_day_group['hightest_tem']=month_day_group['hightest_tem'].fillna(month_day_group['hightest_tem'].mean())
month_day_group['lowest_tem']=month_day_group['lowest_tem'].fillna(month_day_group['lowest_tem'].mean())
month_day_group['weather']=month_day_group['weather'].fillna(month_day_group['weather'].mode()[0])
month_day_group['wind_direction']=month_day_group['wind_direction'].fillna(
month_day_group['wind_direction'].mode()[0])
month_day_group['wind_level']=month_day_group['wind_level'].fillna(month_day_group['wind_level'].mode()[0])
#print(month_day_group)
#为含有缺失值的列进行填充
fill_null_value(full_day_df,month_day_group,'hightest_tem',0,-1)
fill_null_value(full_day_df,month_day_group,'lowest_tem',0,-1)
fill_null_value(full_day_df,month_day_group,'weather',0,-1)
fill_null_value(full_day_df,month_day_group,'wind_direction',0,-1)
fill_null_value(full_day_df,month_day_group,'wind_level',0,-1)
#1.9这里处理一下,如果最高温比最低温还低,则将最高温改为最低温+5
diff=full_day_df['hightest_tem']-full_day_df['lowest_tem']
diff[diff<0]=5
full_day_df['hightest_tem']=full_day_df['lowest_tem']+diff
#1.10温度保留2位小数
full_day_df['hightest_tem']=full_day_df['hightest_tem'].apply(lambdax:round(x,2))
full_day_df['lowest_tem']=full_day_df['lowest_tem'].apply(lambdax:round(x,2))
#生成星期
weekday_dic={0:"星期一",1:'星期二',2:'星期三',3:'星期四',4:'星期五',5:'星期六',6:'星期天'}
full_day_df['weekday']=full_day_df['date'].apply(
lambdax:weekday_dic[dt.datetime.strptime(x,'%Y-%m-%d').weekday()])
#查看清洗后的info()、describe()
print(full_day_())
print("*"*30)
print(full_day_df.describe())
#1.11存储,根据数据实际需存放路径修改
full_day_df.to_csv('../data/cleaned_data/clean_day.csv',index=False,encoding='utf-8')
if__name__=='__main__':
deal_day_data()代码运行结果:天数:4138<class'pandas.core.frame.DataFrame'>RangeIndex:127666entries,0to127665Datacolumns(total7columns):#ColumnNon-NullCountDtype----------------------------0id127666non-nullint641city127666non-nullobject2date_week127666non-nullobject3hightest_tem127664non-nullobject4lowest_tem127663non-nullobject5weather127654non-nullobject6wind127665non-nullobjectdtypes:int64(1),object(6)memoryusage:6.8+MBNoneidcount127666.000000mean63835.487021std36855.085885min0.00000025%31918.25000050%63835.50000075%95751.750000max127670.000000##############################去重前:127666去重之后数据条数:123542hightest_tem填充成功lowest_tem填充成功weather填充成功wind_direction填充成功wind_level填充成功<class'pandas.core.frame.DataFrame'>Int64Index:124140entries,0to4137Datacolumns(total9col
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智能穿戴体温监测传感器校准技师(初级)考试试卷及答案
- 车工技师理论考试试卷及答案
- 产后康复课程培训师岗位招聘考试试卷及答案
- 区域影像云平台生态构建策略
- 梯子凳施工方案(3篇)
- 校园照明施工方案(3篇)
- 公共场所宾馆管理制度(3篇)
- 游戏活动策划方案论文(3篇)
- 区块链在医疗数据共享中的隐私保护合规实践
- 区块链在医疗数据共享中的访问控制优化
- 2026福建莆田市涵江区选聘区属一级国有企业高级管理人员2人笔试备考试题及答案解析
- 林业培训制度
- 农田水利工程施工组织设计范例
- 2026年官方标准版离婚协议书
- 平法图集培训
- 二十届中纪委五次全会知识测试题及答案解析
- 黑龙江大庆市2026届高三年级第二次教学质量检测化学(含答案)
- 统编版小学语文四年级下册9 短诗三首 (教学设计)
- 多联机空调维保方案
- 费斯汀格法则原文
- 商丘市梁园区农业农村局商丘市梁园区乡村振兴农村环境综合整治项目(双八镇)环境影响报告
评论
0/150
提交评论