偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

使用深度學(xué)習(xí)來預(yù)測(cè)NBA比賽結(jié)果

人工智能 深度學(xué)習(xí)
這篇文章,我們來使用深度學(xué)習(xí)來預(yù)測(cè) NBA 比賽結(jié)果。要用深度學(xué)習(xí)來預(yù)測(cè)比賽結(jié)果,需要有大量技術(shù)統(tǒng)計(jì)數(shù)據(jù)作為學(xué)習(xí)樣本。

這篇文章,我們來使用深度學(xué)習(xí)來預(yù)測(cè) NBA 比賽結(jié)果。通過本文,我們可以學(xué)習(xí)到:

  1. 如何爬取 NBA 技術(shù)統(tǒng)計(jì)數(shù)據(jù);
  2. 如何預(yù)處理數(shù)據(jù);
  3. 如何搭建簡(jiǎn)單的深度網(wǎng)絡(luò)模型;
  4. 如何預(yù)測(cè)比賽結(jié)果。

使用深度學(xué)習(xí)來預(yù)測(cè)NBA比賽結(jié)果

最終我們得到一個(gè)預(yù)測(cè)第二天比賽準(zhǔn)確率 100% 的模型。

技術(shù)統(tǒng)計(jì)數(shù)據(jù)收集

要用深度學(xué)習(xí)來預(yù)測(cè)比賽結(jié)果,需要有大量技術(shù)統(tǒng)計(jì)數(shù)據(jù)作為學(xué)習(xí)樣本。

來看下官方的技術(shù)統(tǒng)計(jì)網(wǎng)站:http://stats.nba.com/schedule

使用深度學(xué)習(xí)來預(yù)測(cè)NBA比賽結(jié)果

 

打開瀏覽器的開發(fā)者工具,點(diǎn)擊每場(chǎng)比賽右邊的 BOX SCORE,我們就能看到會(huì)請(qǐng)求這樣的一個(gè) json 文件:

使用深度學(xué)習(xí)來預(yù)測(cè)NBA比賽結(jié)果

 

具體到我們要找的數(shù)據(jù)統(tǒng)計(jì),是這個(gè) json 里面的 hls (主隊(duì)數(shù)據(jù)) 和 vls (客隊(duì)數(shù)據(jù)):

使用深度學(xué)習(xí)來預(yù)測(cè)NBA比賽結(jié)果

 

url 是這種格式:

https://data.nba.com/data/10s/v2015/json/mobile_teams/nba/2017/scores/gamedetail/0021700228_gamedetail.json

多嘗試幾次就可以發(fā)現(xiàn)規(guī)律:

  1. https://data.nba.com/data/10s/v2015/json/mobile_teams/nba/ 這個(gè)是固定的;
  2. 2017 是賽季開始年份,比如上賽季則是 2016;
  3. /scores/gamedetail/ 和 ***的 _gamedetail.json 也是固定的;
  4. 0021700228 則是比賽的 id,規(guī)律為 002 是規(guī)定的,17 則是賽季開始年份的后兩位,如上賽季是 16;00228 則是 5 位的數(shù)字,從 1 開始,不足補(bǔ)零,比如該賽季***場(chǎng)是 00001,而 00228 就是第 228 場(chǎng)比賽;
  5. 抓到的 url 是 https,其實(shí) http 也是支持的,抓取時(shí)比 https 快點(diǎn)。

收集腳本比較簡(jiǎn)單,就是循環(huán)獲取,然后存 redis。

使用深度學(xué)習(xí)來預(yù)測(cè)NBA比賽結(jié)果

 

對(duì)于我們要用來跑訓(xùn)練的數(shù)據(jù),需要整理成 主隊(duì)數(shù)據(jù) - 客隊(duì)數(shù)據(jù)的方式,并增加一個(gè) win or lose 的 label (籃球比賽沒有平局)。

 

  1. 127.0.0.1:6379> HGET gamedetaildiff 0021700228_gamedetail.json 
  2.  
  3. "{u'ast': 2, 'win': 1.0, u'fbptsa': 6, u'tf': 1, u'bpts': -4, 'away': u'LAC', u'pip': -2, 'home': u'CHA', u'dreb': 4, u'fga': 4, u'tmtov': 0, u'scp': 14, 'date': u'2017-11-19', u'fbptsm': 5, u'tpa': -3, u'fgm': 1, u'stl': 2, u'fbpts': 10, u'ble': 13, u'tov': -6, u'oreb': 1, u'potov': 16, u'fta': 10, u'pipm': -1, u'pf': -6, u'tmreb': -2, u'blk': 3, u'reb': 5, u'pipa': -4, u'ftm': 10, u'tpm': 3}" 

