一、其它问题(数学等)
1、 贝叶斯公式的理解(回寝室看书呀)
分子:条件概率,不过是倒过来的
分母:全概率公式
2、极大似然估计
通俗理解来说,就是利用已知的样本结果信息,反推最具有可能(最大概率)导致这些样本结果出现的模型参数值!
换句话说,极大似然估计提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”。
二、C++语言
1、 虚函数和抽象类
虚函数:在某基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数,用法格式为:virtual 函数返回类型 函数名(参数表) {函数体};实现多态性,通过指向派生类的基类指针或引用,访问派生类中同名覆盖成员函数。
虚函数的定义与使用
抽象类:通常在编程语句中用 abstract 修饰的类是抽象类。抽象类是不完整的,它不能生成对象,它只能用作基类被继承。
4、 子类和父类
子类可以赋给父类,父类不能赋给子类。
三、数据结构
1、 排序算法:
C语言8大排序算法以及复杂度分析
八大排序以及其时间复杂度(侧重于实现)
8大排序算法的实现
- 冒泡排序
- 插入排序(直接插入,折半插入)
- 希尔排序(缩小增量排序)
- 堆排序
5. 归并排序:
思想:即先使每个子序列有序,再使子序列段间有序(将已有序的子序列合并,得到完全有序的序列)。若将两个有序表合并成一个有序表。
6. 快速排序:
1、 从当前子序列中挑出一个元素,称为 “基准”(pivot),
2、 重新排序子序列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。然后就会得到一个以该基准为分割线的两个子序列。
3、 递归地(recursive)对小于基准值元素的子序列和大于基准值元素的子序列排序。
递归的最底部情形,是数列的大小是零或一。
- 桶排序
- 选择排序/基数排序
2、 链表反转:
利用两个结点指针和一个头结点指针head(用来记录当前结点的位置),分别指向前一个结点、当前结点和下一个结点;每一次翻转前需要先保存当前节点的下一个结点,然后让当前结点的指针域指向前一个结点,最后更新另外两个结点指针。
3、 字符串匹配算法KMP:
用模式串(子串)求出next数组(当模式串中第j个字符发生不匹配时,应从next[j]处的字符开始于主串匹配);
4、 哈夫曼(huffman)树和哈夫曼编码:
1. 哈夫曼树的构造:每次从节点中选取权值最小的两个节点,把它们权值相加合并成一个新节点(树),然后继续这样下去,直到只有一个节点为止。
哈夫曼树的构造方法
2. 哈夫曼编码:把待编码的字母出现的频率作为权值,然后构建哈夫曼树,用最短的树表示出现频率最大的字符,这样的编码是总长最短的二进制前缀编码。
哈夫曼(huffman)树和哈夫曼编码
5、 最小生成树算法(prime和Kruskal):
6、 最短路计算法:
7、查找算法的分析及应用:
8、散列(hash)表:
四、操作系统
1、页面置换算法
2、内存分区分配
3、银行家算法(生产者消费者模式等)
五、项目介绍
1、文本分类算法课题
数据:
THUCNews新闻数据集
预训练词向量(腾讯和搜狗):预训练词嵌入相当于注入了更多的外部 信息,能够改善模型;也就是表示词的向量只不过提前训练了。
处理过程:
1、基于数据构建词典,借鉴TorchText的Vocab函数(Keras分词器Tokenizer;滤去低频词,如5)
2、对文本进行分词(结巴分词),去停用词,噪声移除(去标点符号)
3、把词转换为词典中的索引,同时用预训练词向量覆盖随机初始化的词/字嵌入矩阵
4、
训练集需要打乱,验证集和测试集不要求