# 数智深度学习组2023一轮考核题

时间：3月16日-4月3日

## 基础工具、基础库以及学习方向推荐

基础工具和基础库建议都装（时间不够就装一个），语言仅限Python。

**基础工具**

- Pycharm：很方便，很友好
- jupyter notebook  /  jupyter lab：在数据预处理等工作上十分方便
- Anaconda ：集成了数据科学需要的许多包

**基础库**

- numpy ：简单来说，用于算法的实现
- pandas：用于数据处理和数据分析
- matplotlib：用于数据的可视化（就是用来画图的）

**学习方向**

由于时间有限，这里给出大致的学习方向：python语法（学到类）->三大库（着重numpy）->算法的实现

## 主要考核内容

基本要求：不要用框架，不要调库，不能照抄开源代码（借鉴的地方要说明），算法要自己实现。

$$Score=必做题分数(满分40分)+选做题分数(满分20分)+论文/笔记的撰写及答辩的分数(满分30分)+打榜分数(满分10分)$$，

$$必做题分数=线性回归分数(最高15分)+回归分数(最高25分)$$，

$$选做题分数(满分20分，溢出不算)=聚类分数(最高10分)+决策树分数(最高15分)+爬虫分数(最高5分)+朴素贝叶斯分数(最高20分)$$

### 必做题

#### 线性回归

##### 实现方法

1. 正规方程法
2. 梯度下降法（比正规方程法难）

正则化的使用

数据集及网址：[2023数智深度学习组第一阶段考核 | Kaggle](https://www.kaggle.com/competitions/2023sznlpassessmenttasks/overview)

#### softmax回归

实现方法：梯度下降法

数据集及网址：http://www.kaggle.com/competitions/2023sznlpsoftmax

### 选做题

#### K-means聚类

数据集：`points.txt`

对以二维点构成的数据集进行k-means聚类，并可视化出如下图所示的聚类效果。

<img src="https://horacehhtbucket.oss-cn-guangzhou.aliyuncs.com/img/image-20210806195242984.png" alt="image-20210806195242984" style="zoom:50%;" />

#### 决策树

##### ID3或C4.5

要求：用ID3或C4.5算法对数据集进行训练，得到一个关于西瓜分类的分类器。

数据集：`melon.txt`

输出样例：`{'纹理': {'模糊': '否', '清晰': {'脐部': {'凹陷': '是', '平坦': '否', '稍凹': {'色泽': {'青绿': '是', '乌黑': {'触感': {'硬滑': '是', '软粘': '否'}}}}}}, '稍糊': {'触感': {'硬滑': '否', '软粘': '是'}}}}`

可视化样例（不作要求，可以调用其它工具）：

<img src="http://mari0.oss-cn-guangzhou.aliyuncs.com/img/image-20230314201516740.png" alt="image-20230314201516740" style="zoom: 50%;" />

##### CART（难）

数据集：自选

输出样例和可视化样例同ID3/C4.5。

#### 朴素贝叶斯

要求：用朴素贝叶斯算法实现一个关于垃圾短信的分类器。

数据集：`SMSSpamCollection.txt`，ham是正常短信，spam是垃圾短信。

#### 爬虫

地址样例：[无赖_词语_成语_百度汉语 (baidu.com)](https://hanyu.baidu.com/s?wd=无赖&cf=hot&ptype=zici)或[五光十色_词语_成语_百度汉语 (baidu.com)](https://hanyu.baidu.com/s?wd=五光十色&cf=jielong&ptype=idiom)

要求：爬取词语的基本释义及近反义词。

基础：任选20个词

<img src="http://mari0.oss-cn-guangzhou.aliyuncs.com/img/image-20230314221847754.png" alt="image-20230314221847754" style="zoom:50%;" />

进阶：任选一个四字词成语，在“成语接龙”项按其顺序逐个爬取成语的基本释义及近反义词。

![image-20230314222734762](http://mari0.oss-cn-guangzhou.aliyuncs.com/img/image-20230314222734762.png)

### 数据预处理

在将数据放入模型或算法前，需要根据数据的特征及任务要求对数据进行预处理。尝试采用以下几种数据预处理方法（有需要就用）：

- 归一化和标准化
- 独热编码
- 连续值离散化处理
- 缺失值的处理
- 异常值的检测和处理
- 分割数据集
- ...

### 模型评估

不同任务及模型都有其对应的评估指标，例如MSE，Accuracy，f1，recall......

对于实现的模型，找到相应的指标对其进行评估，在必要时可以进行**可视化**操作

## 论文、笔记的编写及答辩

​		在学习过程中要进行学习**笔记**的撰写，内容包括所学模型的原理、遇到的问题、解决问题的过程等。笔记可以用word或markdown编辑器编写。学习过程中所涉及到的数学公式可以用latex语法或mathtype编辑器进行输入。

​		撰写一份有关你所进行的工作的**论文**，越往学术论文的形式靠分数越高。

​		基于论文编写一份简洁的**ppt**用于考核答辩。

提交文档格式：

```python
your_name/
...data/
......train.csv
......test.csv
......submission.csv
......etc.
...code
...doc
etc.
```