***一共收集了,2015、2016、2017 至 2017-11-19 三個(gè)賽季的有效數(shù)據(jù)共 2699 條。

數(shù)據(jù)預(yù)處理

我們用 Pandas 來做數(shù)據(jù)處理,非常方便。

先直接從 redis 里讀入數(shù)據(jù):

 

  1. import pandas as pd 
  2. import redis 
  3. import ast 
  4.  
  5. cli = redis.Redis() 
  6. data = cli.hgetall("gamedetaildiff"
  7. df = pd.DataFrame([ast.literal_eval(data[k]) for k in data]) 
  8. df = df.fillna(value=0.0)   # 用 0 填補(bǔ)空白數(shù)據(jù) 
  9. df.head() 

使用深度學(xué)習(xí)來預(yù)測(cè)NBA比賽結(jié)果

 

輸入數(shù)據(jù)去掉無關(guān)項(xiàng),整理成訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù):

 

  1. dataX = df.drop(["win""date""home""away"], axis=1) 
  2. dataY = df["win"
  3. train_x = np.array(dataX)[::2] # train set 
  4. train_y = np.array(dataY)[::2] 
  5. test_x = np.array(dataX)[1::2] # test set 
  6. test_y = np.array(dataY)[1::2] 

處理后的數(shù)據(jù)維度:

使用深度學(xué)習(xí)來預(yù)測(cè)NBA比賽結(jié)果

 

搭建深度網(wǎng)絡(luò)

這部分其實(shí)反而是這篇文章中最簡(jiǎn)單的部分,因?yàn)槲覀冇?Keras:

 

  1. from keras.models import Sequential 
  2. from keras.layers.core import Dense 
  3.  
  4. model = Sequential() 
  5. model.add(Dense(60, input_dim=train_x.shape[1], activation='relu')) 
  6. model.add(Dense(30, activation='relu')) 
  7. model.add(Dense(1, activation='sigmoid')) 
  8. model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) 

最簡(jiǎn)單的三層全連接層網(wǎng)絡(luò)。

因?yàn)榫W(wǎng)絡(luò)的輸出維度是 1,所以***一層的激活函數(shù)是 sigmoid,損失函數(shù)為 binary_crossentropy。

使用深度學(xué)習(xí)來預(yù)測(cè)NBA比賽結(jié)果

 

模型訓(xùn)練以及驗(yàn)證

使用深度學(xué)習(xí)來預(yù)測(cè)NBA比賽結(jié)果

 

可以看到 10 個(gè) epochs 之后,模型對(duì)于訓(xùn)練數(shù)據(jù)的準(zhǔn)確度已經(jīng)達(dá)到了 98.89%

再使用測(cè)試數(shù)據(jù)對(duì)該模型進(jìn)行驗(yàn)證:

使用深度學(xué)習(xí)來預(yù)測(cè)NBA比賽結(jié)果

 

