【計劃執行報告】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(n2n^2) O(1) 無序序列的元素不斷插入到有序序列的排序
      • 冒泡排序:O(n2n^2) O(1) 不多bb
      • (簡單)選擇排序:O(n2n^2) O(1) 每趟排序中無需序列中最小/大的元素與無序序列第一個元素交換
      • 希爾排序:O(nlog2nnlog_2n) O(1) 插排plus–>每一趟排序按一定間隔來比較元素,且間隔逐趟遞減(經驗表示變爲一半),直到間隔爲1再排一輪後結束。總體減少了元素的移動
      • 快速排序:O(nlog2nnlog_2n) O(log2nlog_2n) 最壞情況:O(n2n^2) 按一定方法選取基準元素,若從小到大排,則把比它小的元素放在其前面,大的放在後面,因而前後有兩個子序列,然後再分別對兩個子序列重複一樣的操作(遞歸)
      • 堆排序:O(nlog2nnlog_2n) O(1) a.將原始序列構成一個大頂堆;b.交換堆的第一個元素和堆的最後一個元素; c.將除了最大元素的剩餘元素構成的序列轉換爲一個大頂堆 d.重複步驟b-c n1n-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()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章