📚 Machine Learning
There are 4 ML homeworks.
第一次作业:数据处理基础练习
Upload Link:
英雄请明年再来
Exercise Requirements
1. 创建数组[0 1 2 3 4 5 6 7 8 9],并将该数组中的奇数全部都替换成-1。
2. 将数组 a = np.random.rand(3,5) 和b = np.random.rand(6,4) 叠加在一起,其中a在b的上面,并且在b的第2列(下标从0开始)新增一列,用0来填充。
3. 创建一个8行9列的随机数组,并取出该数组第1-5行(包括第5行)的第8列内大于的所有大于3的元素。
4. 创建一个8行9列的随机数组,按如下要求分别取出该数组中的元素:
- 取出第1行和第3行的数据
- 取出第1行到第3行的数据
- 取出前4列的数据
- 取出该数组的
(0, 0)、(1, 2)、(3, 5)位置上的元素值
5. 求数组data7 = np.random.randint(0, 20, size=(4, 5))中每行最小值与最大值相除的结果。
6. 完成下列关于Series的练习
- 用下表中数据创建Series对象(对象名为“score”,索引名为class)
- 查看1-5班的数据
- 查看哪个班级的平均成绩还没有录入
- 获取全年级的平均成绩(空值做0分处理)
- 由于参考答案有误,现在要给每位同学的成绩加上2分
- 找出平均成绩在90分以上的班级
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| class | 90 | 95 | 85 | 78 | NAN | 96 | 97 | NAN | 80 | 87 | 86 | 83 |
7. 完成下列关于DataFrame的练习
- 根据下表创建DataFrame对象(列表和字典各用一种实现)
- 对创建的DataFrame进行转置
- 由于体育老师生病,导致大家的体育成绩没有录入,请删除改列数据
- 学校发现遗漏了“科学”课的成绩,请为学生添加“科学”成绩。学生的成绩为
(97,87,78,76,84,88,91)
| 姓名 | 语文 | 数学 | 英语 | 体育 | |
|---|---|---|---|---|---|
| 1 | 张三 | 89 | 59 | 84 | 0 |
| 2 | 李四 | 78 | 83 | 97 | 0 |
| 3 | 王五 | 79 | 85 | 88 | 0 |
| 4 | 小明 | 89 | 92 | 83 | 0 |
| 5 | 小红 | 90 | 67 | 67 | 0 |
| 6 | 小刚 | 87 | 81 | 73 | 0 |
| 7 | 小亮 | 83 | 77 | 71 | 0 |
8. 用pandas读取lianjia.csv,完成下列操作
- 观察结构,调整列索引顺序(Region, Garden, Layout, Floor, ID, Year, Size, Elevator, Direction, Renovation, Price)
- 增加一列关于目前状况(状况:state,可以使用1代表售出,0代表未售出)
- 删除ID这一列无用的数据
- 查找楼层(floor)小于7的所有房屋
- 修改楼层小于7的房源的电梯状态,统一改成无电梯,反之就设为有电梯
第二次作业:数据可视化基础练习
Upload Link:
英雄请明年再来
Exercise Requirements
1. 折线图练习
- 读取长沙市某年5月份的气温数据(
changsha.csv),按照时间顺序绘制成折线图; - “highest”为当天最高气温,“lowest”为当天最低气温;
- 使用圆点表示数据点;
- x轴是是时间,y轴是温度,要求图中有具体刻度;
- x轴的标题是“时间(天)”,y轴的标题是“气温(摄氏度)”;
- 图标题是“长沙5月份气温走势”图。
2. 柱状图练习
- 读取三类学校(普通本科、中等职业教育、普通高中)2014-2018年间的招生数据(
enrollment.csv),绘制柱状图; - x轴是年份,y轴是当年的招生人数(万人);
- 按年份进行分组绘制,同一年份的放在一个组;
- 要求绘制图例,图例横向排列(提示:使用legend的ncol参数,具体用法自行查Matplotlib官网);
- 图标题是”2014-2018普通本科、中等职业教育、普通高中招生人数“
3. 直方图练习
- 读取
scores.csv,绘制直方图; - 读取csv文件之后生成DataFrame对象;
- 绘制其中历史成绩(“history”)的直方图;
- 标记x轴的坐标;
- 每个柱面上方显示处于该区间内成绩数量;
- 图标题是”x班历史成绩直方图“。
4. 散点图练习
- 分别读取4个城市的二手车数据(
bj.csv、sh.csv、gz.csv和sz.csv),将其归档到同一个DataFrame中; - 计算车辆的使用年份和保值率,并在DataFrame新增对应的字段存储数据;
- 使用年份=当前时间-购买时间;
- 保值率=二手车价格 / 新车价格;
- 绘制使用年份与保值率的散点图,观察并简单分析其分布特征;
- 绘制行驶距离与保值率的散点图,观察并简单分析其分布特征。
5. 饼图练习
- 将给定的数据绘制成饼图;
- 设置阴影效果;
- 将Chrome对应分块从饼图中分离出来,距离设为0.05;
- 设置显示分块占比信息,保留两位小数;
- 占比信息以白色文字显示,分块名以黑色文字显示;
- 将Edge和Safari的占比的字体大小设置为10,其余为12。
| Chrome | Internet Explorer | FireFox | Edge | Safari | 其他浏览器 |
|---|---|---|---|---|---|
| 0.6098 | 0.1218 | 0.1147 | 0.0415 | 0.0372 | 0.075 |
6. 箱线图练习
- 读取
scores.csv中的数据绘制成箱线图; - 同一张图上每个科成绩对应一个箱线;
- 观察所绘制的箱线图,简单分析一下。
7. 综合练习
- 读取
lianjia.csv,按照一下要求绘图; - 使用一个Figure绘制3张图;
- 绘制条形图,x轴数据为行政区(Region),y轴数据为各个区平均每平米的单价;
- 绘制箱线图,x轴数据为行政区(Region),y轴数据为每平米的单价;
- 绘制swarm图,x轴数据为行政区(Region),y轴数据为每平米的单价;
- 使用FacetGrid绘制尺寸与单元的关系图,需要区分是否有电梯。
第三次作业:关联规则挖掘
Upload Link:
英雄请明年再来
Exercise Requirements
1. 根据一份开源零售数据,编写Python代码求解。分别调用mlxtend的apriori模块(或efficient-apriori)实现Apriori算法,以及调用mlxtend的fp-growth模块(或pyfpgrowth)实现FP-Growth算法。
- 设定一组不同的最小支持度阈值(例如:0.01、0.05、0.1、0.2);
- 记录两种算法在不同阈值下的运行时间和峰值内存消耗(内存消耗选做);
- 绘制”支持度阈值-运行时间“的折线对比图;
- 深度分析报告,回答一下问题:
- 当最小支持度阈值极低时,哪个算法的性能下降更剧烈?为什么?
- 结合Apriori的”候选集生成“与FP-Growth的”FP-Tree“数据结构,从时间复杂度和空间复杂度的角度解释实验观察到的现象。
数据集:https://archive.ics.uci.edu/dataset/352/online+retail
2. 根据一份“城市交通记录”的开源数据,编写Python代码。
- 数据离散化与转换,关联规则算法无法直接处理连续值,要求将数值型或连续型特征进行离散化。
- 将时间离散为“早高峰、晚高峰、平峰”;
- 将空间离散为“商业区道路、住宅区道路、高架桥”。
- 设置合理的最小支持度和置信度,挖掘导致 “重度拥堵”的频繁项集。
- 业务洞察 (Business Insight):
- 挑选出 3 条具有极高现实指导意义的关联规则(例如:{雨天, 晚高峰, 高架桥} => {重度拥堵})。
- 假设你是城市交通管理部门的顾问,基于这 3 条规则,提出具体的交通疏导或预警系统优化建议。
数据集位置:https://www.nyc.gov/site/tlc/about/tlc-trip-record-data.page
第四次作业:基础分类算法一
Upload Link:
英雄请明年再来
Exercise Requirements
一、假设我们有一个简化的二维空间数据集,用于对地块类型进行分类。已知有5个样本点及其分类(A代表“建设用地”,B代表“林地”):
| ID | Location | Category |
|---|---|---|
| P1 | (1,1) | A |
| P2 | (2,2) | A |
| P3 | (0,2) | A |
| P4 | (4,4) | B |
| P5 | (5,3) | B |
现在有一个未知分类的新地块点 X: (3, 2)。
- 请使用欧式距离(保留两位小数),计算点X到所有已知样本点的距离。
- 当K=1时,点X被分类为什么类别?
- 当K=3时,点X被分类为什么类别?
- 简述在实际工程中,如果K值取值过小(例如K=1)或过大(例如接近样本总数),分别会导致模型出现什么问题?
二、下表是一个关于“是否适合开展户外测绘作业”的简化数据集:
| ID | 天气 | 风力 | 是否适合作业 |
|---|---|---|---|
| 1 | 晴朗 | 弱 | 适合 |
| 2 | 晴朗 | 强 | 不适合 |
| 3 | 阴天 | 弱 | 适合 |
| 4 | 雨天 | 弱 | 适合 |
| 5 | 雨天 | 强 | 不适合 |
- 请计算该数据集在未划分前,目标变量“是否适合作业”的系统信息熵H(Play)。(注:公式中对数底数取 2)
-
请分别计算以“天气状况”和“风力”作为划分特征时的条件熵H(Play Weather) 和H(Play Wind)。 - 根据计算结果,求出哪个特征的信息增益更大?在构建决策树的根节点时,应该选择哪个特征?