訓(xùn)練數(shù)據(jù)的準(zhǔn)確度也達(dá)到了 95.40%,說明這個(gè)模型還是比較靠譜的。雖然訓(xùn)練花不了幾秒鐘,但我們還是保存下吧:

  1. model.save("nba-model.hdf5"

新數(shù)據(jù)的預(yù)測(cè)

我們有模型可以來預(yù)測(cè)比賽結(jié)果了?,F(xiàn)在我們的問題就在于如何模擬對(duì)陣雙方的技術(shù)統(tǒng)計(jì)了。

我們用主隊(duì)上五場(chǎng)主場(chǎng)技術(shù)統(tǒng)計(jì)均值,和客隊(duì)上五場(chǎng)客場(chǎng)技術(shù)統(tǒng)計(jì)均值,兩者相減作為模型的預(yù)測(cè)輸入。

先從 redis 獲取下完整的數(shù)據(jù):

 

  1. game_detail_data = cli.hgetall("gamedetail"
  2. game_detail_json = [] 
  3. for k in game_detail_data: 
  4.     di_v = {} 
  5.     di_h = {} 
  6.     j = json.loads(game_detail_data[k]) 
  7.     vls = j["g"]["vls"
  8.     hls = j["g"]["hls"
  9.     di_v.update(vls["tstsg"]) 
  10.     di_v.update({"date": j["g"]["gdtutc"], "name": vls["ta"], "home": 0}) 
  11.     game_detail_json.append(di_v) 
  12.     di_h.update(hls["tstsg"]) 
  13.     di_h.update({"date": j["g"]["gdtutc"], "name": hls["ta"], "home": 1}) 
  14.     game_detail_json.append(di_h) 
  15. game_detail_df = pd.DataFrame(game_detail_json) 
  16. game_detail_df = game_detail_df.fillna(value=0.0) 

用 Pandas 可以一行代碼實(shí)現(xiàn) 找到主隊(duì)上五場(chǎng)主場(chǎng)數(shù)據(jù)均值 的功能:

 

  1. def predict(home=None, away=None): 
  2.     home_data = game_detail_df[(game_detail_df['name']==home) & (game_detail_df['home']==1)].sort_values(by='date', ascending=False)[:5].mean() 
  3.     away_data = game_detail_df[(game_detail_df['name']==away) & (game_detail_df['home']==0)].sort_values(by='date', ascending=False)[:5].mean() 
  4.     home_data = home_data.drop(['home']) 
  5.     away_data = away_data.drop(['home']) 
  6.     new_x = np.array(home_data - away_data) 
  7.     return model.predict_classes(new_x[np.newaxis,:], verbose=0)[0][0] 

預(yù)測(cè)效果

數(shù)據(jù)只收集到美國(guó)時(shí)間 2017-11-19:

 

使用深度學(xué)習(xí)來預(yù)測(cè)NBA比賽結(jié)果

我們來看下 2017-11-20 那天的比賽結(jié)果:

 

使用深度學(xué)習(xí)來預(yù)測(cè)NBA比賽結(jié)果

跑下我們模型的預(yù)測(cè)結(jié)果:

使用深度學(xué)習(xí)來預(yù)測(cè)NBA比賽結(jié)果

11 場(chǎng)全部正確,amazing !!

責(zé)任編輯:未麗燕 來源: 腳本有意思
相關(guān)推薦

2024-08-16 15:38:52

2022-06-30 09:53:38

火山引擎圖像壓縮

2023-05-11 07:43:36

機(jī)器學(xué)習(xí)深度學(xué)習(xí)算法

2019-11-19 09:54:59

NBA機(jī)器學(xué)習(xí)數(shù)據(jù)

2022-06-09 09:14:31

機(jī)器學(xué)習(xí)PythonJava

2021-03-29 09:02:24

深度學(xué)習(xí)預(yù)測(cè)間隔

2017-05-03 19:08:10

機(jī)器學(xué)習(xí)

2019-05-24 10:30:38

2014-10-29 11:39:37

新炬網(wǎng)絡(luò)大數(shù)據(jù)IT服務(wù)

2018-03-20 15:33:05

深度學(xué)習(xí)加密貨幣

2017-11-06 14:00:46

深度學(xué)習(xí)神經(jīng)科學(xué)夢(mèng)境

2023-02-03 11:40:49

機(jī)器學(xué)習(xí)分析情感

2020-10-06 15:12:35

機(jī)器學(xué)習(xí)

2014-12-23 17:16:18

NBA

2017-08-03 11:00:20

2017-10-09 14:51:15

深度學(xué)習(xí)復(fù)數(shù)實(shí)數(shù)

2017-10-20 14:46:26

深度學(xué)習(xí)復(fù)數(shù)噪聲

2018-01-15 08:52:08

編程語言深度學(xué)習(xí)漏洞
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)