2022小美赛C题

主要讲解团队对2022小美赛C题的讲解,包含讲解与代码,赛题data。全部为python代码,基本不会提供代码注释及逻辑。

该题主要为时间序列分类,团队尝试的方法如下:

  1. 决策树、随机森林、极限森林分类(DecisionTreeClassifier、 RandomForestClassifier、 ExtraTreesClassifier)在文章中将简写为DTC、RFC、ETC
  2. 带有时间序列的决策树分类(MultivariateClassifier、 TimeSeriesForest)在文章中TimeSeriesForestClassifier将简写为TSFC
  3. LSTM 团队采用 DeepConvLSTM在文章中将简写为DCLSTM
  4. NSGA2剪枝优化

讲解顺序:python库→数据预处理:3\sigma与滤波→数据处理与导入(不含前一步的处理)→决策树等分类→TSFC→DCLSTM→GA决策树剪枝优化。总体结论:极限森林在赛题数据分类效果最好。

文章思路:数据处理→决策树分类→DCLSTM→算法对比→NSGA2对极限森林过拟合优化。

代码有前后关联性,后面代码没有的函数请到前面找。代码非常庞大,请耐心观看。

1.python库

python库

2. 3\sigma and filter

Preprocess

3. 数据处理

其中:num为选择哪些传感器,n_class为选择哪些活动进行分类

Data process

4. 决策树等分类

说明:代码包含k-fold cross-validation,其中注释代码可用作别的用途,具体你要画什么图就用什么代码。

Classifier

5. TFSC

TFSC

6. DCLSTM

DCLSTM

7. NSGA-ii剪枝优化

NSGA2

Python 遗传算法库 Geatpy 深入

为了应对更加复杂的问题,不同的编码方式的问题,对此进行代码讲解,个人觉得这个遗传算法库做的很好,上手比较快,适用性很强,强烈推荐,用的很顺手。

示例说明:
a = [0~30连续数] * _num
b = [1 ~ num num个数排列排序] 即数列 1~num 不重复排列
c = [0~30离散数(整数)] * _num

Python 深入学习

生成器与迭代器

生成器进阶 - send

自定义错误类型

修饰器

常见修饰器

海象运算符:=(python>=3.8)

特殊的list deque

因为最近在写算法题,用的是C++,看了下python也有deque

拓扑算法库

collections库

下划线(_)的作用

遗传算法背包问题

排列编码

格雷编码(选择编码)

两个编码方式有差异,我个人认为排列编码会比较好一点,逻辑更加高一些。代码中为EGA模板(即带有精英选择机制的遗传算法),测试下来可能NSGA-ii模板会更优一些,可以在测试的时候选择你想要的算法及结果。data.xlsx

Python 多线程与多进程

python多线程因为GIL锁的原因可以说是假的,但是多进程是可以使用多核 cpu。

测试代码如下:

测试结果如下:

threading 多线程原图
multiprocessing 多进程原图

结果:我们可以看到 threading 多线程库只可以跑满一核 cpu,但是 multiprocessing 多进程库可以跑满 cpu

浙ICP备2021019730-1    浙公网安备 33010902002953号
Copyright © 2022 PanCake