【计划执行报告】Day2 04-01 机器学习预备知识|排序算法初探

Day2 04-01 ML预备知识|排序算法初探

这是我:计划执行的第2天
说说今天的问题吧:①早上8:20起的床(比计划晚了1h),8:40开始干的活(比计划推迟了40min),这直接导致后续的机器学习任务未完成;②今天把蓝桥杯竞赛训练的时间误打到了"主动式学习"中,不过没太大影响(毕竟记录时间只是个形式,但长期乱记也不行);由于过了零点,目标完成记录丢失了,这也是需要注意的,即给总结留足时间;③蓝桥杯模拟题回顾的题量过多,40min弄清一道题就好了(毕竟是自己没做出来的)④机器学习课讲的流型学习没跟上,因此大多时间用于逛京东和写评语去了(好在视频有录制)。。。
再说说今天进步的点:①专业课(材料科学基础与新能源材料)听课效率高,并实时做了笔记;②每一个工作时段没有明显的感到疲惫,并且计划留有的裕量弥补了一些不可避免的情况(如工作超时),说明饭后一段时间的休息以及裕量设置是有必要的(毕竟计划有时赶不上变化);

近期计划(03-31-04-12)

1.准备4月10日的机器学习最终报告——《畅想无监督学习》;查找文献与知识补充:《机器学习——算法视角》
2.完成专业课的作业;
3.备战蓝桥杯,为此:①每天40min左右的刷题;②知识补充:《程序员的面试笔记:C/C++、算法、数据结构篇》

今日计划表

04-01时间表Day2

实际时间分配

这是我第一次使用atimelogger来记录时间,因此不小心提前点了“报告”功能,使得16:00前的数据都缺失了,此后到22:30的记录如下图。

图1 时间分配

今日学习总结与反思

1.机器学习

1.1《机器学习——算法描述》第2章 预备知识 2.3-2.5

  • 知识梳理
    • 理解条件概率、联合概率、先验概率、后验概率、最大后验假设、贝叶斯最优分类和朴素贝叶斯分类的概念
    • 熟悉均值、方差、协方差、协方差矩阵马氏距离
    • 熟悉高斯分布,理解偏差-方差困境发生的原因,掌握并推导平方和误差函数的期望的分解形式 E=噪声^2 + 方差 + 偏差^2:
  • 复习指引
    1. 不用刻意复习,碰到哪个概念不懂就去查书或者其它资料
    2. 一定要推一推平方和误差函数的期望的展开

1.2 回看机器学习PCA课堂录屏(未看完)的收获

  • 理解了超平面的概念:超平面是什么?——理解超平面
  • 对PCA降维的个人理解:我觉得它与做笔记的过程类似,听课做笔记的过程其实就是课程中有用信息(知识点)的提取,把带有时间维度的“课程”降维成了无时间维度的“文本”,比如上网课,网课就是音视频,带有“图像”、“声音”与“时间”三个基本维度,记的笔记是只有“文字”这一维度,但实际上它是综合提取了特定时间下的图像与声音,把三个维度的信息浓缩而成,其实也就像是降维,学生通过所做的笔记又能迅速回想起上课的细节,这就类似把“文字”维度还原成了“图像”、“声音”与“时间”维,即“升维”过程,而这种升维后的信息往往要比原信息更为有效。

2.《程序员的面试笔记:C/C++、算法、数据结构篇》

第19章 排序

  • 知识梳理

    • 熟悉六大排序算法的排序机理:直接插入排序、冒泡排序、选择排序、希尔排序、快速排序、堆排序
      • 直接插入排序:O( n 2 n^2 ) O(1) 无序序列的元素不断插入到有序序列的排序
      • 冒泡排序:O( n 2 n^2 ) O(1) 不多bb
      • (简单)选择排序:O( n 2 n^2 ) O(1) 每趟排序中无需序列中最小/大的元素与无序序列第一个元素交换
      • 希尔排序:O( n l o g 2 n nlog_2n ) O(1) 插排plus–>每一趟排序按一定间隔来比较元素,且间隔逐趟递减(经验表示变为一半),直到间隔为1再排一轮后结束。总体减少了元素的移动
      • 快速排序:O( n l o g 2 n nlog_2n ) O( l o g 2 n log_2n ) 最坏情况:O( n 2 n^2 ) 按一定方法选取基准元素,若从小到大排,则把比它小的元素放在其前面,大的放在后面,因而前后有两个子序列,然后再分别对两个子序列重复一样的操作(递归)
      • 堆排序:O( n l o g 2 n nlog_2n ) O(1) a.将原始序列构成一个大顶堆;b.交换堆的第一个元素和堆的最后一个元素; c.将除了最大元素的剩余元素构成的序列转换为一个大顶堆 d.重复步骤b-c n 1 n-1
    • 掌握各种排序算法的时空复杂度以及选择排序算法的三大依据:规模、实现难度、排序稳定性
  • 复习指引

    1. 画个表格,列出各个排序算法的时空复杂度(平均时间-最坏情况-空间需求)
    2. 实现各种排序的操作,完成面试题的编程实现

3.蓝桥杯竞赛训练收获

03-14模拟赛赛题链接

  • 第7题:具有交替特性的题目可用“0-1加和为1”来表示;疑惑:正则表达式
  • 对std::cin和std::cout相关语句的理解:为的是解除兼容C采取的让步,提高效率。详情可见:
    关于ios::sync_with_stdio(false);和 cin.tie(0)加速c++输入输出流
    • ios::sync_with_stdio(0);
    • cin.tie(0);
    • cout.tie(0);
  • 计时程序写法

4.专业课的总结

4.1《材料科学基础与新能源材料》第六章 燃料电池

在这里插入图片描述

4.2 生物学基础与生物质能转化原理和技术 直线拟合

求反应的活化能:
在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt


def mean(data):
    sum = 0
    for i in range(len(data)):
        sum += data[i]
    return sum/len(data)


def line_fit(xdata,ydata):  # y = kx + b
    # 均值
    x_mean = mean(xdata)
    y_mean = mean(ydata)
    xy_mean = mean(xdata * ydata)
    xx_mean = mean(xdata * xdata)
    k = (xy_mean - x_mean * y_mean) / (xx_mean - x_mean * x_mean)
    b = y_mean - k * x_mean
    return k, b


if __name__ == "__main__":
    xdata = np.array([1.657, 1.595, 1.535, 1.524])
    ydata = np.array([6.653, 7.501, 8.321, 8.464])
    print(xdata * ydata)
    plt.figure(1)
    plt.scatter(xdata, ydata)
    plt.xlabel('1/T x1000')
    plt.ylabel('lnk')
    xx = np.linspace(1.5, 1.7, 100)
    k, b = line_fit(xdata, ydata)
    yy = k * xx + b
    plt.plot(xx, yy, c='red')
    R = 8.314  #
    E = -k * R * 1000
    plt.title("y=kx+b"+"   k="+str(round(k, 3))+"   
    E="+str(int(E / 1000))+"kJ/mol")
    plt.show()
发布了6 篇原创文章 · 获赞 2 · 访问量 147

猜你喜欢

转载自blog.csdn.net/weixin_42430021/article/details/105258425