機器學習 HW1相關 李巨集毅教程

2021-08-17 02:09:11 字數 2763 閱讀 1187

hw1主要是使用liner model 進行pm2.5的**

作業連線:

密碼 ooqn

作業要求:

1. 使用前9個小時的資料,**出第十個小時的pm2.5的值是多少

2.提供2023年的12個月每個月的前20天的24小時資料作為train data

3.每小時有18組資料(so2 甲烷  之類的指標)

下面解析 作業的sample code

import xlrd

import numpy as np

data =

for i in range( 18):

if __name__ == '__main__':

ifiledir = "./";

ifilename = ifiledir + "train.xlsx";

print('ifilename = %r'%ifilename)

try:

wb = xlrd.open_workbook(ifilename)

except:

print( "file %s is not exist" % (ifilename) )

for sheet_name in wb.sheet_names():

sheet = wb.sheet_by_name(sheet_name)

for row_num in range(1, sheet.nrows):

for i in range(3, 27):                            #3-27 是對應的24小時資料

data_tmp = sheet.cell_value(row_num, i)       #將資料轉換成浮點數

if data_tmp == 'nr':                         #nr是沒有檢測到資料

data_tmp = float(0)                    

x =

y =

上面只是就相應的train資料吃進18個list

month = 12

#10hour as one data

data_len = 9                                               # 連續9個小時的資料作為輸入

data_length = 20 * 24                                      # 乙個月24天 每天20個資料

for i in range(12):                                        # 12 個月

for j in range(480 - 9):                               #

for t in range(18):                                # 18組資料

for k in range(9):                             # 連續9個資料作為乙個input          

x = np.array(x)

#得到x 每一維度是 18 * 9 個資料, 每個月會有471個維度 一共有471*12個維度

y = np.array(y)

y = b + w10*x10 + w20*x20 + ......  w90*x90

+  w11 *x11 +...............................+w91*x91

+ w117*x117..............................+w917*x917

x = np.concatenate((np.ones((x.shape[0],1)),x),axis=1) #每個維度加乙個資料1  作為bias
w = np.zeros(len(x[0]))                        #選定乙個起始點,這裡做了維度為1 長度為18 *9 +1的 數值為0的矩陣

l_rate = 10                                    #初始learning rate

repeat = 10000

補 loss function 的公式

x_t = x.transpose()

s_gra = np.zeros(len(x[0]))

for i in range(repeat):                           #重複計算10000次

hypo = np.dot(x,w)                            #得到乙個一維矩陣 每個值對應乙個y`

loss = hypo - y                        

cost = np.sum(loss**2) / len(x)

cost_a = math.sqrt(cost)            

gra = np.dot(x_t,loss)                        #這裡不懂,應該是矩陣的導數

s_gra += gra**2

ada = np.sqrt(s_gra)

w = w - l_rate * gra/ada                     #通過adagrad 更新初始點

print ('iteration: %d | cost: %f ' % ( i,cost_a))

李巨集毅 機器學習HW1

這是乙個線性回歸的例子,先讀取資料,將b整合到w中 import numpy as np import csv import pandas as pd f open r c users lenovo desktop hw1 train.csv data list csv.reader f index...

李巨集毅機器學習3 HW1

在這個作業中,我們將用梯度下降方法 pm2.5的值 1 要求python3.5 2 只能用 1 numpy 2 scipy 3 pandas 3 請用梯度下降手寫線性回歸 4 最好的公共簡單基線 5 對於想載入模型而並不想執行整個訓練過程的人 請上傳訓練 並命名成 train.py 只要用梯度下降的...

李巨集毅機器學習課程筆記 1

機器學習 自動找函式 f input output 1.regression 輸出是乙個數值 2.classification 分類 二分類 多分類 rnn 迴圈神經網路 cnn 卷積神經網路translation 繪二次元圖4.supervised learning 監督學習labeled dat...