2020年上海市高等学校信息技术水平考试试卷_三级_数据科学技术及应用_模拟卷_四、操作题_答案
(本试卷考试时间 150 分钟)
答案是自己做的,经验证,可成功运行。
内容仅供学习交流,不可转载。
四、操作题
(一)、简答题(共2题,每题5分,共10分)
提示:打开C:\KS\Answer.doc文件,将简答题答案写在该文件的相应题目下并保存。
1.请描述所学专业或日常生活中某个具体场景所涉及的数据,给出各项数据名称,说明以及数据的类型(连续数值/可选项/文本/图像/视频/声音/时序)等。
2.试简述分类方法和聚类方法的区别,请根据实际案例所涉及的数据以及分析目标进行说明。
答案: 略
(二)、综合应用题(共1题,34分)
提示:打开"C:\KS"文件下的程序文件"prog.py",按照程序注释说明,编写代码实现功能要求。
台风记录数据集(winds.csv)记录了2014年某区域发生的台风信息,包括台风名、台风等级、气压(百帕)、移动速度(公里/时)、纬度、经度、记录数、顺序、风速(米/秒)等9个属性(具体说明见“数据集说明”文件)。试分析与台风等级相关的特征,并建立等级判别模型。
具体要求如下:
1)从文件中读出台风数据(3分);
2)数据集中表示台风等级level有六个等级为:热带低压、热带风暴、强热带风暴、台风、强台风、超强台风。将台风等级字符串依次替换为数字1-6(4分);
3)计算台风的各个特征与台风等级的相关性,筛选出相关性较高(相关系数>0.6)的特征建立数据集(5分);
4)绘制图形展示筛选出的特征与台风等级的相关性(4分);
5)按照合适比例将分析数据分为训练集和测试集(3分);
6)在训练集上建立分类模型,至少选用两种分类算法建立模型(7分);
7)在测试集上测试分类模型的性能(3分);
8)根据第7)步的运行结果,说明分类模型在台风等级判别上的性能,请描述在程序文件给出的注释行中(5分)。
答案:
#请在注释后填写相应代码,注释勿删除
#1)从文件中读出台风数据(3分);
import pandas,numpy
from pandas import DataFrame
from matplotlib import pyplot as plt
from sklearn import model_selection,tree,metrics,svm
filename='winds.csv'
df=pandas.read_csv(filename,index_col=7,header=0,encoding='gbk')
#2)数据集中表示台风等级level有六个等级为:热带低压、热带风暴、强热带风暴、台风、强台风、超强台风。将台风等级字符串依次替换为数字1-6(4分);
level_list=['热带低压','热带风暴','强热带风暴','台风','强台风','超强台风']
level_num=1
for i in level_list:
df.loc[df['level']==i,'level']=level_num
level_num+=1
df['level']=df['level'].astype(int)
#3)计算台风的各个特征与台风等级的相关性,筛选出相关性较高(相关系数>0.6)的特征建立数据集(5分);
headers=df.columns.tolist()
corr=df.corr()
corr=corr[corr>0.6]
corr=corr[corr!=1.0]
corr=corr[corr.isnull().all()==False].copy()
index_3=corr.index.tolist()
df_3=df[index_3]
#4)绘制图形展示筛选出的特征与台风等级的相关性(4分);
pandas.plotting.scatter_matrix(df_3,diagonal='kde')
plt.show()
#5)按照合适比例将分析数据分为训练集和测试集(3分);
df_3.dropna(inplace = True)
x=df_3[index_3[0]].values.astype(float).reshape(-1, 1)
y=df_3[index_3[1]].values.astype(int)
x_train, x_test, y_train, y_test = model_selection.train_test_split(x,y,test_size=0.3,random_state=1)
#6)在训练集上建立分类模型,至少选用两种分类算法建立模型(7分);
clf_train = tree.DecisionTreeClassifier()
clf_train.fit(x_train,y_train)
svc = svm.SVC(kernel='rbf', gamma=0.6, C = 1.0)
svc.fit(x_train,y_train)
#7)在测试集上测试分类模型的性能(3分);
print(clf_train.score(x_test,y_test))
print(svc.score(x_test,y_test))
#8)根据第7)步的运行结果,说明分类模型在台风等级判别上的性能,请描述在程序文件给出的注释行中(5分)。
#决策树模型和向量机模型的准确率均为0.47368421052631576,效果较差。
答题过程中可能存在的问题:
1.第一题中,由于文件编码的问题,如果不添加ecoding='gbk’会报错,但是该段代码在"Python科学计算库函数快速索引表.xlsx"中没有,需要自己注意并解决。
2.第二题中,替换后需要.astype(int),不然不会参与后续计算。
3.第三题中,“相关性较高(相关系数>0.6)”题设不明确,需要确定是否为正/负相关性较高,即是否需要计算绝对值。若仅计算正相关,则计算结果为:‘windspeed’(本答案采用该做法)。
4.第四题及后续答题中,'windspeed’列数据有缺失。通过“三、程序填空题”的第四题可以看出,前期的数据处理在此处没有重复出现,因此需要添加一个删除存在缺失项的行的语句。
5.第五题中,由于x只有一列,因此需要在最后添加reshape(-1, 1)方法。
6.第八题,测试性能不佳。