免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

NBA比賽結(jié)果預(yù)測:從數(shù)據(jù)獲取到模型調(diào)參的完整Python機(jī)器學(xué)習(xí)實(shí)戰(zhàn)指南

NBA比賽結(jié)果預(yù)測:從數(shù)據(jù)獲取到模型調(diào)參的完整Python機(jī)器學(xué)習(xí)實(shí)戰(zhàn)指南 簡介面向Python課程設(shè)計與機(jī)器學(xué)習(xí)實(shí)踐場景這份資源以美職籃NBA比賽數(shù)據(jù)為切入點(diǎn)實(shí)現(xiàn)了從爬蟲采集、數(shù)據(jù)清洗到智能預(yù)測的比賽結(jié)果分析流程。項(xiàng)目取材真實(shí)賽季數(shù)據(jù)涵蓋球隊(duì)場均統(tǒng)計、對手?jǐn)?shù)據(jù)、賽程安排與歷史交鋒結(jié)果等多維信息適合高校學(xué)生用于學(xué)期答辯、大作業(yè)或課程設(shè)計展示也適合希望快速上手?jǐn)?shù)據(jù)采集與建模的初學(xué)者參考。壓縮包共有十一個文件以六個數(shù)據(jù)文件、四個腳本文件和一個說明文檔為主整體大小約三百一十一KB。其中數(shù)據(jù)文件分別存放球隊(duì)常規(guī)賽統(tǒng)計、對手常規(guī)賽統(tǒng)計、歷史賽程與比賽結(jié)果腳本文件覆蓋爬蟲抓取與機(jī)器學(xué)習(xí)模型訓(xùn)練及預(yù)測說明文檔則整理了項(xiàng)目背景、設(shè)計思路、模塊劃分和運(yùn)行步驟。該方案曾獲學(xué)期優(yōu)秀項(xiàng)目評選代碼結(jié)構(gòu)清晰、數(shù)據(jù)資料齊備可直接運(yùn)行復(fù)現(xiàn)預(yù)測結(jié)果也便于后續(xù)擴(kuò)展算法或更換數(shù)據(jù)源。目前已有一千四百六十二人學(xué)習(xí)是完成課程設(shè)計或入門賽事數(shù)據(jù)分析的實(shí)用資源。1. 把NBA比賽結(jié)果預(yù)測當(dāng)課程設(shè)計為什么說這是新手最友好的機(jī)器學(xué)習(xí)項(xiàng)目NBA比賽結(jié)果預(yù)測是Python課程設(shè)計里少有的數(shù)據(jù)、算法、業(yè)務(wù)三頭都占的實(shí)戰(zhàn)選題。它不需要深度學(xué)習(xí)傳統(tǒng)機(jī)器學(xué)習(xí)模型就能把準(zhǔn)確率做到60%以上但數(shù)據(jù)獲取、特征構(gòu)造、評估方式到處是坑足夠你學(xué)到東西。在機(jī)器學(xué)習(xí)實(shí)戰(zhàn)項(xiàng)目案例里這個題目的好處是入門順滑、天花板也夠高。很多同學(xué)做完后發(fā)現(xiàn)真正決定成績的不是模型多高級而是數(shù)據(jù)預(yù)處理和特征工程做沒做干凈。這個題目恰好能把Python爬蟲、pandas數(shù)據(jù)處理、scikit-learn建模和可視化完整串一遍非常適合剛?cè)腴T機(jī)器學(xué)習(xí)、想補(bǔ)機(jī)器學(xué)習(xí)基礎(chǔ)、又想做真實(shí)項(xiàng)目的初學(xué)者。NBA比賽數(shù)據(jù)完全公開免費(fèi)接口無需注冊比申請權(quán)限的數(shù)據(jù)集友好得多。下文方案基于nba_api加pandas加scikit-learn的經(jīng)典組合全程本地跑通不需要GPU每段代碼都附參數(shù)說明和踩坑記錄。2. 獲取NBA比賽數(shù)據(jù)nba_api 拉取與本地落地的完整方案2.1 選型理由為什么第一選擇是 nba_api 而不是現(xiàn)成CSV先說結(jié)論課程設(shè)計階段直接用 nba_api 這個第三方庫拉數(shù)據(jù)比去 Kaggle 下載現(xiàn)成 CSV 更值得做。原因有三個。第一現(xiàn)成 CSV 的截止日期是固定的你拿到手的可能是上個賽季的數(shù)據(jù)沒法覆蓋最新比賽。課程設(shè)計答辯時老師大概率會問你這套流程能不能預(yù)測明天的比賽如果你用的是一份去年的靜態(tài)數(shù)據(jù)這個問題會非常尷尬。用接口拉數(shù)據(jù)代碼一跑就是最新賽程。第二拉數(shù)據(jù)的過程本身就是評分點(diǎn)。Python課程設(shè)計的評分標(biāo)準(zhǔn)里通常有工作量這一項(xiàng)能展示一個從網(wǎng)絡(luò)獲取數(shù)據(jù)的完整環(huán)節(jié)比單純讀CSV文件的工作量要扎實(shí)得多。你可以順帶在文檔里寫清楚請求流程、解析邏輯和異常處理體現(xiàn)的是從爬取到存儲的完整閉環(huán)。第三nba_api 封裝的是 NBA 官網(wǎng) stats.nba.com 的公開接口免費(fèi)、無需注冊、無需API key對校園網(wǎng)絡(luò)環(huán)境也比較友好。相比去爬第三方統(tǒng)計網(wǎng)站官方接口的可靠性要高不少也不會遇到網(wǎng)站改版導(dǎo)致解析規(guī)則失效的問題。當(dāng)然nba_api 有個前提你得先把Python環(huán)境裝好。給新手的建議是直接用 Anaconda 裝 Python 3.x然后把 conda 和 pip 的默認(rèn)源都切成國內(nèi)鏡像裝包速度會快很多。裝完在終端里跑 python --version 確認(rèn)版本再 pip install nba_api pandas scikit-learn xgboost matplotlib機(jī)器學(xué)習(xí)常用包就這么齊了。如果你用 vscode 寫代碼記得在右下角把解釋器切成 conda 環(huán)境不然容易遇到終端里能 import、vscode 里 import 報錯的經(jīng)典問題。2.2 最小可用代碼拉取近五個賽季的常規(guī)賽日程與比分nba_api 的核心用法是先構(gòu)造一個端點(diǎn)對象再調(diào)它的 get_data_frames() 方法拿回 DataFrame。最常見的入口是 leaguegamefinder它返回每一支球隊(duì)在指定范圍內(nèi)的所有歷史比賽記錄每條記錄是一行包含球隊(duì)、對手、比分、主客場、賽季、比賽日期等幾十個字段。下面這段代碼拉取近五個賽季所有常規(guī)賽的比賽日程和最終比分import pandas as pd from nba_api.stats.endpoints import leaguegamefinder def fetch_games(season_start2020, season_end2024): frames [] for season in range(season_start, season_end 1): # 每個賽季單獨(dú)拉取避免單次請求數(shù)據(jù)量過大被接口限流 season_str f{season}-{str(season 1)[-2:]} finder leaguegamefinder.LeagueGameFinder( season_nullableseason_str, season_type_nullableRegular Season ) df finder.get_data_frames()[0] frames.append(df) print(f賽季 {season_str} 拉取完成{df.shape[0]} 行) result pd.concat(frames, ignore_indexTrue) return result games fetch_games() games.to_csv(nba_games_raw.csv, indexFalse) print(games.shape)這段代碼的邏輯很直接循環(huán)遍歷每一個賽季構(gòu)造 LeagueGameFinder 請求對象用 get_data_frames() 把響應(yīng)解析成 DataFrame最后合并保存為CSV。幾個參數(shù)要說明參數(shù)取值示例含義season_nullable2020-21賽季字符串格式必須是帶橫杠的2020-21season_type_nullableRegular Season賽事類型常規(guī)賽季后賽填 Playoffsleague_id_nullable00默認(rèn)就是NBA一般不用動timeout30單個請求的最大等待秒數(shù)防卡死注意一個重要細(xì)節(jié)leaguegamefinder 返回的是球隊(duì)視角的數(shù)據(jù)也就是說一場比賽會出現(xiàn)兩行——主隊(duì)一行、客隊(duì)一行。字段里 matchup 列能看出是 ATL vs BOS 還是 BOS ATL 表示客場。做特征工程之前必須先按 GAME_ID 去重或配對這個后面特征章節(jié)會細(xì)說。接口返回的字段里GAME_ID 是比賽唯一標(biāo)識GAME_DATE 是比賽日期字符串TEAM_ID 是球隊(duì)IDPTS 是這支球隊(duì)本場得分PLUS_MINUS 是凈勝分FG_PCT 是投籃命中率REB、AST、TOV 分別是籃板、助攻、失誤。一次拉五個賽季的數(shù)據(jù)量在一萬行上下完整跑完大約一到兩分鐘速度完全可以接受。2.3 數(shù)據(jù)落地CSV 與 SQLite 怎么選數(shù)據(jù)落地方式我一般分兩種情況。如果只是課程設(shè)計數(shù)據(jù)量在幾萬行以內(nèi)直接存CSV就夠了老師拷貝你的代碼和CSV文件就能復(fù)現(xiàn)。如果你打算長期維護(hù)、每周更新數(shù)據(jù)或者想在文檔里體現(xiàn)一點(diǎn)數(shù)據(jù)庫能力用 SQLite 更合適零配置、單文件、Python 內(nèi)置 sqlite3 即可讀寫不用額外裝 MySQL。存CSV時有一個坑nba_api 返回的某些列含有特殊字符直接用默認(rèn) to_csv 沒問題但用 Excel 打開中文列名可能出現(xiàn)亂碼。保存時我習(xí)慣把編碼指定為 utf-8-sig這樣 Excel 雙擊打開也不會亂碼讀取時如果遇到解析錯誤大概率是某行數(shù)據(jù)里有多余的逗號或引號用 on_bad_linesskip 就能兜底。如果你選 SQLite建表時不要照搬所有列挑實(shí)際會用到的字段建表就行。下面這段代碼把數(shù)據(jù)寫入 SQLite并給 game_id 和 team_id 建了聯(lián)合唯一索引import sqlite3 conn sqlite3.connect(nba_games.db) cur conn.cursor() # 建表只保留特征工程會用到的核心字段 cur.execute( CREATE TABLE IF NOT EXISTS games ( game_id TEXT, team_id INTEGER, team_abbreviation TEXT, matchup TEXT, game_date TEXT, pts INTEGER, plus_minus INTEGER, home_away TEXT, season TEXT, PRIMARY KEY (game_id, team_id) ) ) # 寫入前先重命名列為干凈的小寫格式 columns [GAME_ID, TEAM_ID, TEAM_ABBREVIATION, MATCHUP, GAME_DATE, PTS, PLUS_MINUS, HOME_AWAY, SEASON] games[columns].to_sql( games, conn, if_existsreplace, indexFalse) conn.commit() conn.close() print(SQLite 寫入完成)這里用 PRIMARY KEY (game_id, team_id) 做聯(lián)合主鍵能防止重復(fù)拉取時插入重復(fù)數(shù)據(jù)。后續(xù)做增量更新時可以先查詢當(dāng)前庫里最大的 game_date只拉那之后的比賽再把新數(shù)據(jù)以 if_existsappend 追加進(jìn)去不用每次全量重跑。to_sql 是 pandas 自帶的數(shù)據(jù)庫寫入方法很適合新手需要注意 DataFrame 列名如果有空格或特殊符號建表時會很麻煩所以寫入前先重命名成干凈的小寫列名最省事。2.4 請求頻率與異常處理限速、超時和重試nba_api 雖然封裝得不錯但底層還是去請求 stats.nba.com 的 HTTP 接口。如果把它當(dāng)成隨便調(diào)的接口連續(xù)快速請求幾十次就會收到 429 狀態(tài)碼也就是請求過于頻繁被限流。這不是封IP但會讓循環(huán)中斷。我的經(jīng)驗(yàn)是兩個約束同時加一是每次請求之間 sleep 至少 0.5 到 1 秒二是設(shè)置超時和重試機(jī)制遇到 429 或 5xx 錯誤就等幾秒再重試。下面是一段加了重試邏輯的拉取函數(shù)import time import requests from nba_api.stats.endpoints import leaguegamefinder def fetch_with_retry(season_str, max_retries4): for attempt in range(max_retries): try: finder leaguegamefinder.LeagueGameFinder( season_nullableseason_str, season_type_nullableRegular Season, timeout30 ) return finder.get_data_frames()[0] except requests.exceptions.HTTPError as e: # 429是限流5xx是接口臨時出錯都值得重試 wait 2 ** attempt 1 print(f請求失敗({e}){wait}秒后重試) time.sleep(wait) raise RuntimeError(f賽季 {season_str} 拉取失敗) for season in range(2020, 2025): season_str f{season}-{str(season 1)[-2:]} df fetch_with_retry(season_str) time.sleep(1.0)幾個細(xì)節(jié)說明。timeout30 表示單個請求最多等30秒防止網(wǎng)絡(luò)卡死導(dǎo)致程序掛在那里。重試的等待時間用 2^n 1 這種指數(shù)退避第一次失敗等3秒第二次等5秒第三次等9秒給服務(wù)端留出恢復(fù)的時間。還有一個容易被忽略的問題有的校園網(wǎng)出口會攔截帶特定 UAUser-Agent的請求。如果發(fā)現(xiàn) nba_api 一直在報連接錯誤或 SSL 錯誤先別急著懷疑代碼檢查一下系統(tǒng)網(wǎng)絡(luò)設(shè)置或者換個網(wǎng)絡(luò)環(huán)境再試一次。遇到存疑的報錯把完整異常棧貼到搜索引擎里按報錯關(guān)鍵詞搜通常比盲改代碼高效得多——這是這個項(xiàng)目里最典型的不確定是代碼問題還是網(wǎng)絡(luò)問題的場景。3. 特征工程決定準(zhǔn)確率的不是模型而是這四步數(shù)據(jù)加工3.1 先定預(yù)測目標(biāo)預(yù)測勝負(fù)還是預(yù)測分差動手寫模型之前第一件事是把預(yù)測目標(biāo)定死。NBA比賽結(jié)果預(yù)測一般有兩種定義方式一是二分類預(yù)測主隊(duì)贏還是客隊(duì)贏二是回歸預(yù)測分差。課程設(shè)計我建議選二分類理由很實(shí)際二分類的評估指標(biāo)準(zhǔn)確率、AUC對新手來說好解釋答辯時一句模型對未知比賽預(yù)測準(zhǔn)確率達(dá)到62%就夠直觀回歸任務(wù)要考慮分差預(yù)測誤差解釋起來繞而且分差分布離散模型很難學(xué)出有效規(guī)律。如果你非要做回歸也可以把回歸預(yù)測的分差轉(zhuǎn)成勝負(fù)標(biāo)簽比如預(yù)測分差大于0就判主隊(duì)勝。這樣做的好處是多一個中間量壞處是誤差會疊加。建議主線做二分類把回歸當(dāng)作補(bǔ)充實(shí)驗(yàn)寫進(jìn)文檔對比兩種建模方式的結(jié)果這反而是加分項(xiàng)。目標(biāo)變量生成時有一個新手常犯的錯誤直接把原始數(shù)據(jù)里的 WL勝負(fù)字段當(dāng)標(biāo)簽。還記得前面說過 leaguegamefinder 返回的是球隊(duì)視角的數(shù)據(jù)嗎同一場比賽有兩行客隊(duì)那行的 WL 是客隊(duì)的勝負(fù)。如果不做配對直接喂給模型模型就學(xué)到看自己球隊(duì)的勝負(fù)去預(yù)測自己球隊(duì)的勝負(fù)這種作弊邏輯。正確的做法是按 GAME_ID 把一場比賽的兩行合并成一行主隊(duì)一列、客隊(duì)一列標(biāo)簽是主隊(duì)是否獲勝。3.2 滾動均值特征近五場和近十場統(tǒng)計怎么算才不算錯特征工程里最有價值的特征組是兩支球隊(duì)各自最近N場比賽的表現(xiàn)統(tǒng)計業(yè)界叫滾動均值rolling average。它背后的假設(shè)很樸素一支球隊(duì)近期的進(jìn)攻效率和防守效率最能反映它下一場可能的發(fā)揮。計算滾動均值最核心的一點(diǎn)只能用比賽日之前的數(shù)據(jù)絕不能用之后的數(shù)據(jù)。舉個例子預(yù)測1月15日的比賽只能用截至1月14日的比賽統(tǒng)計如果1月15日當(dāng)天或之后的比賽混進(jìn)滾動窗口就造成數(shù)據(jù)泄漏訓(xùn)練準(zhǔn)確率虛高好幾個點(diǎn)實(shí)戰(zhàn)預(yù)測卻崩盤。實(shí)現(xiàn)時先按 TEAM_ID 和 GAME_DATE 排序再對每支球隊(duì)單獨(dú)算最近5場和最近10場的滾動均值。下面這段代碼是完整實(shí)現(xiàn)# 先按球隊(duì)和日期排序保證滾動窗口的順序正確 games pd.read_csv(nba_games_raw.csv) games[GAME_DATE] pd.to_datetime(games[GAME_DATE]) games games.sort_values([TEAM_ID, GAME_DATE]).reset_index(dropTrue) # 要計算滾動均值的統(tǒng)計列 stat_cols [PTS, PLUS_MINUS, FG_PCT, REB, AST, TOV] for col in stat_cols: for window in [5, 10]: # 先按球隊(duì)分組計算滾動均值 roll ( games.groupby(TEAM_ID)[col] .rolling(window, min_periods1) .mean() .reset_index(level0, dropTrue) ) # shift(1) 把均值整體下移一行 # 讓第k行不再包含第k場自己的數(shù)據(jù)這是防泄漏的關(guān)鍵 games[f{col}_roll{window}] roll.groupby(games[TEAM_ID]).shift(1) print(games[[TEAM_ID, GAME_DATE, PTS, PTS_roll5, PTS_roll10]].head(20))注意沒有 shift(1) 的滾動均值等于把本場比賽的數(shù)據(jù)喂給了本場比賽這是整個項(xiàng)目最隱蔽的數(shù)據(jù)泄漏點(diǎn)務(wù)必檢查。這段代碼有兩個關(guān)鍵點(diǎn)。第一groupby(TEAM_ID).rolling(window).mean() 在分組內(nèi)部計算滾動均值窗口是5場或10場互不干擾。第二shift(1) 是防止數(shù)據(jù)泄漏的心臟它把計算結(jié)果整體下移一行這樣第k行存的是第k-1場及之前窗口內(nèi)的均值當(dāng)前場比賽本身不參與自己的特征計算。為什么 min_periods1 而不是默認(rèn)的 window因?yàn)橘惣境醯那皫讏霰荣惒粔驕悵M窗口。設(shè)成 window 的話賽季前4場的特征全是空值要么刪樣本要么手工填充設(shè)成1表示至少有一場比賽就開始算均值缺點(diǎn)是賽季初期特征偏小、波動大但至少模型有特征可用。認(rèn)真一點(diǎn)的做法是用上一賽季的均值回填賽季前幾場課程設(shè)計階段不必做這么細(xì)。3.3 賽程特征休息天數(shù)、背靠背和主場優(yōu)勢怎么編碼滾動均值之外還有三類特征在NBA預(yù)測里被反復(fù)驗(yàn)證有效休息天數(shù)、背靠背標(biāo)記、主場優(yōu)勢。休息天數(shù)指距離上一場比賽隔了多少天。NBA常規(guī)賽幾乎每天都有比賽強(qiáng)隊(duì)一個賽季要打多次背靠背連續(xù)兩天比賽球員體能差異會直接影響比賽結(jié)果。計算方式是把同一支球隊(duì)的比賽按日期排序然后算相鄰兩場比賽的日期差。背靠背是個0/1標(biāo)記表示該隊(duì)這場比賽的前一天是否也有比賽。注意背靠背還要區(qū)分主客場如果是客場打完再趕去下一個客場影響更大如果是連續(xù)兩個主場影響相對小。課程設(shè)計階段做一版簡化的0/1標(biāo)記就夠了想認(rèn)真雕琢可以拆成背靠背且客場和背靠背且主場兩個特征。主場優(yōu)勢是從 matchup 字段里解析出來的包含 表示客場否則是主場。這個特征在模型里通常系數(shù)顯著為正說明主場優(yōu)勢對NBA比賽結(jié)果有真實(shí)影響。下面這段代碼把這三類賽程特征一次性生成# 從 matchup 解析主客場包含 表示客場 games[is_home] games[MATCHUP].apply(lambda x: not in x) # 每支球隊(duì)的上一場比賽日期用于推算休息天數(shù)和背靠背 games games.sort_values([TEAM_ID, GAME_DATE]) games[prev_game_date] games.groupby(TEAM_ID)[GAME_DATE].shift(1) games[rest_days] (games[GAME_DATE] - games[prev_game_date]).dt.days # 背靠背距離上一場正好1天 games[back_to_back] (games[rest_days] 1).astype(int) # 主隊(duì)表和客隊(duì)表按 GAME_ID 合并回到比賽視角 home games[games[is_home]].copy() away games[~games[is_home]].copy() merged home.merge( away, onGAME_ID, suffixes(_home, _away) ) print(merged.shape) merged.to_csv(nba_games_features.csv, indexFalse)整體思路是把球隊(duì)視角數(shù)據(jù)拆成主隊(duì)表和客隊(duì)表再按 GAME_ID 合回比賽視角。合并之后每一行就是一場比賽左邊是主隊(duì)近期統(tǒng)計右邊是客隊(duì)近期統(tǒng)計中間夾著賽程特征。至此特征工程的骨架就搭完了。合并后行數(shù)會變成原來的一半因?yàn)槊繄霰荣悘膬尚泻蠟橐恍羞@是正常的。合并完記得檢查有沒有 GAME_ID 重復(fù)——如果接口在某個賽季返回了全明星賽或其他非正式比賽可能出現(xiàn)一對多的匹配需要提前按賽事類型過濾只保留常規(guī)賽記錄。3.4 時間切分為什么隨機(jī)打亂訓(xùn)練集相當(dāng)于讓模型作弊這個問題幾乎每個做時序預(yù)測的人都會踩一次用 train_test_split 默認(rèn)隨機(jī)切分訓(xùn)練集里混著后面的比賽測試集里混著前面的比賽。對NBA這種強(qiáng)時序依賴的數(shù)據(jù)隨機(jī)切分意味著模型的訓(xùn)練數(shù)據(jù)里包含了未來特征和標(biāo)簽產(chǎn)生隱性的時間交叉準(zhǔn)確率虛高。正確的做法是按時序切分比如用2020到2023賽季的數(shù)據(jù)訓(xùn)練用2024賽季的數(shù)據(jù)測試。train_test_split 不支持直接按時間切但把 shuffleFalse 配合已排序的數(shù)據(jù)即可實(shí)現(xiàn)或者干脆手動切片games pd.read_csv(nba_games_features.csv, parse_dates[GAME_DATE_home]) games games.sort_values(GAME_DATE_home).reset_index(dropTrue) split_date 2023-10-24 # 以2023-24賽季揭幕戰(zhàn)為界 train games[games[GAME_DATE_home] split_date] test games[games[GAME_DATE_home] split_date] print(f訓(xùn)練集 {train.shape[0]} 場 f{train[GAME_DATE_home].min().date()} ~ {train[GAME_DATE_home].max().date()}) print(f測試集 {test.shape[0]} 場 f{test[GAME_DATE_home].min().date()} ~ {test[GAME_DATE_home].max().date()})這么切完會發(fā)現(xiàn)測試集在時間上完全晚于訓(xùn)練集模型在測試集上的準(zhǔn)確率通常比隨機(jī)切分低2到4個百分點(diǎn)這才是真實(shí)水平。答辯時主動提一句我沒有用隨機(jī)切分而是用了時間切分以避免數(shù)據(jù)泄漏這一句話就能讓評委知道你理解機(jī)器學(xué)習(xí)應(yīng)用流程里最關(guān)鍵的細(xì)節(jié)。4. 機(jī)器學(xué)習(xí)模型選型與調(diào)參從邏輯回歸到XGBoost的三個階梯4.1 基線模型先跑邏輯回歸立住能跑通的版本模型部分我強(qiáng)烈建議先跑邏輯回歸當(dāng)基線不要一上來就上XGBoost。原因有兩個一是邏輯回歸訓(xùn)練快幾秒出結(jié)果適合用來驗(yàn)證特征管道有沒有問題二是邏輯回歸的系數(shù)可以解釋你能看到哪些特征對預(yù)測結(jié)果影響最大這對寫課程設(shè)計文檔非常有幫助。特征列的準(zhǔn)備和標(biāo)簽列的定義是這一步的關(guān)鍵。以 nba_games_features.csv 為例特征列包括主隊(duì)和客隊(duì)的滾動均值、休息天數(shù)、背靠背標(biāo)記。標(biāo)簽列定義為 home_win表示主隊(duì)是否獲勝。import pandas as pd from sklearn.linear_model import LogisticRegression from sklearn.preprocessing import StandardScaler from sklearn.metrics import accuracy_score, log_loss games pd.read_csv(nba_games_features.csv, parse_dates[GAME_DATE_home]) games games.sort_values(GAME_DATE_home).reset_index(dropTrue) # 標(biāo)簽主隊(duì)得分大于客隊(duì)得分則主勝 games[home_win] (games[PTS_home] games[PTS_away]).astype(int) # 特征列滾動均值 賽程特征 feature_cols [ PTS_roll5_home, PLUS_MINUS_roll5_home, FG_PCT_roll5_home, PTS_roll5_away, PLUS_MINUS_roll5_away, FG_PCT_roll5_away, rest_days_home, rest_days_away, back_to_back_home, back_to_back_away, ] X games[feature_cols] y games[home_win] # 邏輯回歸對特征尺度敏感先標(biāo)準(zhǔn)化 scaler StandardScaler() X_scaled scaler.fit_transform(X) # 時間切分2023-24賽季之前訓(xùn)練之后測試 split_date pd.Timestamp(2023-10-24) train_idx games[GAME_DATE_home] split_date test_idx games[GAME_DATE_home] split_date model LogisticRegression(max_iter1000) model.fit(X_scaled[train_idx], y[train_idx]) y_prob model.predict_proba(X_scaled[test_idx])[:, 1] y_pred (y_prob 0.5).astype(int) print(f邏輯回歸準(zhǔn)確率{accuracy_score(y[test_idx], y_pred):.4f}) print(f對數(shù)損失{log_loss(y[test_idx], y_prob):.4f}) # 打印系數(shù)看特征影響方向 coef_df pd.DataFrame({feature: feature_cols, coef: model.coef_[0]}) print(coef_df.sort_values(coef, ascendingFalse))這段代碼里max_iter1000 是因?yàn)闃?biāo)準(zhǔn)化之后特征數(shù)量不算少默認(rèn)100次迭代偶爾不收斂調(diào)大一點(diǎn)更穩(wěn)妥。predict_proba 返回二維數(shù)組取第二列就是主勝概率。log_loss 是概率預(yù)測的對數(shù)損失越小說明概率校準(zhǔn)越好后面比較模型時比準(zhǔn)確率更細(xì)膩。跑完你會看到PLUS_MINUS_roll5_home 這類凈勝分滾動均值的系數(shù)通常顯著高于其他特征說明近期凈勝分是預(yù)測比賽結(jié)果最強(qiáng)的單一信號。把基于系數(shù)分析特征重要性寫進(jìn)課程設(shè)計報告就是一塊拿得出手的內(nèi)容。4.2 樹模型上場隨機(jī)森林和XGBoost的參數(shù)怎么設(shè)基線跑通之后下一步換更強(qiáng)的模型。比賽預(yù)測場景里隨機(jī)森林和XGBoost是主流選擇。兩者都是樹模型能自動處理特征之間的非線性關(guān)系不需要像邏輯回歸那樣做標(biāo)準(zhǔn)化。代價是模型本身像個黑匣子你很難直接說出每個特征的作用方向。隨機(jī)森林的優(yōu)勢是參數(shù)少、不容易過擬合、訓(xùn)練速度快適合作為第一個升級版模型。XGBoost 的準(zhǔn)確率通常比隨機(jī)森林高零點(diǎn)幾到一兩個百分點(diǎn)但參數(shù)非常多調(diào)起來耗時對新手不友好。建議課程設(shè)計用隨機(jī)森林做主線XGBoost 作為進(jìn)階對比實(shí)驗(yàn)時間緊的話只做隨機(jī)森林也完全夠。下面這段代碼同時跑隨機(jī)森林和 XGBoostfrom sklearn.ensemble import RandomForestClassifier from xgboost import XGBClassifier # 樹模型不需要標(biāo)準(zhǔn)化直接用原始特征 X_train, X_test X.iloc[train_idx], X.iloc[test_idx] y_train, y_test y[train_idx], y[test_idx] rf RandomForestClassifier( n_estimators300, max_depth6, min_samples_leaf5, random_state42, n_jobs-1 ) rf.fit(X_train, y_train) rf_prob rf.predict_proba(X_test)[:, 1] print(f隨機(jī)森林準(zhǔn)確率{accuracy_score(y_test, (rf_prob 0.5).astype(int)):.4f}) xgb XGBClassifier( n_estimators300, max_depth4, learning_rate0.05, subsample0.8, colsample_bytree0.8, random_state42, eval_metriclogloss ) xgb.fit(X_train, y_train) xgb_prob xgb.predict_proba(X_test)[:, 1] print(fXGBoost準(zhǔn)確率{accuracy_score(y_test, (xgb_prob 0.5).astype(int)):.4f})關(guān)鍵參數(shù)說明如下表模型參數(shù)作用課程設(shè)計推薦值隨機(jī)森林n_estimators樹的數(shù)量200~500隨機(jī)森林max_depth樹的最大深度防過擬合6~8隨機(jī)森林min_samples_leaf葉子節(jié)點(diǎn)最少樣本數(shù)5~10XGBoostlearning_rate學(xué)習(xí)率越小步長越細(xì)0.03~0.1XGBoostn_estimators迭代輪數(shù)與學(xué)習(xí)率配合200~500XGBoostsubsample每輪抽樣比例0.7~0.9XGBoostcolsample_bytree每棵樹使用特征比例0.7~0.9隨機(jī)森林的 max_depth6 和 min_samples_leaf5 是防過擬合的核心參數(shù)如果訓(xùn)練集只有幾千場樹的深度超過8就很容易把訓(xùn)練集背下來。XGBoost 的 learning_rate0.05 配合 n_estimators300表示以較小步長迭代300輪subsample0.8 每輪抽80%樣本colsample_bytree0.8 每棵樹抽80%特征這兩個參數(shù)能明顯提升泛化能力。另外樹模型的超參數(shù)設(shè)置在一定程度上有玄學(xué)成分不用追求全局最優(yōu)關(guān)鍵是先設(shè)一組合理的默認(rèn)值跑通再圍繞防過擬合調(diào)深度和樣本量。eval_metriclogloss 是告訴 XGBoost 用對數(shù)損失作為內(nèi)部評估標(biāo)準(zhǔn)。如果你裝的是很老的 XGBoost 版本可能遇到 deprecation 警告不影響運(yùn)行新版直接不用管。4.3 評估指標(biāo)怎么選準(zhǔn)確率、對數(shù)損失與AUC的分工課程設(shè)計報告里只寫一個準(zhǔn)確率數(shù)字很單薄。建議至少同時報告三個指標(biāo)準(zhǔn)確率、對數(shù)損失和AUC它們各自回答不同的問題。準(zhǔn)確率最直觀預(yù)測錯誤的場次占比多少但缺點(diǎn)是無法反映概率的可信度。比如模型對某場比賽給出51%的勝率贏了算對、輸了算錯但51%和95%的置信度顯然不一樣。對數(shù)損失就能懲罰這種低置信度錯誤模型在錯誤方向上給出的概率越高懲罰越重。AUC 則是排序能力的度量回答模型給出的概率排序是否合理和具體閾值無關(guān)對樣本不平衡也不太敏感。三者的組合能幫你判斷改進(jìn)方向。如果準(zhǔn)確率還行但 log loss 偏高說明模型對某些比賽過度自信可以降低樹模型深度如果 AUC 明顯高于0.5說明特征和標(biāo)簽的關(guān)聯(lián)真實(shí)存在問題出在閾值設(shè)置可以微調(diào)判定閾值。from sklearn.metrics import roc_auc_score, brier_score_loss for name, prob in [(邏輯回歸, y_prob), (隨機(jī)森林, rf_prob), (XGBoost, xgb_prob)]: auc roc_auc_score(y_test, prob) brier brier_score_loss(y_test, prob) acc accuracy_score(y_test, (prob 0.5).astype(int)) print(f{name}: 準(zhǔn)確率{acc:.4f}, AUC{auc:.4f}, Brier{brier:.4f})Brier 分?jǐn)?shù)是概率預(yù)測和真實(shí)結(jié)果之間的均方誤差越小越好。答辯時一張表格列出三個模型的準(zhǔn)確率、AUC、log loss、Brier就構(gòu)成了一個完整的評估體系。如果想把 Python數(shù)據(jù)分析與可視化 也加進(jìn)去用 matplotlib 畫一條 ROC 曲線放到報告里能直觀展示三個模型在不同閾值下的表現(xiàn)差異。4.4 分組交叉驗(yàn)證防止同賽季的比賽同時出現(xiàn)在訓(xùn)練集和驗(yàn)證集講完評估指標(biāo)必須講交叉驗(yàn)證的正確姿勢。很多同學(xué)用 GridSearchCV 調(diào)參時發(fā)現(xiàn)驗(yàn)證集表現(xiàn)很好一到時間切分的測試集就掉點(diǎn)。原因在于默認(rèn)的 KFold 是隨機(jī)切分的前面也說過隨機(jī)切分在時序數(shù)據(jù)上等于讓模型瞥見了未來。正確的做法是 TimeSeriesSplit 或 GroupKFold 按賽季分組。TimeSeriesSplit 每次都拿時間靠前的數(shù)據(jù)做訓(xùn)練、時間靠后的做驗(yàn)證模擬真實(shí)預(yù)測場景。GroupKFold 則保證整個賽季的數(shù)據(jù)在同一折里面避免同賽季比賽被切到訓(xùn)練和驗(yàn)證兩側(cè)。from sklearn.model_selection import TimeSeriesSplit, cross_val_score from sklearn.ensemble import RandomForestClassifier # 數(shù)據(jù)必須先按時間升序排序TimeSeriesSplit 才有效 games_sorted games.sort_values(GAME_DATE_home).reset_index(dropTrue) X_sorted games_sorted[feature_cols] y_sorted games_sorted[home_win] tscv TimeSeriesSplit(n_splits5) rf RandomForestClassifier(n_estimators200, max_depth6, random_state42, n_jobs-1) scores cross_val_score(rf, X_sorted, y_sorted, cvtscv, scoringaccuracy) print(fTimeSeriesSplit 交叉驗(yàn)證準(zhǔn)確率{scores.mean():.4f} ± {scores.std():.4f})關(guān)鍵點(diǎn)cross_val_score 用 TimeSeriesSplit 時不會自動打亂數(shù)據(jù)你必須確保傳入的 X_sorted 本身按時間升序排好否則切分失去意義。scoringaccuracy 可以換成 scoringroc_auc 評估排序能力。如果想用默認(rèn)切分快速看一眼指標(biāo)可以先用 KFold 跑一遍但報告里一定要寫明隨機(jī)切分在時序數(shù)據(jù)上的局限。把隨機(jī)切分和時間切分的對比寫進(jìn)課程設(shè)計文檔本身就是很漂亮的實(shí)驗(yàn)設(shè)計。5. 避坑指南NBA預(yù)測項(xiàng)目里最常翻車的五個地方這幾個坑是我自己反復(fù)踩、也幫同學(xué)改這個題目時見得最多的按出現(xiàn)頻率排序照著排查基本能解決大部分問題。5.1 現(xiàn)象拉取數(shù)據(jù)時頻繁報429或連接超時現(xiàn)象循環(huán)拉五個賽季的數(shù)據(jù)拉到第二個賽季就拋 requests.exceptions.HTTPError: 429 Too Many Requests或者程序直接卡住不動。原因nba_api 底層請求的是 NBA 官網(wǎng)接口官網(wǎng)對單IP的請求頻率有限制。課程設(shè)計階段大家常在機(jī)房或宿舍網(wǎng)絡(luò)下跑一個出口IP可能有多臺設(shè)備同時請求更容易觸發(fā)限流。另一個隱藏原因是某些版本的 nba_api 默認(rèn)沒有設(shè)置 User-Agent被官網(wǎng)的防火墻識別成爬蟲直接拒絕。解決一是在每次請求之間加 time.sleep(1)把請求間隔控制在一秒以上二是給請求設(shè)置瀏覽器 UA 和完整的請求頭三是給單次請求設(shè)置 timeout 參數(shù)避免卡死。前面2.4節(jié)的重試代碼可以直接復(fù)用。如果學(xué)校網(wǎng)絡(luò)反復(fù)出問題換手機(jī)熱點(diǎn)試一次很多時候是網(wǎng)絡(luò)鏈路的問題而不是代碼的問題。5.2 現(xiàn)象訓(xùn)練準(zhǔn)確率高達(dá)80%以上一上真實(shí)預(yù)測就崩現(xiàn)象訓(xùn)練集準(zhǔn)確率能到85%時間切分的測試集也能到65%左右但拿模型去預(yù)測下一周的真實(shí)比賽準(zhǔn)確率只有50%上下跟猜差不多。原因根子上幾乎全是數(shù)據(jù)泄漏。常見泄漏點(diǎn)有三個滾動均值沒有 shift(1)當(dāng)天的比賽數(shù)據(jù)參與了當(dāng)天特征計算切分沒有按時間隨機(jī)切分讓模型在訓(xùn)練時看到了未來第三個最隱蔽——標(biāo)簽構(gòu)造錯誤或者把比賽結(jié)束后的全場累計統(tǒng)計比如球隊(duì)單場籃板、助攻總數(shù)當(dāng)成了特征數(shù)據(jù)和標(biāo)簽同時來自同一個結(jié)果準(zhǔn)確率自然虛高。解決逐一排查。滾動均值必須 shift(1)切分必須用時間切分標(biāo)簽必須按 GAME_ID 配對后生成主隊(duì)勝負(fù)特征列里不能出現(xiàn)和比賽同一天生成的統(tǒng)計。排查方法很樸素隨機(jī)挑一場已知結(jié)果的比賽手工算它的滾動均值特征和代碼計算值對比看是否嚴(yán)格排除了當(dāng)天比賽。在報告里寫一句已人工校驗(yàn)特征無泄漏很顯專業(yè)。5.3 現(xiàn)象做滾動均值或合并時報索引不對齊現(xiàn)象跑特征工程時報 ValueError: cannot reindex on an axis with duplicate labels或者合并出來的結(jié)果是全 NaN。原因通常是因?yàn)?GAME_ID 有重復(fù)或者 rolling 之后 reset_index 的方式不對。一個 GAME_ID 在主客兩行里如果格式不一致一個純數(shù)字一個字符串merge 時會變成笛卡爾積。另外groupby().rolling() 返回的是分組級索引沒有正確 reset 的話會把原始 DataFrame 索引打亂后續(xù)一切按索引對齊的操作都會錯位。解決拿到原始數(shù)據(jù)后先做三件事GAME_ID 統(tǒng)一轉(zhuǎn)成 str檢查并去除重復(fù)行確保 GAME_DATE 已轉(zhuǎn)成 datetime。rolling 計算完統(tǒng)一 reset_index(dropTrue)再做 merge。標(biāo)準(zhǔn)的預(yù)處理開頭長這樣games[GAME_ID] games[GAME_ID].astype(str) games games.drop_duplicates(subset[GAME_ID, TEAM_ID]) games games.sort_values([TEAM_ID, GAME_DATE]).reset_index(dropTrue) assert games.duplicated(subset[GAME_ID, TEAM_ID]).sum() 0 print(數(shù)據(jù)檢查通過無重復(fù)記錄索引已重置)5.4 現(xiàn)象同樣的代碼換臺電腦跑結(jié)果完全不一樣現(xiàn)象自己電腦上準(zhǔn)確率62%換到舍友電腦或者答辯電腦上跑變成58%甚至更低或者直接報錯。原因最常見的原因是庫版本不一致。pandas 不同版本的 rolling 行為、sklearn 不同版本的隨機(jī)數(shù)、nba_api 不同版本的字段名都會導(dǎo)致差異。特別是 nba_api 更新頻繁字段名或構(gòu)造函數(shù)參數(shù)名可能變化老代碼在新版本下可能直接報錯。另一個原因是數(shù)據(jù)不同——兩次拉取時間不同數(shù)據(jù)里包含的場次數(shù)不一樣特征統(tǒng)計自然有差異。解決寫一個 requirements.txt 把核心依賴版本鎖死文檔里寫明測試環(huán)境。答辯前提前去答辯電腦上把環(huán)境和依賴裝好不要臨場拉數(shù)據(jù)。數(shù)據(jù)方面固定下載日期把原始CSV隨代碼一起提交任何環(huán)境跑的都是同一份數(shù)據(jù)。如果 nba_api 版本過新導(dǎo)致參數(shù)報錯快速定位的方式是打印 dir(leaguegamefinder) 看當(dāng)前支持的參數(shù)名別拿老教程硬套。5.5 現(xiàn)象預(yù)測概率總往0.5收縮看不出觀點(diǎn)現(xiàn)象模型輸出的概率絕大多數(shù)落在0.4到0.6之間很少出現(xiàn)70%以上的判斷看著不夠有觀點(diǎn)。原因這在NBA預(yù)測里是正?,F(xiàn)象不是bug?;@球比賽本身隨機(jī)性很強(qiáng)主場優(yōu)勢、近期狀態(tài)這些信號只能解釋比賽結(jié)果的一部分方差模型天然學(xué)不到特別強(qiáng)的區(qū)分度。NBA單場兩隊(duì)合計得分動輒230分以上一個球員手感爆發(fā)就能改變走勢概率往0.5收縮是信息量的真實(shí)反映不是模型壞了。解決不要為了模型有觀點(diǎn)去強(qiáng)行調(diào)閾值或改損失函數(shù)。正確做法是接受這個現(xiàn)實(shí)從特征側(cè)找增量——加入球員輪休、傷病名單、球隊(duì)連勝連敗狀態(tài)都能小幅拉開概率。還可以建模分差而不是勝負(fù)因?yàn)檫B續(xù)量比分立標(biāo)簽包含更多信息。說到底60%到63%的準(zhǔn)確率對這個任務(wù)已經(jīng)是很不錯的水平對比隨機(jī)猜測的50%基準(zhǔn)這個結(jié)論本身就立得住。6. 進(jìn)階驗(yàn)證用滾動回測與概率校準(zhǔn)檢驗(yàn)?zāi)P驼鎸?shí)水平模型訓(xùn)練完還差最后一環(huán)用一套能反復(fù)執(zhí)行的驗(yàn)證流程證明模型不是碰運(yùn)氣。課程設(shè)計里最常說的一句話是模型準(zhǔn)確率62%但這個數(shù)字怎么來的、在不同時間段是否穩(wěn)定很多人說不清楚。這一章講兩個進(jìn)階動作滾動回測和概率校準(zhǔn)。滾動回測的思路是模擬真實(shí)的預(yù)測節(jié)奏。假設(shè)現(xiàn)在是某個比賽日你有截至前一天的所有數(shù)據(jù)要預(yù)測今天所有比賽的勝負(fù)等比賽結(jié)束把預(yù)測和結(jié)果對比記錄命中。把時間軸往前推每周做一次這樣的預(yù)測累積一整個賽季就得到一條真實(shí)的準(zhǔn)確率曲線。實(shí)現(xiàn)上不需要復(fù)雜框架一個 for 循環(huán)就能完成。# 把測試期按周切塊逐周回測 test_games games[games[GAME_DATE_home] split_date].copy() test_games[week] test_games[GAME_DATE_home].dt.isocalendar().week results [] for week, group in test_games.groupby(week): # 截止到本周之前的全部數(shù)據(jù)作為訓(xùn)練集 train_data games[games[GAME_DATE_home] group[GAME_DATE_home].min()] if len(train_data) 200: continue X_tr train_data[feature_cols] y_tr train_data[home_win] # 每周重新訓(xùn)練一次模擬真實(shí)部署節(jié)奏 rf RandomForestClassifier(n_estimators200, max_depth6, random_state42) rf.fit(X_tr, y_tr) prob rf.predict_proba(group[feature_cols])[:, 1] acc ((prob 0.5).astype(int) group[home_win].values).mean() results.append({week: week, games: len(group), accuracy: acc}) result_df pd.DataFrame(results) print(result_df) print(f整體回測準(zhǔn)確率{result_df[accuracy].mean():.4f})這段代碼的核心是每周重訓(xùn)一次而不是訓(xùn)一次模型測一整年。因?yàn)镹BA賽季中有交易、傷病、陣容變化固定模型會隨時間推移慢慢失效?;販y結(jié)果里命中率的波動范圍值得關(guān)注——如果某幾周準(zhǔn)確率突然跌到40%以下去查那幾周發(fā)生了什么往往能對應(yīng)上全明星周末、交易截止日這類特殊賽程事件。概率校準(zhǔn)是第二個值得做的動作。模型輸出0.55的概率到底接近真實(shí)命中率還是虛標(biāo)需要用校準(zhǔn)曲線驗(yàn)證。sklearn 的 calibration_curve 可以直接畫from sklearn.calibration import calibration_curve import matplotlib.pyplot as plt # 把測試集概率分桶對比每個桶內(nèi)的實(shí)際命中率 prob_true, prob_pred calibration_curve(y_test, xgb_prob, n_bins10) plt.figure(figsize(6, 6)) plt.plot(prob_pred, prob_true, markero, labelXGBoost) plt.plot([0, 1], [0, 1], linestyle--, label理想校準(zhǔn)) plt.xlabel(預(yù)測概率) plt.ylabel(實(shí)際命中率) plt.legend() plt.savefig(calibration_curve.png, dpi150)如果校準(zhǔn)曲線明顯偏離對角線說明概率系統(tǒng)性偏高或偏低這時可以用 CalibratedClassifierCV 做一次事后校準(zhǔn)。對課程設(shè)計來說畫一張校準(zhǔn)曲線并解釋它的含義比多調(diào)幾個百分點(diǎn)的準(zhǔn)確率更能體現(xiàn)你對機(jī)器學(xué)習(xí)模型的理解深度。我自己做這個項(xiàng)目時養(yǎng)成的習(xí)慣是每個比賽日結(jié)束后把前一天的真實(shí)結(jié)果回填到數(shù)據(jù)表重算滾動均值重新訓(xùn)練模型再把當(dāng)日比賽的預(yù)測輸出到一個CSV。堅持一個月累積下來就能畫出一條真實(shí)的準(zhǔn)確率曲線??吹角€連續(xù)下滑就知道該更新特征或者查查是不是有核心球員傷停了——這種從數(shù)據(jù)里發(fā)現(xiàn)問題的感覺比調(diào)參更有成就感。這個項(xiàng)目做完你帶走的不只是代碼而是一套從需求到可驗(yàn)證結(jié)果的完整套路先跑通最小流程再逐層加特征、換模型、補(bǔ)評估每一步都有可驗(yàn)證的輸出。以后做別的數(shù)據(jù)類項(xiàng)目這條骨架都能直接復(fù)用。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
另类激情五月| 99热在线观看| 五月丁香六月婷婷亚洲激情综合| 色婷婷aV四虎| 亚洲另类电影| 天天色亚洲| 91精品综合久久婷婷九色| aa久久| 成人AV在线网站| 婷婷六月丁香五月| 欧美色频| 99亚洲色| 色婷婷久久综合久色| 久777| 九九色大香蕉| 天天日天天干天天插天天射| 婷婷五月丁香影院| 国产精品色婷婷99久久精品| 狠狠干在线| 婷婷五月情| 午夜69成人做爰视频| 99乱视频| 99热精品6| 色色色综合色| 性爱五月婷婷| 婷婷五月激情在线| 色欲五月丁香| 成 人片 黄 色 大 片| 蜜乳中文字| 激情婷婷色色| 婷婷狠狠97| 中文字幕日产A片在线看| 六月丁香社区| 婷婷丁香五月综合激情小说| 五月欧美色色五月| 狠狠干狠狠干狠狠干狠狠干| 激情五月图| 婷婷五月天情色| 五月天婷婷午夜丁香| 国产91在线视频| 这里只有精品视频在线| 五月天婷婷成人网| 五月婷婷激情久久| 五月丁香综合| 五月婷婷六月丁香| 在线播放成人网站| 亚洲亚洲人成综合网络| 乱岳熟女50岁| 九九在线精品| 亚洲国产精品VA在线看黑人| 亚洲视频在线观看| 色色色宗合网| 五月做爱| 日韩淑女人妻luan伦激情精品一区二| 婷婷桃色网| 99精品国产在热久久| 国产精品久久久99视频| 色一情一乱一乱一区91Av| 五月婷婷97| 超碰AV在线| 色色婷婷丁香| 国产成人+综合亚洲+天堂| 九九精品综合| 99热这里有精品| 婷婷五月电影| 狠狠色综合网| 大战熟女丰满人妻AV| 免费AV播放| 色久九| www.五月丁香| 九九碰九九爱97超碰| 久久99综合网| 五月婷婷综合在线| 婷婷五月综合色小姐小说| 亚洲天堂色| 怎么样可以看免费的一级av| 丁香五月婷婷在线| 色色色99| 国产一级片色色| 610018岁成人视频| 久xxxx| WWW.久久久久久久久久久久久| 有码一区二区三区| 91色色色18| 久久久精品AV| 囯产精品一品二区三区| 婷婷五月天视频免费在线观看| 丁香五月激情婷婷婷婷在线观看| 五月婷色色| 这里只有精品免费| 九九九干精品| 99er精品| 六月婷婷在线| 噼里啪啦在线观看免费完整版视频 | 国产日产成人亚洲欧美国产VA| 国产精品久久久久久久久久久久| 丁香五月天影院| 丁香五月婷婷亚洲天堂| 丁香色五月 97干| 五月丁香六月婷综合成人综合| 色噜噜狠狠色综合无码久久欧美| 久久 视频这里只有精总| 婷婷六月天亚州| 色婷婷色五月天| 久久九精品| 天天影院色| 性做久久久久久久免费看| 人妻无码视频网| 国产原创视频91九色| 丁香九月综合激情| 久久在线人妻| 五月激情六月丁香| 538任你爽视频不一样的| 久久er免费视频| 五月激情网五月综合网| 亚洲精品视频在线| 99热这里只有精品8| 久久只有18视频| 五月婷婷激情网| 亚洲成人电影在线免费观看| 美臀自射自家人妻| 99久久久久| 丰满少妇猛烈A片免费看观看 | 亚州婷婷五月激情综合| 色婷婷色五月丁香| 97色色婷婷| 97色综合视频| 五月色丁香国产在线视频| 日本色色视频| 狠狠爱成人综合网| 激情五月无码| 日韩成人电影AV| 97sese婷婷| 欧美成人一区二区三区在线视频 | 狠狠88综合久久久久噜噜噜| 婷婷五月av| 激情婷婷激情在线不卡| 五月天婷婷乱| 成人做爰A片免费看视频| 国产色色小草视频| 五月六月激情| 天天综合天综合久久网| ss99热| 亚洲综合色色色| 97操男人的天堂| 婷婷六月丁香综合| 99精品无码| 天天干,天天操,天天射| 欧美丁香五月夫妻天| 狠狠狠狠狠狠| 婷婷爱综合| 五月色婷婷影院| 日本在线观看91| 丁香五月天激情综合网| 男同91 | 九九婷婷五月天影视| 九九精品综合| 久久一品区| 狠狠干思思热| 最熟少妇乱码| 婷婷色五月婷| 婷婷色啪| 婷婷成人视频| 最新午夜理论片| 婷婷五月天综合在线| 亚洲成人另类| 人人干av| 亚洲综合色丁香五月天| 超碰在线个人观看| 五月婷婷丁香六月| 伊人碰碰碰| 生活片五区| 99精品97| 狠狠色丁香| 大香蕉九九| 欧美丁香婷婷五月| 午夜爱爱爱成人| 国产人妻人伦精品一区二区| 五月天婷婷伊人| 青草视频在线观看视频| 天天爽日日爽夜夜爽| 国产九月婷婷| 97人人看| 凹凸7777操操操| 日韩啪啪网| 色五月激情问网站| 色婷婷无吗| 欧美中文五月天| www久久久久久| 狠狠狠狠狠干| 99re这里只有精品视频6| 欧美精品XXXXBBBB| 婷婷六月天激情| 久草嫩草在线观看| 亚洲色综合| 欧美天天草人人草| 极品人妻VIDEOSSS人妻| 色色色综合色| 色天天综合天天综合频道。| 狠狠爱婷婷五月天| 99re在线观看| 天堂AV在线看| 国产精品久久99| 亚洲熟妇AV乱码在线观看| 很很干在线视频| 激情综合丁香| 这里只有精彩视频| 99色视频在线| 伊人婷婷激情| 99 re视频一区| 丁香六月av| 婷婷丁香五月天综合网| 丁香五月婷婷亚洲天堂| 婷婷午夜| 综合一区二区三区| 天天射夜夜爽| 9999热在线观看| 久久久这里有精品| www.狠狠| 五月天久久www| 久久99精品久久久| 1024AV视频| 五月婷婷影院| 五月丁香淫淫婷婷婷| 久久女人天堂| 五月天丁香欧美激情| 五月天色丁香| 26UUU欧美激情一区二区| se色99| 六月丁香婷婷大香蕉| 色色色com| 婷婷综合网站| 99热在线里有精品| 六月丁香婷婷视频综合在线观看| 色色婷婷婷丁香五月天| 1024欧美看片| 人妻丰满精品一区二区A片| 99性爱| 五月丁香婷婷六月天| 五月婷婷综合在线视频| 思思久久99热只有频精品66| 五月色丁香| 色五月激情| 免費亭亭成人| 97色色-99久久| WWW久| 激情五月黄色| 国产午夜精品AV一区二区麻豆| 99久.| 五月婷婷中文字幕| 婷婷十月激情综合网| 这里只有精品视频国产| 婷婷五月成年人| 五月丁香婷草| 成人电影在线免费试看| 超碰97久久| 色色六月| 91九色成人原创视频| 久久婷婷色| 成人在线视频网| 四月婷婷五月丁香| 九月激情综合| 天天干夜夜谢| 九九热视频在线观看| 亚洲狠狠狠| 国产精品-第3页-91JQ就要激情网91JQ5.JQJQ926.XYZ | 伊人久久艹| 久久东京热婷婷五月| 丁香五月综合在线观看| 久久婷婷五月免费视频| 久久久精品人妻| 亚洲视频图片婷婷五月| 中文av网| 日韩AV片| 亚洲综合婷婷| www五月婷婷| 午夜精品久久久久久久爽| 婷婷五月色| 久久亚洲婷婷| 激情网 久久| 久久性爱网| 精品香蕉99久久久久网站| 五月婷久久| 99热亚洲| 偷拍九九热| 婷婷操无码| 欧美三级视频| 91人人超碰在线| 久色88| 国产综合婷婷| 激情小说五月丁香在线视频观看视频| 色999五月色| 国际国外精品欧洲南美洲专区无码不卡| 久热这里精品免费| 久草热在线视频| 色色亚洲| 久热九九| 久久国产高潮白浆免费观看99| 婷五月天| 激情网战码亚洲A| 丁香六月婷婷开心| 五月婷婷久久大片| 欧美日韩五月婷婷| 色五月开心婷婷| www.十八禁不禁AV.com| 婷婷五月天AV在线| 射久久丁香五月| 噜噜久| 日本色狠狠| 日韩啪| 大香蕉人妻| 久热九九| 91久久色| 久久婷出差欧美色两性综合网| 玖玖色资源站| 99人妻碰碰碰久久久久视| 色综合久久888| 国产成人精品一区二三区熟女在线| 丁香综合日产精品久久| 五月婷婷丁香| 久久婷婷六月综合| 欧美99热| 九九99热久久精品66中文字幕| 婷婷午夜| 丁香五月婷久久| 99热碰碰热| 办公室少妇激情呻吟A片在线观看| 99热香港| 五月婷婷丁香成人网| 婷婷伊人五月| 五月丁香影视| 婷婷九九| 99免费| 色色色热| 久久精典| 日本色色色| 丁香五月激情综合| 婷婷九月丁香天堂丁香天堂| 亚洲无码成人性爰网| 九九性爱网| 色丁香五月婷婷| 激情久久丁香| 99热99色| 最新无毒无码AV| 99色干| 五区毛片七区毛片| 欧美韩国日本| 五月丁香婷成人网| 丁香六月综合激情| 99色热视频| 婷婷色情五月| 清纯唯美 激情四射| 99WWW免费视频| AV 3P| 99热这里只有精品2| 精品人妻在线| 99玖玖视频| 九九热99精品在线| 少妇性按摩无码中文A片| 色碰碰视频| 丁香五月天色婷婷| 激情五月最新网址| 天天日天天日天天搞| 久99热| www.99热在线观看| 欧美啪啪9| 丁香色情五月综合激情| 99re思思精品在线观看| 亚洲狠狠色丁香婷婷综合久久| 99天堂网| www婷婷| 丁香婷婷五月综合色情| 伊人五月综合网| 激情爱爱网站超大免费| 婷婷四色五月| 女性自慰系列第五页| 天天干天天干天天干| 亚洲色区17| 天天天摸夜夜夜玩| 色约约视频一区二区三区四区五区| 久久996re热这里只有精品无码| 九九无码| 日日想日日夜日日操| 天天干,夜夜爽| 亚洲成人网无码| 99久久婷婷| 丁香五月综合婷婷| 99热官网| 五月婷婷无码专区| 婷香狠狠爱五月| 99热这里只有精品3| 97碰碰九九视频| 欧美婷婷五月天综合| 新激情五月天| 五月婷婷丁香瑟瑟视频| 婷婷丁香综合| 99热这里只| 五月丁香色婷婷婷基地| 日韩人妻AV在线| 五月成人综合| 久久99精品久久久久子伦| 操操自拍| 26uuu美女三级视频| 午夜性做爰电影| 综合视频五月| 国内久久亭亭| 99热这里只有精品99| 激情婷婷五月天网址| 九九九激情综合| 色色色在线播放| www.第四色99| 亚洲AV人人操| 天天日夜夜草进麻麻的子宫| 狠狠综合色网| 丁香六月婷婷综合| 九九热99热| 亚洲综合九九| 亚洲xx在线| 深爱五月婷婷| 丁香婷婷免费| 超碰高清在线| 五月天丁香| 婷婷5月九九| 久久婷婷婷| 久久丁香| 九热免费视频| 襙逼网| 99在线热视频| 全部老头和老太XXXXX| 囯产精品一品二区三区| 91尤物九色在线| 欧洲色| 婷婷瑟瑟五月天| 7超碰自拍| 午夜精品人妻无码一区二区三区| 一区二区免费看| 欧美性丁香色色五月天综合爱爱| www91在线| 少妇水多A片太爽了| 婷婷八月丁香激情综合| 色婷五月| 婷婷五月丁香狠狠| 91激情五月开心| 国产精产国品一二三在观看| 九九99久久| 六月丁香VA| 夜夜躁狠狠 | 久久久久久久久久久久63| 五月婷婷激情综合网| 五区毛片七区毛片| 伊人六月无码视频| 快乐婷婷五月天| 六月色婷婷综合影视| 五月丁香六月激情| 天天做天天爱天天爽| 五月丁香色婷婷综合| 婷婷六月色开| 丁香五月性爱爱五月| 99人妻碰碰久久久禁片| 精品人妻伦一二三区久久| 久久婷婷亚洲| 久久婷婷五月免费视频| 99色最新在线视频网站| 思思re视频在线| 夜夜夜天天操| 中文字幕精品在线观看| 久久久欧美精品sm网站| 久久综合网桃花| 久综合4| 天天插天天射| 久久婷五月| 色五月综合激情| 另类激情综合| 超碰国产AV| 五月婷婷丁香网| 久久婷婷一级片| 色五月婷婷成人视频| 九九九九国产| 九久9精品| 久久码久久无清| 青青久久91| a级毛片一区二区免费视频| 裸体做A爰片毛片A片免费| 婷婷五月六月| 天天日天天爽| 天天日天天插| 97碰碰碰免费公开在线视频| 婷婷D区| http:色情日本com| 丁香性爱在线视频| 婷婷五月欧美AA片免费| 久久艹网| 成人在线不卡| 色五月丁香总合网| 欧美另类五月激情| www.久久av.com| 99热这里只有精彩| 日日干日日| 国产在这里只有精品| 人妻久久久久久久| 国产成人AV在线| 丁香婷婷网| 97色婷婷| 欧美怡红院黄站| 婷婷五月天天| www.9797国产| 五月天激情综合首页| 婷婷综合网在线| 激情 婷婷 丁香五月天| 激情丁香五月天图片| 丁香五月人妻| 欧美日韩成人在线| 日韩无码AV电影网站| 国产精品成av人在线视午夜片| 亚洲不卡123| 婷婷趴趴| 婷婷五六日| 五月开心深深爱激情综合| 九九热这里| 久久婷婷视频| 天天干天天做| 天天色综网| 五月丁香最新| 成人必爱视| 五月婷婷开心丁香| 日本超碰在线| 婷婷基地爱| 久久久久久久久久8888| 天久综合91综合首页| 91综合视频在线| 九色视频91| 五月丁香五月天现场视频| 99久热这里只有精品| 色五月丁香网| 99视频在线看| 深爱婷婷色| rr天天操| 久久性爱99国产| 久热99热| 79精品视频| 精品人妻一区| 色女人久久| 亚洲综合干| 另类激情五月| 九月婷婷人人操人人舔人人爱| 日日噜噜夜夜狠狠久久丁香六月| WWW.久久久久久久久久久久久| 日本91在线| 久色五月| 五月丁香六月婷综合成人综合 | 五月天色色网站| 五月桃花网综合| 色婷丁香| 婷婷五月天AV在线| 1024在线视频| 五月婷婷在线网站| 丁香五月性| 亚州操操| 婷婷五月天天爽| 亚洲成人AV电影在线| 久久色情| 国产操碰| 亚洲综合一区二区| 五月婷婷免费在线观看视频| 极品人妻VIDEOSSS人妻| 天堂婷婷五月在线| 久久六月天| 午夜成人综合| 性爱久久| 丁香五月婷婷综合精品素人| 99热在这里只有精品| 91男同视频| 久久五月天合网| 99热欧美| 久久丝丝热| 久久资源网五月婷| 久久久五月五丁香| 2017人人操| 五月亭亭色| 欧美激情综合五月色丁香| 免费看欧美成人A片无码| 中文网AV| 亚洲精品久久久久久久久久吃药| 天天操夜夜啊| 五月丁香六月婷婷在线小说视频| 噜噜视频| 亚洲国产色婷婷| 天天干狠狠| 久久五月网| 九九热最新| CAoub青青超碰| 丁香婷婷噜噜| 久久 无毛。| 久久久久久人妻| 91久草五月天婷婷| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 精品草原久久视频| 另类五月激情| 裸体美女丁香五月天。| 久色激情| 亚洲综合五月| 六月婷伊人| 亚洲午夜成人av电影网| 丁香激情五月少妇| 超碰成人av| 超碰99资源站| 五月丁香婷婷色| 五月综合视频| 久久99热 这里有精品| 婷婷大香焦| 99热地址| 五月婷色| 五月婷婷色欲| 亚洲视频色婷婷| 色欲久久久久久综合网综合网| 久久98热re| 99热在线观看免费中文| 成人做爰A片免费看视频| 超碰狠狠色| 日本在线观看91| 人妻综合网| 婷婷五月天.com| 91碰免费视频| 91热久久| 永久的网站AAAA | 97爱艹婷婷开心丁香激情综合| 久久丁香五月婷| 99免费热视频在线| 26UUU欧美激情一区二区| 99在线看视频| 久草五月天| 五月涩涩网| 色天堂在线| 亚洲精品久久久久久久久久吃药| 六月丁香成人网| 五月婷中文字幕| 五月丁久久| 人人色婷婷| 99在线观看免费精品视频| 大香蕉视频婷| 五月天婷婷久久| 五月天影院| 五月丁香猫咪久久婷婷综合视频激情四射网入口 | 婷婷六月色丁香视频在线观看| 色www99| 91精品婷婷国产综合久久| 久久这里只有精品无码| 丁香六月啪啪啪| 超碰在线观看三级片| 色五月婷婷操逼| wwccc久久久| 色婷婷偷拍| 日本熟妇乱妇熟色A片蜜桃| 五月婷婷婷丁香播| 国产精品蜜臀99| 亚洲综合激情五月久久| 国产亚洲色婷婷久久99精品91 www.riverspirits.org www.hnnun.com www.changh | 丁香五月激情在线| 五月情婷婷五月| 色五月婷婷91| www久久久久久| 久热这里只有精品66| 婷婷五月电影院| 99久久五月婷婷| 国产av天堂| 91婷色| 99热这里只有精品3| 精品网站99| 日韩色五月| 亚洲成人综合网在线免费观看| 天天综合色| 精品久久久人妻| www.天天干| 99热成人在线观看| 色婷婷AV五月天| 亚洲艹网| 永久的网站AAAA| 青996青| 色综合综合综合| 久久在线视频免费观看| 91狠狠综合久久久| 99在线免费视频| 五月激情婷婷丁香| 五月婷婷综合激情| 久久综合干| 成人版视频在线观看| 99视频精品全部观看10| 色婷婷五月天久久| 五月天激情久久| 狠狠操婷婷| 婷婷精品性性性性性性性| 开心五月色婷| 99视频一区| 九九亚洲小视频| 五月色婷婷在线观看| 亚洲激情四射| 欧美激情综合| 免费AV播放| 午夜免费试看| 综合天天综合| 久久这里这里有精品免费视频| 婷婷五月天丁香花| 人人玩人人橾| 五月丁香欧美综合免费视频| 久久亚洲激情五码| 色婷婷激情| 亚洲激情婷婷| 日本大人久久| 丁香六月婷婷久久高清| 色五月婷婷色| 安息电影在线观看完整版| 色婷婷丁香五月天在线视频 | 99精彩视频网站在线| 天天射影院| 亚洲亚洲人成综合网络| 人五月天婷婷喷水| 婷婷五月色惰| 久热99| 五月婷婷丁香五月亚洲色| 久婷婷久草| 热成人网| 五月婷六月| 日韩AV大全| 国产露脸150部国语对白| 综合久久婷婷99| 久久婷婷五月综合啪| 国产亚洲色婷婷久久99精品91| 亚洲性爱99| 亚洲色色精品| 午夜成人综合| 中文字幕欧美日韩VA免费视频| 啪啪日热| 色婷操逼| 国产美女最新VA在线免费观看| 六月丁香久久| 五月婷婷六月丁香| 97操男人的天堂| av第一二区| 婷婷五月在线综合| 夜夜爱网站| 激情综合五月| 婷婷五月天丁香综合网| 色5月婷婷| 五月婷婷六月奇米网丁香| 六月婷婷久久| 99热国产| 超碰国产av| 狠狠做六月爱婷婷综合aⅴ| 五月丁香花激情综合网| 欧美内射AA| 久婷婷久草| 色色色色热热| 亚洲99在线视频| 九九aV| 精品自拍97| 天天搽天天射| 色色五月天丁香| 婷婷丁香久久网| 美女天天久久| 婷婷亚洲色| 99碰视频| 色色色色综合| 在线成人国产| 国产精品A片| 精品夜夜澡人妻无码AV| 久久综合九九| 色五月成人| 五夜丁香| 色五月五月天色婷婷色五月| 久久3级片| 99久久思思| 影音先锋女人AA鲁色资源| 操人无码| 99久久久久| 欧美 日韩 成人在线| 天天爱天天秀天天做| 伊人大香久久| 激情五月婷婷六月丁香| 五月丁香久久激情综合| 99久久婷婷五月天| 琪琪色网在线| 五月婷婷丁香av| 人妻日日日| 超碰AAAAAAV| 日本视频久久| 噜噜噜精品欧美成人在线观看| 少妇人妻丰满做爰XXX| 亚洲 25P| 荡乳尤物3HP1V5| 丁香五月aV| 日本人妻伦在线中文字幕| 日本无va视频| 91av传媒高清在线视频网| 婷婷五月天视频小说| 无码激情AAAAA片-区区| 五月天色婷婷图片| 96丁香婷婷九月蜜桃综合久久| 国产精品色一哟哟| 亚洲视频在线网| 开心深爱激情网| 亚洲婷婷婷| 91超碰在线观看| www.婷婷五月天,com| 九九色精品| 丁香亚洲婷婷五月| 五月刺激丁香月综合| 开心深爱激情网| 91人操| 成人va在线播放| 狠狠色情婷婷| 午夜激情久久| 六月丁香综合| 五月天婷婷日日爱| 99综合五月免费视频色婷婷| 91人人爽久久涩噜噜噜| 丁香久久综合| 二色av| 99热日韩| 青青草原亚洲天堂| 中文字幕人妻熟女在线| 久久五月激情| 亚洲不卡| 99在线精品免费视频| 婷婷五月天色| 日韩欧美一级大黄网站| 香蕉AV777XXX色综合一区| 五月婷婷激情久久| 亚洲精品视频在线播放| 嫩草AV久久伊人妇女超级A| 天天婷婷色六月| 色婷婷免费观看| 色狠狠色噜噜AV天堂五区| 天天婷婷| 狠狠操之狠狠操| 亚洲中文字幕在线电影| 亚洲成人在线免费| 五月丁香花免费视频| 免费黄色AV| 色伦专区97中文字幕| 狠狠搞狠狠操| 99久热这里有精品| 五月婷婷黄| 丁香五月色| 热久精品| 先锋资源996| 久久九九@| 操老逼综合网| 久久久婷| 丁香五月在线| 日韩成人五月天| 99色精品| 精品热九九| 五月丁香六月婷婷网| 狠狠五月激情丁香六月| 激情五月天婷婷免费观看| 婷婷中文字暮| 欧美搡BBBBB摔BBBBB| 色99自拍| 五月成人天| 五月婷婷熟女| 亚洲小视频免费播放| 久热re在线视频| 成人国产欧美大片一区| 婷婷五月综合激情| 丁香五月欧美| 久久久人妻门| 深爱激情四射| 99爱视频精品| 91色噜噜狠狠狠狠色综合| 抽插特写| 免费无码毛片一区二区A片 | 天天色粽合合合合合合合| 99熟女啪啪视频| 五月色色激情网| 激情婷婷丁香色情五月天| 另类视频综合| 日本久久性| 日本123区日韩欧美不卡在线看| 日韩黄在免| 操碰91| 久久久精品色| 亚洲成人av在线| jiZZdr| 99性爱视频网站| 婷婷五月天激情视频| 新99思思视频| 欧美噜噜久久久XXX| 婷色五月天| 色婷婷偷拍| 香蕉大综综综合久久| 欧美超碰亚洲| 日本在线观看aaa 99| 色六月 婷婷| 九九九九操逼| 在线观看免费观看在线9久| 国产毛片精品一区二区色欲黄A片 欧美交换配乱吟粗大25P | www色五月| 最新久久网址| 91操熟女| 超碰AV在线| 综合色久| 五月激情综合网| 综合久| 99精品视频在线观看| 激情五月天视频| 激情av| 伊人激情AV一区二区三区| 97色色婷婷| www.色婷婷| 午夜天堂一区人妻| 欧美情色一区| 天天肏视奸| 丁香综合久久| 操人久久| 丁香啪啪| 99爱欧美| 五月丁香激情六月| 天天爽天天爽视频| 狠狠爱五月婷婷| 日本三级日本三级99| 99精色| 中字幕视频在线永久在线观看免费| 伊人无码高清| 日韩一级淫乱片一区二区三区| 色综合中文综合网| 亚洲成Av人片乱码色第1集| 99干99| 性色欲情 网站| 久久狠狠色| 丁香六月婷婷综合欧美| 九九综合色综合| 五月丁香综合在线| 欧美三9久九观看| 九九久久污| 91一起艹| 成人网丁香五月| 五月丁香啪啪网| 99热精品在这里| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 超碰色婷婷| 五月婷婷丁香成人网| 五月丁香六月欧美| 狠狠干综合网| 五月激情综合网| 亚洲殴洲精品Av在线| 伊人狠狠丁香婷婷综合尤物| 99极品视频| 色色亚洲五月天| jiZZdr| 97男人天堂| 日韩成人电影AV| 天天干天天操天天爱| 色情五月婷| 日本不卡一区二区三区| 丁香五月天堂网AV| wuyuedingxiang99| 人人摸人人摸| 五月天色综合| 久婷首页| 天天 日综合| 午夜婷婷久久 | 色原狠狠综合| 狠狠另类视频| 丁香婷婷91在线观看视频| 日本不卡高字幕在线2019| 国产肏屄大片| 色婷婷五月天成人网| AV在线免费播放| 99热亚洲只有色| 操91| 色5月丁香婷婷| 中文字幕无码人妻少妇免费视频 | 欧美成人五月天| 一起草av| 婷婷五月色综合| 亚洲激情免费视频| 国产亚洲99久久精品| 99久久视频| aaa日韩| 97操碰| 婷婷六月色开| 国产成人亚洲综合A∨婷婷| 一本道在线电影| 亚洲黄色影视| 99这里有精品| 91大操| 天天粽合合合合| 人人摸人人搞| 免费啪啪亚州视频| 夜夜躁爽日日| 欧美97超碰| 一本久久亚洲五月婷婷| 在线婷婷| 久Se视频在线观看| 久久99热这里只有精品 | 五月丁香激情婷婷| 99久久66综合| jiujiu无码五区| 中文AV网站| 五月婷中文字幕| 亚洲秘 无码一区二区三区妃光/1| 在线五月婷| 天天爽人人爽| 少妇性按摩无码中文A片| 另类在线| 五月丁香黄色视频| 欧洲不卡视频| 婷婷丁香宗合888| se色综合网| 91午夜激情| 久人人操| 九九热在线精品视频| 丁香五夜激情四射夜夜夜| 日日操日日爽| 久久五月婷综合| 特级片神马电影| 五月婷婷丁香日韩在线| 新激情五月开心五月婷婷五月丁香五月| 97色色视频| 色色99色色| 日日干夜夜干| 色欲五月天| 欧美特大片黄| 久久这里有精品在线观看| 嫩草免费视频| 婷婷五月综合激情免费| 九九精品婷| 九九成人视频| 久热黄色| 婷婷六月啪啪| 美女亚洲五月丁香| 国自产拍偷拍精品啪啪一区二区| 激情网 五月天| 东京热五月婷婷| 中文字幕乱轮| 人操人人| 亚洲av网站在线观看| 伊人久久五月天| 五月婷婷影院| 天天色色婷婷| 九色porny在线观看激情四射| 色色com| 婷婷的99视频网站| 国产精品成人在线| 色婷婷五月亚洲| 日韩精品无码AV| 天天综合网91| 五月色亭丁香| 久久曰9| WWW.桔色成人.COM| 99精品在线观看| 538在线精品| 色停停五月天| 影音先锋色婷婷| 国产美女无遮挡裸体毛片A片| 青青草视频福利| 欧美WW在线网| 激情综合五月天| 中文国产五月天| 婷婷五月色色| 亚洲精品成人| 99re这里只有精品视频了| 五月激情射| 九九热精品| 99热这里全是精品| 丁香婷婷久久 | 日本久热| 9精品久久999| 日日夜夜干| 天天爽—爽| 欲求不满的人妻| 五月丁香六月在线| 丁香婷婷色六月| 久久婷婷综合网| 深夜婷婷 丁香| 日本久久高清| 六月丁香激情婷婷| 久久久WWW| 高清a片基地| 99久久激情视频| 午夜色丁香| 99色在线观看免费| 色色色色色色色色色色色色色五月天| 99色在线视频| 激情图片五月天| 婷婷五月天激情综合| 五月丁香婷婷综合视频| 中文字幕丰满孑伦无码专区| AV成人在线播放| 影音先锋人妻出差| 五月开心婷婷中文字幕| 97久久五月丁香婷婷| 97色干在线观看| 成人在线精品| 激情亚洲网| 777久久综合视频| 91丨九色丨丰满人妖| 黄色网址五月婷婷| 五月丁香影院| 一起草Av| 久久一级免费黄色片| 成熟妇人A片免费看网站| 色玖玖爱| 99这里只有精品视频| 99热日本| 桃色Av色哟哟| 99亚洲视频| 丁香六月亚洲| 字幕网AV中文字幕| 人妻人人操| 日韩另类| 五月婷婷激情日本| 五月丁香中文字幕| 9999热这里只有精品| 激情综合网络插| 亚洲五月婷| 亚卅毛片| 亚洲精品中文字幕成人片| 超碰免费人人肏| 538在线精品| 91操操| 夜夜谢天天干| 五月丁香婷婷基地| www.久久综合| 丁香五月婷婷基地| www.99热这里只有精品| 这里只有精品在线免费视频| www.色窝| 这里只有精品视频国产| 成人五月天婷婷| 91人妻PORNY九色大屁股| 综合色网站| 秋霞AV美国| 婷婷亚洲久久| 《丁香激情综合久久伊人久久》影视在线观看 -高清预告手机免费播放 -三妹影院 | 九九在线热九九在线热99热| 99热在线观看| 六月婷婷五月丁香| 91狠狠综合久久久久久| 亚洲操人| 色综合天天| 国产午夜精品AV一区二区麻豆| 色五月大香蕉| 国产精品色色| 图片区 小说区 区 亚洲五月 | 成人免费视频一区| 激情综合网五月婷婷| 五月婷婷激情| 26uuu精品国产| 91超级碰碰| 五月丁香色婷婷| 精品久久99| 性做爰1一7伦| 色吧婷婷五月亚洲| 四色五月婷婷| 色色五月丁香婷婷综合| 婷婷色五月天色| AV色婷婷| 天天做天天爱高潮片| 五月婷婷伦理| 婷婷激情区| 五月天色婷婷激情| 色五月婷婷网| 色色婷婷五月天| 亚洲成人综合在线| 激情操逼婷婷| 久久婷婷综合色丁香| WWW免费视频碰碰碰碰| 色五月天丁香| 永久99免费视频网站| 99色一| 日本色狠狠| 97av在线视频| 亚洲爆乳无码精品AAA片蜜桃| 丁香五月激情图片婷婷| 九九中文字幕九| 色欲丁香| 深爱激情网婷婷| 99久久6| 丁香六月色婷婷| 丁香六月激情| 亚洲99一级无嗎特制在线| 任我鲁这里有精品视频| www.粉嫩av.com| 婷婷五月天在婷| 91丨九色丨熟女丰满| 色综合色综合网| 色亭亭九月| WWW.99热| 天天操夜夜玩!| 伊人婷婷五月天| 久99久视频| 日韩精品一区二区刘| 区区久久妻| 国产精品香蕉| 色情五月婷婷| 色色热日| 人妻性操逼中文字幕 国产| 激情五月婷在线精品| 黄色三级日本| 丁香五月婷婷av影院| www.婷婷六月天| 婷婷五月色丁香在线看| 久久久99视频| 狠狠ri| 久操大香蕉| 色色色色色网站| 久99| 久久综合首页| 六月丁香婷婷开心综合基地| 色综合区| 国产亚洲AV人片在线| 色一情一乱一乱一区91Av| 九九99一区| 99热这里是精品| 日韩另类在线观看| 激情婷婷另类| 久久ww| 五月丁香视频色色| 色五月婷婷激情五月| 色五月天丁香| 九九九九中文字幕| 婷婷五六日| AV在线资源| 亚洲蜜乳AV| 欧美性色五月天| 狠狠干综合| 婷婷激情在线| 亚洲色在线观看| 极品人妻VIDEOSSS人妻| 在线播放成人网站| 涩婷婷五月天在线精品视频| 激情五月成年| 二人电影免费版在线观看| 91九色精品女同系列| 99婷婷色| 五月色丁香激情| 欧亚成人A片一区二区| 粉嫩av蜜桃av蜜臀av| 亚洲综合五月| 婷婷性爱五月天丁香网| 啪啪啪啪五月天| 狠狠操天天干| 欧美久热| 日韩在线视频中文字幕| 一起草av在线观看| 日本va欧美va欧美va| 精品人妻一区二区三区在| 久久亚洲婷婷综合色五月| 婷婷色影院| 亚欧州精品视频| 欧洲色色| 成人网页在线观看| 五月婷婷六月丁香综合| 99九九精品视频推荐| 玖玖九九99| 亚洲色无码A片一区二区麻豆| eeuus五月婷| 狠狠色噜噜狠狠狠狠综合| 久久曰曰| 色婷婷基地| 亚洲99综合| 99在线精品观看99| 婷婷久久五月天| 久久人妻视频| 丁香五月天激情五月天激情五月天激情网 |