在這個作業中,我們將用梯度下降方法**pm2.5的值
1、要求python3.5+
2、只能用(1)numpy(2)scipy(3)pandas
3、請用梯度下降手寫線性回歸
4、最好的公共簡單基線
5、對於想載入模型而並不想執行整個訓練過程的人:
請上傳訓練**並命名成 train.py
只要用梯度下降的**就行了
1.要求python3.5
2.任何庫都可以使用
3.在kaggle上獲得你選擇的更高的分數
本次作業使用豐原站的觀測記錄,分成train set跟test set,train set是豐原站每個月的前20天所有資料test set則是從豐原站剩下的資料中取樣出來。
train.csv:每個月前20天每個小時的氣象資料(每小時有18種測資)。共12個月。
test.csv:從剩下的資料當中取樣出連續的10小時為一筆,前九小時的所有觀測資料當作feature,第十小時的pm2.5當作answer。一共取出240筆不重複的test data,請根據feauure預測這240筆的pm2.5。
import pandas as pd
import numpy as np
train_data = pd.read_csv('train.csv')
pmdata = train_data[train_data['observation']=='pm2.5']
pmdata = pmdata.iloc[:, 3:]
train_x =
train_y =
for i in range(15):
x = pmdata.iloc[:, i:i+9]
x.columns = np.array(range(9))
y = pmdata.iloc[:,i+9]
y.columns = np.array(range(1))
train_x = pd.concat(train_x)
train_y = pd.concat(train_y)
train_x = np.array(train_x,float)
train_y = np.array(train_y, float)
train_x = np.concatenate((np.ones((train_x.shape[0], 1)),train_x),axis=1)
#上面是資料的讀取和簡單的處理
w = np.zeros(len(train_x[0]))
lr = 10
iteration = 10000
sum_gra = np.zeros(len(train_x[0]))
for i in range(iteration):
y_new = np.dot(train_x, w)
loss = y_new-train_y
gra = 2*np.dot(train_x.transpose(), loss)
sum_gra += gra**2
ada = np.sqrt(sum_gra)
w = w - lr*gra/ada
#訓練模型得到權重w
test_data = pd.read_csv('test.csv')
pmtest = test_data[test_data['amb_temp'] == 'pm2.5']
pmtest = pmtest.iloc[:,2:]
test_x = np.array(pmtest, float)
test_x = np.concatenate((np.ones((test_x.shape[0],1)),test_x),axis=1)
y_pre = np.dot(test_x, w)
#同樣的處理,以及讓得到的模型權重w乘上特徵x,來得到**值y
y_submit=pd.read_csv('samplesubmission.csv')
y_submit.value = y_pre
y_submit.to_csv('ownsubmission.csv')
#生成上交檔案
real = pd.read_csv('answer.csv')
error = abs(y_submit.value - real.value).sum()/len(real.value)
#得到損失值
李巨集毅 機器學習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...
機器學習 HW1相關 李巨集毅教程
hw1主要是使用liner model 進行pm2.5的 作業連線 密碼 ooqn 作業要求 1.使用前9個小時的資料,出第十個小時的pm2.5的值是多少 2.提供2014年的12個月每個月的前20天的24小時資料作為train data 3.每小時有18組資料 so2 甲烷 之類的指標 下面解析 ...
李巨集毅機器學習課程筆記 1
機器學習 自動找函式 f input output 1.regression 輸出是乙個數值 2.classification 分類 二分類 多分類 rnn 迴圈神經網路 cnn 卷積神經網路translation 繪二次元圖4.supervised learning 監督學習labeled dat...