99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

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

LSTM時(shí)間序列預(yù)測(cè)源碼解析:從Excel數(shù)據(jù)處理到多步預(yù)測(cè)避坑指南

LSTM時(shí)間序列預(yù)測(cè)源碼解析:從Excel數(shù)據(jù)處理到多步預(yù)測(cè)避坑指南 簡(jiǎn)介這是一套基于PyTorch的LSTM時(shí)間序列預(yù)測(cè)完整源碼定位是讓小白也能快速跑通整個(gè)預(yù)測(cè)流程解決單變量/多變量輸入、單步/多步預(yù)測(cè)等常見(jiàn)時(shí)序建模需求。程序從Excel或CSV讀取數(shù)據(jù)更換數(shù)據(jù)集無(wú)需改動(dòng)核心代碼內(nèi)置MAE、MSE、R2、MAPE等評(píng)估指標(biāo)并按標(biāo)準(zhǔn)框架劃分訓(xùn)練集、驗(yàn)證集與測(cè)試集便于觀察模型在不同階段的表現(xiàn)。資源共27個(gè)文件約9.22MB以py源碼、pyc編譯文件、xlsx示例數(shù)據(jù)、png效果圖及pdf/docx使用說(shuō)明手冊(cè)為主另附帶訓(xùn)練好的模型權(quán)重可快速對(duì)照示例結(jié)果驗(yàn)證。配套注釋和使用手冊(cè)覆蓋數(shù)據(jù)替換、模型訓(xùn)練、預(yù)測(cè)與評(píng)估全流程做課程設(shè)計(jì)、畢業(yè)設(shè)計(jì)或復(fù)現(xiàn)實(shí)驗(yàn)對(duì)比都很順手。已有266人學(xué)習(xí)下載適合剛接觸時(shí)序預(yù)測(cè)并希望直接套用模板的初學(xué)者。1. LSTM時(shí)間序列預(yù)測(cè)的“無(wú)腦”源碼這個(gè)包到底幫你省了哪些事當(dāng)你手里只有一份 Excel——銷(xiāo)量、傳感器溫度、設(shè)備振動(dòng)幅度、水庫(kù)水位——卻要在幾天內(nèi)交付一個(gè)能跑的基于 LSTM 的時(shí)間序列預(yù)測(cè)程序時(shí)真正讓人頭大的往往不是模型數(shù)學(xué)而是數(shù)據(jù)怎么喂進(jìn)去、訓(xùn)練完怎么保存權(quán)重、預(yù)測(cè)完怎么算誤差。這份基于 PyTorch 的 LSTM 預(yù)測(cè)源碼包刻意走“少折騰、直接出結(jié)果”的路線單變量/多變量輸入自由切換單步/多步預(yù)測(cè)自動(dòng)適配數(shù)據(jù)直接從 Excel/CSV 讀取訓(xùn)練集、驗(yàn)證集、測(cè)試集標(biāo)準(zhǔn)三切分訓(xùn)練結(jié)束一口氣給你 MAE、MSE、R2、MAPE 四個(gè)指標(biāo)。我拆過(guò)它全部代碼結(jié)論是它配得上“無(wú)腦”兩個(gè)字但里面還是藏了四個(gè)隱蔽坑。這篇文章從文件結(jié)構(gòu)到模型參數(shù)、從數(shù)據(jù)替換到指標(biāo)計(jì)算把這包源碼一次講透。2. 數(shù)據(jù)從 Excel 讀到 LSTM 輸入格式要求、歸一化與三集劃分2.1 數(shù)據(jù)讀取Excel/CSV 的打開(kāi)方式與格式紅線這個(gè)源碼包的數(shù)據(jù)入口是 Excel 或 CSV不是網(wǎng)上現(xiàn)成的數(shù)據(jù)集。你需要把數(shù)據(jù)整理成至少兩列一列是時(shí)間或順序索引一列是目標(biāo)值跑多變量就再加若干特征列目標(biāo)列放最后一列。先看最小讀取代碼import pandas as pd import numpy as np # data.xlsx 是默認(rèn)數(shù)據(jù)文件sheet_name0 表示第一個(gè)工作表 df pd.read_excel(data.xlsx, sheet_name0) print(df.columns.tolist()) # 確認(rèn)列名 print(df.head()) # 確認(rèn)前幾行 print(df.dtypes) # 確認(rèn)每列數(shù)據(jù)類(lèi)型這段代碼里有兩個(gè)容易被忽略的點(diǎn)。第一列名不要用中文和空格雖然源碼里很多位置靠列索引取值但換數(shù)據(jù)時(shí)列名干凈能大幅減少排錯(cuò)成本。第二dtypes 輸出很關(guān)鍵Excel 里看著是數(shù)字的列經(jīng)?;烊肷倭课谋咀兂?object 類(lèi)型后續(xù) sklearn 的 MinMaxScaler 會(huì)直接報(bào)錯(cuò)。正常的 dtype 應(yīng)該是 float64 或 int64看到 object 就說(shuō)明數(shù)據(jù)表里藏了非數(shù)字內(nèi)容。CSV 的讀取稍微不同df pd.read_csv(data.csv, encodingutf-8-sig)編碼參數(shù)我建議固定寫(xiě) utf-8-sig。Windows 上用 Excel 另存的 CSV 默認(rèn)是 ANSI/GBK 編碼不帶這個(gè)參數(shù)中文列名或者文字型特征讀進(jìn)來(lái)直接亂碼。utf-8-sig 的好處是同時(shí)兼容帶 BOM 和不帶 BOM 的 UTF-8 文件Linux 和 Windows 之間來(lái)回拷文件都不出問(wèn)題。讀取之后第一件事是清理數(shù)據(jù)。時(shí)間序列數(shù)據(jù)的清理按順序做先 dropna() 或者 fillna(methodffill)把缺值處理掉再用肉眼掃一遍有沒(méi)有明顯超出量級(jí)的異常值。時(shí)間序列里如果混入一個(gè) 1000 倍的峰值歸一化時(shí)整個(gè)數(shù)據(jù)的尺度都會(huì)被拉歪模型的預(yù)測(cè)基本作廢。源碼包里數(shù)據(jù)是干凈的但換成你自己的 Excel 時(shí)這一關(guān)必須自己過(guò)。2.2 歸一化為什么選 MinMaxScaler 而不是 StandardScalerLSTM 內(nèi)部激活函數(shù)默認(rèn)是 tanh輸出被壓在 [-1,1]原始數(shù)據(jù)如果是幾萬(wàn)、幾十萬(wàn)的量級(jí)梯度在反向傳播時(shí)很容易爆炸。源碼包默認(rèn)用 MinMaxScaler 把數(shù)據(jù)壓到 [0,1]。from sklearn.preprocessing import MinMaxScaler scaler MinMaxScaler(feature_range(0, 1)) data scaler.fit_transform(df.iloc[:, 1:].values.astype(np.float32))這里有兩個(gè)細(xì)節(jié)。第一個(gè)是 .values.astype(np.float32)PyTorch 默認(rèn)的 FloatTensor 是 32 位浮點(diǎn)如果喂 float64 的 numpy 數(shù)組在構(gòu)造 Dataset 時(shí)大概率報(bào) dtype 不匹配。第二個(gè)是 df.iloc[:, 1:]如果 DataFrame 里有時(shí)間列或 id 列必須先切掉時(shí)間戳在數(shù)學(xué)上沒(méi)有時(shí)序預(yù)測(cè)意義混進(jìn)去反而干擾特征計(jì)算。注意fit_transform 用在整份數(shù)據(jù)上還是先 fit 訓(xùn)練集再 transform 測(cè)試集最嚴(yán)格的寫(xiě)法是先對(duì)訓(xùn)練集 fit驗(yàn)證集和測(cè)試集用同一個(gè) scaler 做 transform避免測(cè)試集信息提前泄漏到歸一化參數(shù)里。數(shù)據(jù)量夠大且分布平穩(wěn)時(shí)直接對(duì)全量 fit 工程上也常見(jiàn)但嚴(yán)格項(xiàng)目建議按前者來(lái)。這里解釋一下為什么不用 StandardScaler。StandardScaler 把數(shù)據(jù)變成均值 0 方差 1適合線性模型和部分深度網(wǎng)絡(luò)但 LSTM 場(chǎng)景里 MinMaxScaler 更常見(jiàn)原因是它嚴(yán)格限制輸出范圍讓 tanh 激活始終處于有效工作區(qū)間。還有一個(gè)實(shí)際考慮MinMaxScaler 反歸一化時(shí)直接乘回去就還原真實(shí)數(shù)值不來(lái)回折騰對(duì)新手更友好。2.3 滑動(dòng)窗口構(gòu)造與三集劃分的邏輯這個(gè)源碼包比很多開(kāi)源項(xiàng)目講究的地方在于分了三份而不是兩份。默認(rèn)比例 70% 訓(xùn)練、20% 驗(yàn)證、10% 測(cè)試。代碼邏輯等價(jià)于train_size int(len(data) * 0.7) val_size int(len(data) * 0.2) train_data data[:train_size] val_data data[train_size:train_size val_size] test_data data[train_size val_size:]時(shí)間序列切分有兩個(gè)必須強(qiáng)調(diào)的點(diǎn)。第一不能隨機(jī) shuffle。數(shù)據(jù)一批接一批打亂之后模型就看到未來(lái)信息訓(xùn)練指標(biāo)再好看也是假象。第二三份數(shù)據(jù)之間允許有滑動(dòng)窗口的重疊這不叫數(shù)據(jù)泄漏而是時(shí)間序列樣本構(gòu)造的正常形態(tài)因?yàn)榇翱谥g本來(lái)就共享了部分歷史。滑動(dòng)窗口的構(gòu)造是時(shí)間序列預(yù)測(cè)的核心步驟源碼里對(duì)應(yīng)這段邏輯seq_len 7 # 用過(guò)去7個(gè)時(shí)間步預(yù)測(cè)下一個(gè) x_samples, y_samples [], [] for i in range(len(data) - seq_len): x_samples.append(data[i:i seq_len, :]) y_samples.append(data[i seq_len, -1])x_samples 的每個(gè)元素形狀是 (seq_len, feature_num)y_samples 是單個(gè)標(biāo)量。這一個(gè)標(biāo)量就是“單輸出”的含義。seq_len 參數(shù)決定模型看多長(zhǎng)的歷史取值建議參考數(shù)據(jù)周期按天記錄的銷(xiāo)量數(shù)據(jù)一個(gè)周期是 7 天seq_len 取 7 或 14 起步分鐘級(jí)交易數(shù)據(jù)先畫(huà)自相關(guān)圖找周期再定沒(méi)有固定公式。2.4 單變量/多變量切換feature 數(shù)量怎么影響 input_size源碼支持單變量和多變量自由切換落到代碼層面就是 input_size 一個(gè)參數(shù)。單變量時(shí) input_size1多變量時(shí) input_size特征列總數(shù)。在讀取階段的表現(xiàn)差異是# 單變量只保留目標(biāo)列 df pd.read_excel(data.xlsx, sheet_name0) single df[[value]].values # 多變量保留所有特征列 multi df.iloc[:, 1:].values單變量適合數(shù)據(jù)維度有限、只關(guān)心目標(biāo)本身趨勢(shì)的場(chǎng)景多變量適合有外部驅(qū)動(dòng)的場(chǎng)景比如預(yù)測(cè)銷(xiāo)量時(shí)把天氣、促銷(xiāo)、節(jié)假日一起喂進(jìn)去。但多變量不是免費(fèi)的特征列越多模型需要的數(shù)據(jù)越多特征之間如果存在強(qiáng)相關(guān)性LSTM 可能學(xué)出冗余表示。建議先從單變量跑通再用多變量對(duì)比漲幅不要一上來(lái)就堆特征。這一段也順帶解釋了為什么數(shù)據(jù)讀取后要立刻檢查列的順序和目標(biāo)列位置——源碼默認(rèn)目標(biāo)列在最后一列如果自己的數(shù)據(jù)把目標(biāo)列放在中間記得用 pandas 的 reindex 或按列名切片挪到末尾。所有數(shù)據(jù)處理做完之后數(shù)據(jù)端的三件事——讀取、歸一化、切分——就算齊了下一章進(jìn)源碼包內(nèi)部。3. 源碼包內(nèi)部結(jié)構(gòu)main.py、models.py、utils.py 各管哪一段3.1 文件地圖誰(shuí)是入口、誰(shuí)是框架、誰(shuí)是工具人解壓 zip 后真正要?jiǎng)拥奈募还参鍌€(gè)。先看職責(zé)表文件角色使用場(chǎng)景main.py程序入口訓(xùn)練和預(yù)測(cè)流程編排每次調(diào)參都改它models.pyLSTM 網(wǎng)絡(luò)結(jié)構(gòu)定義改模型架構(gòu)時(shí)才動(dòng)utils.py數(shù)據(jù)讀取、歸一化、指標(biāo)計(jì)算工具換數(shù)據(jù)格式時(shí)動(dòng)data.xlsx原始數(shù)據(jù)文件換成你自己的數(shù)據(jù)model_LSTMMain_weights預(yù)訓(xùn)練權(quán)重跳過(guò)訓(xùn)練直接預(yù)測(cè)時(shí)用main.py 只是調(diào)度者不是模型定義的地方。第一次看源碼的人容易到處找網(wǎng)絡(luò)結(jié)構(gòu)翻幾圈才發(fā)現(xiàn) LSTM 定義在 models.py 里。utils.py 把數(shù)據(jù)讀取、窗口構(gòu)造、歸一化、指標(biāo)計(jì)算全部拆出來(lái)這個(gè)分層思路是對(duì)的改數(shù)據(jù)處理邏輯時(shí)不用碰模型代碼。3.2 模型定義LSTM 層加全連接層的單輸出結(jié)構(gòu)models.py 的結(jié)構(gòu)是時(shí)間序列預(yù)測(cè)最標(biāo)準(zhǔn)的形態(tài)LSTM 層提取時(shí)序特征再接全連接層輸出預(yù)測(cè)值。核心代碼import torch import torch.nn as nn class LSTMModel(nn.Module): def __init__(self, input_size, hidden_size, num_layers, output_size): super(LSTMModel, self).__init__() self.lstm nn.LSTM( input_sizeinput_size, hidden_sizehidden_size, num_layersnum_layers, batch_firstTrue ) self.fc nn.Linear(hidden_size, output_size) def forward(self, x): out, (h_n, c_n) self.lstm(x) # 取最后一個(gè)時(shí)間步的隱層輸出做全連接 out self.fc(out[:, -1, :]) return out參數(shù)逐個(gè)說(shuō)。input_size 是特征數(shù)量單變量是 1多變量是特征列總數(shù)。hidden_size 是 LSTM 隱藏單元數(shù)決定模型記憶容量小數(shù)據(jù) 64 起步數(shù)據(jù)量大的可以設(shè) 128 或 256過(guò)大了反而容易過(guò)擬合。num_layers 是堆疊層數(shù)2 表示兩層 LSTM 堆疊能學(xué)到更復(fù)雜的時(shí)序依賴(lài)但訓(xùn)練更慢。batch_firstTrue 省了一個(gè) permute 步驟默認(rèn) PyTorch LSTM 期望輸入形狀是 (seq_len, batch, feature)batch_firstTrue 后輸入變成 (batch, seq_len, feature)和我們直覺(jué)構(gòu)造的樣本形狀完全一致。如果你在別處看到 LSTM 代碼 forward 里寫(xiě) x.permute(1,0,2)那就是沒(méi)用 batch_first 的寫(xiě)法兩件事是等價(jià)的。forward 里 out[:, -1, :] 是“單輸出”的核心操作。不管輸入是 7 個(gè)時(shí)間步還是 14 個(gè)時(shí)間步模型只看最后一個(gè)時(shí)間步的隱層狀態(tài)然后由全連接層壓成 1 個(gè)預(yù)測(cè)值。要改成多步預(yù)測(cè)一條路是把 fc 輸出維度從 1 改成 n_steps一口氣輸出未來(lái) n 步另一條路是保留單輸出但迭代預(yù)測(cè)每次預(yù)測(cè)一個(gè)值再拼回去喂給模型。前者多一個(gè)超參后者會(huì)累積誤差后面進(jìn)階章細(xì)講。3.3 權(quán)重文件與跳過(guò)訓(xùn)練直接預(yù)測(cè)包內(nèi)放了訓(xùn)練好的權(quán)重主要用于省掉訓(xùn)練時(shí)間。加載權(quán)重的標(biāo)準(zhǔn)寫(xiě)法model LSTMModel(input_sizefeature_num, hidden_size128, num_layers2, output_size1) checkpoint torch.load(model_LSTMMain_weights.pth, map_locationcpu) model.load_state_dict(checkpoint) model.eval()這里有幾個(gè)向坑很多的細(xì)節(jié)。第一map_locationcpu 必須寫(xiě)否則在沒(méi)有 GPU 的機(jī)器上加載別人 GPU 訓(xùn)練的權(quán)重會(huì)直接報(bào)錯(cuò) Attempting to deserialize object on a CUDA device。第二load_state_dict 之前必須保證模型的 hidden_size、num_layers 與訓(xùn)練時(shí)一致否則鍵名對(duì)不上運(yùn)行報(bào) Missing key 或 Unexpected key。第三加載完成后 model.eval() 是必選項(xiàng)模型里如果帶 Dropout 或 BatchNorm訓(xùn)練模式和推理模式的執(zhí)行路徑完全不同忘記切模式會(huì)讓預(yù)測(cè)結(jié)果帶隨機(jī)性。3.4 main.py 的整體流程從數(shù)據(jù)到指標(biāo)的編排main.py 的流程可以歸納為六個(gè)順序步驟讀數(shù)據(jù)、構(gòu)建窗口、切三集、定義模型、開(kāi)始訓(xùn)練、評(píng)估輸出。骨架如下def main(): data load_data(data.xlsx) # 從 utils 讀取 x, y build_sequences(data, seq_len) # 構(gòu)造窗口 train_loader, val_loader, test_loader split_dataset(x, y) # 三集 model LSTMModel(input_size, hidden_size, num_layers, 1) train(model, train_loader, val_loader, epochs) metrics evaluate(model, test_loader) print(metrics)每一行都對(duì)應(yīng)一個(gè)實(shí)際函數(shù)。這種編排方式的好處是把研究流程和工程細(xì)節(jié)剝離開(kāi)模型定義不動(dòng)調(diào)節(jié)點(diǎn)時(shí)只需要改 main.py 頂部的幾個(gè)參數(shù)。這也解釋了為什么權(quán)重文件名叫 model_LSTMMain_weights——它是對(duì)應(yīng) main.py 里創(chuàng)建的那個(gè)模型實(shí)例保存的。參數(shù)集中在 main.py 頂部是這份源碼特別方便改的地方。打開(kāi) main.py 大概率看到一堆賦值語(yǔ)句比如 epochs、batch_size、learning_rate、seq_len、hidden_size。batch_size 在時(shí)間序列場(chǎng)景里常用 32 或 64epochs 在 50 到 200 之間學(xué)習(xí)率 0.001 是 Adam 的推薦值。這些參數(shù)改完整個(gè)流程重跑一遍就行不用動(dòng)其它文件。這也是“無(wú)腦”二字的來(lái)源。4. 訓(xùn)練與評(píng)估損失函數(shù)、優(yōu)化器和 MAE/MSE/R2/MAPE 的實(shí)現(xiàn)4.1 訓(xùn)練循環(huán)Adam、MSE 損失與權(quán)重保存main.py 里的訓(xùn)練部分是標(biāo)準(zhǔn)的 PyTorch 循環(huán)沒(méi)有多余封裝。關(guān)鍵代碼import torch.optim as optim model LSTMModel(input_sizefeature_num, hidden_sizehidden_size, num_layersnum_layers, output_size1) criterion nn.MSELoss() optimizer optim.Adam(model.parameters(), lr0.001) epochs 100 for epoch in range(epochs): model.train() for x_batch, y_batch in train_loader: optimizer.zero_grad() y_pred model(x_batch) loss criterion(y_pred, y_batch.view(-1, 1)) loss.backward() optimizer.step()損失函數(shù)選 MSE 而不是 MAE 的原因很實(shí)際MSE 對(duì)預(yù)測(cè)值和真實(shí)值的偏差做平方梯度大小正比于誤差訓(xùn)練收斂更快MAE 梯度恒定誤差很小時(shí)更新步長(zhǎng)不縮小不容易收斂。代價(jià)是 MSE 對(duì)離群點(diǎn)敏感數(shù)據(jù)里有一個(gè)極端值loss 就大得離譜。時(shí)間序列數(shù)據(jù)異常值多我會(huì)先對(duì)數(shù)據(jù)做截?cái)嗷蚱交儆?xùn)練。optimizer.zero_grad() 必須寫(xiě)在每個(gè) batch 最前面。PyTorch 默認(rèn)行為是梯度累積不清空上一輪梯度的話 loss 不會(huì)收斂模型參數(shù)在錯(cuò)誤方向上亂跑。y_batch.view(-1, 1) 是為了把形狀統(tǒng)一成 (batch, 1)和模型輸出的 (batch, 1) 對(duì)齊MSE 計(jì)算才不會(huì)有維度錯(cuò)誤或隱式廣播。訓(xùn)練完成之后權(quán)重保存在流程末尾torch.save(model.state_dict(), model_LSTMMain_weights.pth)只存 state_dict不存整個(gè)模型對(duì)象。這樣做的優(yōu)點(diǎn)是文件體積小、不綁定模型類(lèi)的定義路徑換電腦加載也不受影響缺點(diǎn)是你必須保證加載時(shí)的模型定義和保存時(shí)的完全一致鍵名、參數(shù)一個(gè)都不能差。自己訓(xùn)練完立刻加載問(wèn)題不大拿別人給的權(quán)重就必須知道當(dāng)時(shí)的 hidden_size 和 num_layers。4.2 四個(gè)評(píng)估指標(biāo)公式、代碼和業(yè)務(wù)含義評(píng)估部分封裝在 utils.py 里最終在 main.py 的輸出段打印。核心計(jì)算展開(kāi)如下import numpy as np mae np.mean(np.abs(y_pred - y_test)) # 平均絕對(duì)誤差 mse np.mean((y_pred - y_test) ** 2) # 均方誤差 rmse np.sqrt(mse) # 均方根誤差 mape np.mean(np.abs((y_test - y_pred) / y_test)) * 100 # 百分比誤差 ss_res np.sum((y_test - y_pred) ** 2) ss_tot np.sum((y_test - np.mean(y_test)) ** 2) r2 1 - ss_res / ss_tot # R2 決定系數(shù)這四個(gè)指標(biāo)各有各的“脾氣”。MAE 最直觀單位跟原始數(shù)據(jù)一致“平均錯(cuò)多少個(gè)單位”適合業(yè)務(wù)匯報(bào)。MSE 把誤差平方放大對(duì)極大誤差極其敏感數(shù)據(jù)里有幾個(gè)異常點(diǎn)MSE 會(huì)大得離譜——這不是模型壞了是平方運(yùn)算的數(shù)學(xué)特性。RMSE 把 MSE 拉回原單位但它放大極端誤差的特性還在。MAPE 是百分比誤差適合做跨數(shù)據(jù)集橫向?qū)Ρ?。它有一個(gè)前提條件真實(shí)值不能接近 0否則除法分母趨近 0MAPE 直接沖天。如果自己的數(shù)據(jù)里存在 0 值這個(gè)指標(biāo)打印出來(lái)會(huì)是 inf不代表模型失敗只是指標(biāo)本身不適合這份數(shù)據(jù)改用 MAE 做評(píng)價(jià)即可。R2 的含義和另外三個(gè)完全不同。它衡量的是模型解釋了目標(biāo)波動(dòng)的比例正常范圍 0 到 1越接近 1 擬合越好。R2 為負(fù)說(shuō)明你的模型比“直接用真實(shí)值均值當(dāng)預(yù)測(cè)值”還差這種情況在時(shí)間序列里多半意味著數(shù)據(jù)切分泄漏、特征和目標(biāo)方向弄反、或者模型結(jié)構(gòu)有問(wèn)題??吹截?fù) R2 時(shí)不要調(diào)參先回去檢查數(shù)據(jù)。4.3 反歸一化預(yù)測(cè)結(jié)束最容易漏的一步訓(xùn)練時(shí)數(shù)據(jù)被壓到 [0,1]模型輸出的預(yù)測(cè)值也在 [0,1]。要把預(yù)測(cè)值還原成原始量級(jí)就必須做反歸一化y_pred_original scaler.inverse_transform(y_pred) y_test_original scaler.inverse_transform(y_test)inverse_transform 的輸入形狀必須和 fit 時(shí)的特征數(shù)量一致。如果 fit 時(shí)傳的是整個(gè) data多列現(xiàn)在只傳一列預(yù)測(cè)值會(huì)報(bào) shape mismatch。源碼里對(duì)這個(gè)問(wèn)題的處理方式是單獨(dú)定義目標(biāo)列的 scalerscaler_y MinMaxScaler() y_scaled scaler_y.fit_transform(df[[target_col]].values)這樣反歸一化只用一列沒(méi)有任何維度問(wèn)題。如果直接調(diào)用整個(gè) data 的 scaler就必須構(gòu)造一個(gè)和訓(xùn)練時(shí)相同列數(shù)的空矩陣把預(yù)測(cè)值塞進(jìn)目標(biāo)列位置再 inverse_transform處理起來(lái)麻煩得多。4.4 指標(biāo)怎么結(jié)合業(yè)務(wù)場(chǎng)景選四個(gè)指標(biāo)不是用來(lái)湊數(shù)的。業(yè)務(wù)上我一般這么選給老板匯報(bào)用 MAE因?yàn)閹г紗挝徽f(shuō)“平均偏差 120 件”比“R20.87”更容易聽(tīng)懂。調(diào)參對(duì)比模型時(shí)看 RMSE它對(duì)大誤差更敏感能幫你在多個(gè)候選模型里挑出極端情況都擬合得好的那個(gè)??鐓^(qū)域、跨品類(lèi)對(duì)比時(shí)用 MAPE因?yàn)榘俜直认瞬煌瑪?shù)據(jù)量級(jí)的影響。R2 則用來(lái)判斷模型是否整體失效。四個(gè)指標(biāo)一起看才有完整畫(huà)面MAE 低但 R2 也低說(shuō)明模型對(duì)大趨勢(shì)擬合不好MSE 高但 MAE 低暗示數(shù)據(jù)里有少數(shù)極端點(diǎn)。5. 實(shí)戰(zhàn)復(fù)現(xiàn)與避坑環(huán)境準(zhǔn)備、命令順序和五個(gè)高頻坑5.1 環(huán)境準(zhǔn)備依賴(lài)安裝和 PyTorch 選擇上手這個(gè)源碼包依賴(lài)很少核心就五個(gè)包pip install torch numpy pandas scikit-learn openpyxlopenpyxl 是 pandas 讀 .xlsx 的底層依賴(lài)不裝的話 pd.read_excel 會(huì)直接 ImportError。如果數(shù)據(jù)只有 CSV可以去掉 openpyxl但保留也不礙事體積很小。PyTorch 的安裝要分情況純 CPU 機(jī)器直接 pip install torch 就能裝有 NVIDIA 顯卡想用 GPU去 PyTorch 官網(wǎng)按 CUDA 版本選安裝命令不要自己猜 wheel 名。這份源碼的規(guī)模用 CPU 完全跑得動(dòng)差的只是訓(xùn)練時(shí)間不用為它大動(dòng)干戈配 GPU 環(huán)境。裝好后第一件事是驗(yàn)證 PyTorch 是不是真的能導(dǎo)入python -c import torch; print(torch.__version__)這一行能輸出版本號(hào)環(huán)境基本就緒。經(jīng)常有人跳過(guò)這一步直接跑 main.py在 import torch 那行翻車(chē)然后花半天排查是哪個(gè)包缺了其實(shí)環(huán)境從頭就沒(méi)裝好。5.2 跑通主流程六步操作整體操作順序如下。第一步把 data.xlsx 換成你自己的 Excel。列名換成英文目標(biāo)列放最后一列清理掉空值和明顯異常點(diǎn)。第二步打開(kāi) main.py把數(shù)據(jù)路徑、sheet 名改成實(shí)際值同時(shí)確認(rèn) seq_len、hidden_size 這些參數(shù)。第三步?jīng)Q定單變量還是多變量單變量在讀取段只保留目標(biāo)列多變量保留全部特征列。第四步運(yùn)行 python main.py。第五步觀察訓(xùn)練日志loss 應(yīng)該持續(xù)下降如果看到 loss 變成 NaN 就停住回到避坑清單。第六步訓(xùn)練結(jié)束后看測(cè)試集上的 MAE、MSE、R2、MAPE 輸出同時(shí)確認(rèn)反歸一化后的預(yù)測(cè)曲線有沒(méi)有明顯錯(cuò)位。這六步做完按說(shuō)已經(jīng)能用上這份源碼了。但時(shí)間序列預(yù)測(cè)的坑密集在數(shù)據(jù)環(huán)節(jié)而不是模型環(huán)節(jié)下面五條是最常見(jiàn)的報(bào)錯(cuò)和翻車(chē)記錄。5.3 避坑5 個(gè)高頻踩坑記錄坑一訓(xùn)練 loss 輸出 NaN現(xiàn)象訓(xùn)練頭幾輪 loss 正常幾十輪后突然變成 NaN后續(xù)全部 NaN。 原因最常見(jiàn)的是數(shù)據(jù)里存在 NaN 或者 infMinMaxScaler 會(huì)把 NaN 原樣保留LSTM 前向傳播算出的梯度直接無(wú)效。次常見(jiàn)的是學(xué)習(xí)率太大Adam 一次更新就跨過(guò)最優(yōu)點(diǎn)數(shù)值發(fā)散。 解決讀取 DataFrame 后立刻執(zhí)行 df df.dropna() 或者 df df.fillna(methodffill)同時(shí)把學(xué)習(xí)率從 0.001 降到 0.0005。絕大多數(shù)情況這兩步做完 NaN 就沒(méi)了。如果要兜底在訓(xùn)練循環(huán)里加一個(gè) loss 檢查if torch.isnan(loss): print(NaN at epoch, epoch); break方便快速定位??佣虞d權(quán)重時(shí)報(bào) Missing key(s) in state_dict現(xiàn)象torch.load 成功load_state_dict 卻報(bào)缺失鍵或者鍵名對(duì)不上。 原因模型定義參數(shù)和保存權(quán)重時(shí)的參數(shù)不一致。別人用 hidden_size128 訓(xùn)練保存你用默認(rèn) hidden_size64 定義模型鍵名自然對(duì)不上。 解決權(quán)重文件名是 model_LSTMMain_weights對(duì)應(yīng) main.py 里的默認(rèn)模型。加載前按原結(jié)構(gòu)重新定義模型如果你改過(guò) models.py舊權(quán)重大概率失效老老實(shí)實(shí)重新訓(xùn)練。實(shí)在不知道原結(jié)構(gòu)把 hidden_size、num_layers 兩個(gè)參數(shù)跑一遍組合加載成功為止??尤A(yù)測(cè)階段維度報(bào)錯(cuò) RuntimeError: mat1 and mat2 shapes cannot be multiplied現(xiàn)象eval 階段輸入模型的數(shù)據(jù)形狀不對(duì)全連接層矩陣乘直接串臺(tái)。 原因模型的 LSTM 期望三維輸入 (batch, seq_len, feature)實(shí)際輸入變成了二維或者 batch_size 和 seq_len 交叉錯(cuò)位。最常見(jiàn)的是構(gòu)造序列樣本時(shí)把 [seq_len, feature] 當(dāng)成整體傳入少了 batch 維。 解決在進(jìn)模型前加一行 print(x.shape) 確認(rèn)維度。少一維用 x x.unsqueeze(0)多一維用 x.squeeze(0)。建議在 main.py 關(guān)鍵位置加 assert x.dim() 3訓(xùn)練和預(yù)測(cè)都套上報(bào)錯(cuò)時(shí)一秒定位??铀念A(yù)測(cè)曲線是平移了一個(gè)周期的“滯后曲線”現(xiàn)象預(yù)測(cè)值和真實(shí)值曲線形狀幾乎一樣但整體右移了一個(gè)周期R2 不低畫(huà)圖一看就露餡。 原因時(shí)間序列模型最經(jīng)典的偷懶結(jié)果。在沒(méi)有強(qiáng)趨勢(shì)的序列上模型找到的最優(yōu)策略是“用最近的一個(gè)值預(yù)測(cè)當(dāng)前值”因此輸出天然滯后一個(gè)周期。這不是代碼故障是數(shù)據(jù)信息和建模方式的局限。 解決增大 seq_len 讓模型看到更長(zhǎng)的歷史或者對(duì)原始數(shù)據(jù)做一階差分把預(yù)測(cè)目標(biāo)從“絕對(duì)值”改成“增量”訓(xùn)練結(jié)束后再反差分還原。差分是消除滯后性的常用手段但如果業(yè)務(wù)指標(biāo)周期性很強(qiáng)、滯后可以接受也不一定非要改??游錯(cuò)val() 沒(méi)調(diào)用預(yù)測(cè)結(jié)果忽好忽壞現(xiàn)象加載權(quán)重后預(yù)測(cè)多次結(jié)果每次都不一樣。 原因模型里有 Dropout 或 BatchNorm 層時(shí)訓(xùn)練模式和推理模式的執(zhí)行邏輯不同。Dropout 在 train 模式下隨機(jī)丟棄神經(jīng)元BatchNorm 在 train 模式下更新運(yùn)行統(tǒng)計(jì)量?jī)烧叨紩?huì)讓預(yù)測(cè)帶隨機(jī)性。 解決預(yù)測(cè)前強(qiáng)制調(diào)用 model.eval()。這份源碼標(biāo)準(zhǔn)結(jié)構(gòu) LSTMLinear 沒(méi)有 Dropout 影響不大但后續(xù)加了 Dropout 或 BatchNorm這個(gè)坑必定踩到。同樣地要重新訓(xùn)練就切回 model.train()兩種模式要成對(duì)使用。五個(gè)坑排完之后這份源碼的復(fù)現(xiàn)就穩(wěn)了。6. 進(jìn)階改造從單步改成多步預(yù)測(cè)的驗(yàn)證方法單輸出和單步預(yù)測(cè)是這份源碼的默認(rèn)行為但很多實(shí)際場(chǎng)景需要的是一次給出未來(lái)若干步的預(yù)測(cè)——比如未來(lái) 7 天的銷(xiāo)量、未來(lái) 24 小時(shí)的電價(jià)。要把這份源碼從單步改成多步有三個(gè)環(huán)節(jié)必須處理。第一模型輸出維度。單輸出模型的最后一層全連接輸出是 1多步預(yù)測(cè)最簡(jiǎn)單的改法是把 output_size 從 1 改成 n_steps讓模型一口氣輸出未來(lái) n 步。相應(yīng)的損失函數(shù)還是 MSE但 y_batch 的形狀得跟著變成 (batch, n_steps)不能再 view 成 (batch, 1)。第二數(shù)據(jù)集構(gòu)造邏輯。原來(lái)窗口取 data[i:iseq_len] 作為輸入y 取 data[iseq_len] 單值改成多步后 y 要取 data[iseq_len:iseq_lenn_steps] 連續(xù) n 個(gè)目標(biāo)值。這一步直接導(dǎo)致訓(xùn)練樣本數(shù)減少數(shù)據(jù)量不夠時(shí)多步預(yù)測(cè)的效果會(huì)很慘。第三評(píng)估方式。多步預(yù)測(cè)的指標(biāo)一般按步分別計(jì)算MAE 按第 1 步、第 2 步、第 n 步單獨(dú)打印這樣你能看清誤差在哪一步開(kāi)始明顯變大。我的習(xí)慣是改造前先加載官方權(quán)重跑一遍單步預(yù)測(cè)記錄指標(biāo)作為 baseline然后從 n_steps2 開(kāi)始逐步加大步數(shù)觀察誤差隨步數(shù)的衰減曲線。多步預(yù)測(cè)最常見(jiàn)的現(xiàn)象是“第一步指標(biāo)好、遠(yuǎn)期指標(biāo)崩”這不是模型壞了而是預(yù)測(cè)誤差在迭代過(guò)程中被一步步傳導(dǎo)放大越遠(yuǎn)的步數(shù)據(jù)含量越低。那年我把多步改成 5 步發(fā)現(xiàn)第 7 步的 MAPE 比第 1 步漲了三倍排查了半天模型代碼沒(méi)有任何問(wèn)題最后意識(shí)到是輸入序列的周期長(zhǎng)度和預(yù)測(cè)步數(shù)不匹配——用 7 天周期去預(yù)測(cè) 5 天后的值本身就不太穩(wěn)。從那以后我每次改動(dòng)步數(shù)都會(huì)強(qiáng)制先記錄 single-step baseline再逐級(jí)加大 n_steps對(duì)比每步的指標(biāo)衰減曲線再?zèng)Q定用哪個(gè)步數(shù)配置上線。希望這一套拆解思路幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
在线99色| 五月婷婷综合久久| 婷婷午夜| 亚洲碰碰碰| 香蕉AV777XXX色综合一区| 99热这里只有精品66| 久久婷婷成人视频| 亚洲综合色色| 日本九九视频| 操逼巨乳91| 99精品国产乱码久久久人妻| 97色色色| 婷婷久久综合| 五月天激情婷婷| 99热这里只有免费精品| 99精品视频免费观看,| 色色色婷婷五月天| 九九色99| 粉嫩av蜜桃av蜜臀av| 日韩有码一区| 伊人成综合五月婷婷| 99色视频| 97精品人人A片免费看| 丁香五月自拍| 嫩草视频在线观看| 91久久| 五月成人天| 国产成人AV人人爽人人澡Va| 五月天 综合 在线| 这里只有视频精品| 婷婷五月天AV激情| 夜夜夜叫天天天做| 五月天精品综合在线| 开心 五月 综合| 在线观看的av| 色五月天.con| 久久精品国产色| 性爱网五月天| 天天舔天天插天天爱| 99热碰碰热| 婷婷色五月天色色| 碰碰人人漕| 一区二区传媒视频| 99在线视频资源| 91好好热日本在线| 色婷婷电影| 婷婷丁香花五月天| 五月丁香A片| 99在线视频精品| www.com.色色| 九九香蕉网| 成人五月天丁香婷| 狠狠色噜噜狠狠色噜噜噜999| 九九这里只有精品| 日本熟女一区二区| 噜噜五月天综合| 99热这里只有精品在线播放| 天天操比比| 九九99精品视频在线观看| 五月六月激情| 日韩另类在线观看| 99热在线观看| 婷婷伊人综合| 欧美99视频| 九九综合| m色激情网| 天天日夜夜爽。| 激情综合五月色丁香婷婷| 狠狠草综合网| 热久国产| 图片区 小说区 区 亚洲五月| 国外亚洲成AV人片在线观看| 秋霞网在线免费基地五月婷婷丁香| 婷婷激情五月天桃花网| www.色99| 欧洲综合视频在线观看。欧洲,亚洲综合食品在线观看。 | 超碰京东热av男人的天堂| 五月天婷婷激情网| 日本a片网址| 日韩无码一区二区三区四区| 天天爽免费视频| 色色色色色色网| 久久婷丁香五月| 九九热免费| 欧美大肥婆大肥BBBBB| 亚洲妇女熟BBW| 日碰日| 六月婷婷网| 99视频精品| 五月婷婷就去色| 激情小说之五月| 人人摸人人| 色播五月丁香| 五月天色欧美| 五月社区丁香| 亚洲精品视频在线播放| 69人人操人人爽| 色婷婷亚洲| 色婷婷五月天激情在线播放| 91无码高清| 五月天丁香| 亚洲mm免费| 99碰网站| 国内精品玖玖| 九九热AV| 九九九九综合| 99色色视频| www.minyis.com【JT】实力收量可预付QQ2101460746 | 色色色综合视频| 五月色网| 专区无日本视频高清8| 97sese婷婷| 丁香五月婷婷六月婷婷| 五月天综合网| 婷婷激情五月天激情小说| 五月婷婷综合激情网| 狠狠干伊人| www,久久久| 久久五月天激情| 91婷婷丁香| 快色t v在线入口| 国产激情视频在线观看| 青青久久大香蕉| 丁香5月综合啪啪| 欧美视频五区| 激情AV中文| 色综合久久88色综合天天人守婷| 天天插综合| 香蕉色色网| 天天干夜夜操A片| 五月天婷婷无码| 日本乱子人伦在线视频| 五月丁香啪啪啪免费看| 超碰免费在线| 五月丁香啪啪网| 婷婷五月天激情文学| 午夜天堂一区人妻| 丁香婷婷五月天色综合| 激情六月综合| 快乐激情五月色婷婷| 婷婷99狠狠躁| 欧美超碰亚洲| 婷婷天天日婷婷| 91精品久久久久久久久久| 天天射综合网站| 激情小说婷婷| 五月丁香人妻| 色婷婷小说网| 亚洲超级碰| 狠狠色婷婷777| 九九九激情综合| 五五月丁香花激情综合网| 五月婷婷久久大香蕉| 99精品手机在线视频| 成人婷婷五月| 天天综合区| 精品色色网| 丁香五月影院| 五月丁花色综合网| 久久成人亚洲欧美电影| 久久五月综合| 久久99精品久久久久久噜噜| 五月色网| 婷婷,五月天,丁香,第一| 在线观看av网站| 97在线日本| 亚艹艹| 狠狠色综合久久久久| 五月丁香婷中文字幕| 无码人妻少妇色欲AV一区二区| 色九九综合| 色综合激情| 日韩性视频| 丁香婷婷六月天| www.五月婷婷久久.com| 99爱爱| 色小说婷婷五月天天天| 色五月色开心开心五月| 婷婷丁香六月| 久热只有这里有精品| 91丨九色丨东北熟女| 久草五月婷婷| 涩涩五月天| 五月天婷婷青青| 国产毛片精品一区二区色欲黄A片| 人人亚洲| 超碰婷婷五月| 婷婷九月综合| 丁香激情五月综合网| 国产亚洲精品久久久久久豆腐| 亚洲一色色色色色色色色| 婷婷色综合| 天天色伊人| 丁香情色五月| 天天日天天插| 丁香五月98| 男女啪啪视频久 9| 色噜噜狠狠色综合成人99| 九月婷婷综合| 色五月婷婷成人| 天天插综合| 久久性操| 99天天操夜夜操| 天天噜| 亚洲综合在线伊人婷| 婷婷成人五月天| 婷婷丁香激情五月天色色| AⅤ在线播放网| 天天综合精品| 中文不卡一二三区| 五月天丁香成人| 九月丁香婷婷| 任你操精品免费| 九九99在线观看视频| aV直接看| AV九九| 色五月视频无码播放| 五月丁香综合久久夜夜| 亚洲操人| WWW,五月| 韩国三级五月天婷婷。| 色就是色婷婷五月亚洲激情| 麻豆精品| 色www久视频| 色色五月天婷婷丁香| 欧韩性爱| 亚洲免费观看高清完整版AV线| 婷婷五月天成人网| 五月婷婷综合视频| 五月中旬婷婷丁香六| 97丁香五月| 97色吧| 狠狠摸狠狠摸| 日日日影院| 久久六月天| 5月丁香美女影院| 色欲丁香| 狠狠色综合网| 激情性五月天免费小说视频| 99久久99热| 婷婷五月天AV在| 亚洲精品V天堂中文字幕| 婷婷色五天| 五月婷婷综合色拍| 天天日日人| 亚洲综合成人网站| 丁香五夜激情四射夜夜夜| 五月婷婷综合网| 99激情| 五月天综合区| 五月激情网五月综合网| 天天搞夜夜叫| 五月天色色激情综合| 91丨人妻丨国产丨丝袜| 青青草原亚洲久| 99热8| 丁香五月网址| WWW.99视频| 欧美狠狠地| 天天做天天视天天谢| 伊人网啪啪| 久久综合五月天激情小说网站 | 国产亚洲成人综合| 91九九热| 另类亚洲电影| 婷婷WWW久久| 四川女人毛多水多A片| 色综合久| 99热综合| 婷婷中文字幕| 九九热视频精品| 丁香五月天之婷婷影院| 婷婷五月天天爽| 丁香五月六月激情| 色色亚卅| 99热这里只有精品1998| 99爱免费在线视频| 五月花婷婷丁香| 婷婷成人丁香色情基地30 | 91操在线视频| 五月婷婷与六月丁香图片激情| 99热这里精品| 丁XX 成人| 夜夜谢天天干| 9久国产精品| 色老久久| 四色永久成人网站| 这里只有精彩视频| 五月天激情小说| 色丁香五月婷婷| 激情第四色| 思思热在线观看| 99热91| 99综合免费视频| 开心五月综合激情网| 999久久久国产精品| 日韩淑女人妻luan伦激情精品一区二| 狠狠爱五月婷婷| 日本天堂免费99| 91.com男女操| 国产 码在线成人网站| 色五月婷婷亚洲| 激情五月天在线视频| 婷婷丁香18| 日本99热| 婷婷久久婷婷色五月| 亚洲无码激情| 91狠狠色丁香婷婷综合久久| 成人片黄网站色大片免费毛片| 五月花激情| 婷婷五月天成人| 国精产品一区一区三区免费视频| 色五月婷婷天堂| 国内久久亭亭| 另类的婷婷| www.99热最新视频8| 色播五月丁香婷婷| 狠狠插狠狠操| 看片视频在线免费日产在线看| 激情五月天婷婷| 琪琪色综合网站| 九九久久色| 亚洲色综久久五月| 青青热久精品视频在线观看| 桃色激情网| 91丨九色丨白浆秘| 成人免费120分钟啪啪| 涩丁香| 超碰无码318604| 色优久久| 色色五月天com| 大香蕉婷婷丁香视频在线| eeuus五月婷| 亚洲中文乱字字幕线在永久| 九九自拍网| 99性爱视频| 狠狠色噜噜狠狠狠狠狠色综合久久| 色噜久| 怕怕av| 99在线亚洲| 超碰免费99| 8090在线影视少妇| 亚洲午夜电影| 深爱丁香激情| 91久热| 97人碰人操| 九九干视频| 婷婷九月激情网| av人人干| 国产伦亲子伦亲子视频观看| 翔田千里 50岁 无码| 六月婷婷狠狠色在线观看| 激情欧美丁香五月| 色综合久久之分久久| 亚洲成人在线综合| 操射国产日本| 欧美顶级少妇做爰HD| www.久9| 色97综合婷婷天天色| 丁香婷婷深情五月亚洲| 老美AA片| 中文网AV| www.99热在线观看| 涩五月丝袜婷婷| 亚洲中文无码成人| 人妻激情综合| 99热99| 五月www| 色五月综合网| 97极品在线| 1010日日无码| 国产精品涩涩涩视频网站| 女同激情久久av久久| www五月天激情com| 中文字幕日产A片在线看| 久久精品五月天| 这里只有精彩视| 国产精产国品一二三在观看| 婷婷色综合| 婷婷五月综合体验看| 97 天堂| 丁香综合婷婷开心激情网| 亚洲精品大片| 国产色香蕉精品五夜婷| 成人电影丁香六月天| 五月天色色网站| 一本久道综合99| 欧美25p| 99久久超级| 色五月激情五月丁香五月婷婷啪啪综合 | 任你操精品免费| 5月婷婷激情网| 91妻人人爽人人看片| 亚洲艹网| 激情久久久| 99精品久久| 五月婷婷天堂| 久久永久视频| 91婷婷丁香| 97色97干| 六月丁香久久| 丁香五月天啪啪| 激情综合九月| 狠狠色婷婷7777久| 婷婷五月天av| 天天爽—爽| 人人草人人舔| 久久精品在线| 五月J香蕉婷婷| 伊人丁香五月| 国产毛片操B| 亚洲国产成人裸舞| 五月天婷婷无码| 日韩在线观看亚洲| 五夜丁香| 丁香婷婷色五月| 婷婷九月色| 九九精品视频免费在线| 成人在线日韩| 激情婷婷丁香色五月| 日韩成人影片网站| 久久机热/这里只有精品| 午夜福利成人AV91| 五月色丁香| 丁香五月最新地址| 六月婷婷开心| 五月噜噜| 国产亚洲色婷婷久久99精品9j| 九九热免费| 午夜日韩久久久网站| 国产亚洲色婷婷久久99精品91| 色激情五月| 激情床戏| 亚洲色婷婷99一9|| 成人va在线| 色色热| 亚洲国产成人综合| 99视频在线观看地址| 六月婷婷激情小说网| 丁香深五月婷婷| 97色色色| 久久五月天婷婷视频| 荫道BBWBBB高潮潮喷| 新伍月婷婷| 丁香五婷| 99综合| 99性感视频| 五月婷免费视频| 五月丁香免费视频| 五月婷婷中文网| 色级婷婷| 狠狠色狠狠操| 女力报到正好爱上你| 91人人操人人看| 99久久久久| 婷婷六月网| 色色色色色色色色色色色色色五月天| 丁香五月五月婷婷| 丁香月六月| 亚洲在线操| 成人免费120分钟啪啪| 婷婷久久亚洲| 开心婷婷五月激情网小说 | 婷婷日在线观看| 婷婷五月天VI| 超碰99在线观看| www.五月婷婷久久.com| 色婷婷五月综合在线| 五月天色综合| 91九色国产熟女| 五月丁香久久综合| 丁香五月婷婷亚洲色图| 色色色五月天婷婷| 亚洲成人免费电影| 色爱五月天| 色,激情五月天| 丁香五月婷婷激情蜜桃| 日韩一级片| 99热97| 伍月激情天| 综合99视频| 97在线99| 婷婷五月天AV| 99爽视频| 伊人五月天在线| 99这里只有精品8| 综合五月丁香97| 四川BBB搡BBB搡多人乱亂| 中文字幕综合| 亚洲精品午夜国产va久久成人| 五月婷婷开心深| 99视频久久久| 第四色激情网| 影院久久久| 色综合天天综合成人网| 99re在线这里只有精品视频首页| 色色色色色色综合| 五月婷色| 久久天天天| 超碰人人91| 色婷婷丁香AV综合| 五月天色婷婷基地| 亚洲精品V天堂中文字幕| 99在线精品观看99| www99在线观看视频| 婷婷五月综合色小姐小说| 亚色网站小视频| 香蕉综合在线| 久热 91| 婷婷六月丁香欧美视频在线| 99九九这里有免费视频| 人妻久久久久久久久| 超碰91在线| 怡红院 久久| 任我肏| 欧美大道不卡| 欧美日韩成人高清在线| 日本99视频精品免费播放| 五月深爱激情网| 超碰免费人| 丁香五月婷婷亚洲综合精品在线| 色激情五月天| 五月天婷婷色播综合在线| 五月天.com| 五月婷久久| 久久婷婷色| 色婷婷中文在线| 成人丁香色| 婷婷99狠狠躁天天躁中文| 色婷婷婷婷| 中文在线视频久9| 九九视频这里有精品| 国产在线网址1| 精品久久久久久久人妻| 无码人妻一区二区一牛影视| 久久久久久人妻久久久久久久久久人妻久久久 | 五月天涩涩| se婷97| 玖玖资源在线视频| 婷婷色操| 99ri在线| 免费视频舔| 丁香色婷婷| 同性gv国产精品一区二区| 操碰97| 婷婷 激情 五月| 97caop| 婷婷五月六月激情| 亚洲精品444久久久久久| 夜夜操夜夜操| 91大神操美女| 色丁香五月婷婷| 人人色性网| 99ree6| 情婷婷五月天| 成人在线日韩欧美| 日本99热| 久婷婷久草| 日韩AC在线免费观看| 九九在线这里只有精品视频| 国产精品国产| 天天干天天干天天干天天干天天干| 欧美va精品va老师va| 国产99久久久国产精品免费看| 五月天综合区| 亚洲成人中文字幕| www久久99| www.sd-xiangsu.cpm| 婷婷五月天 丁香五月天 裸体| 黄色激情五月天| www99久久| 婷婷五月花| 五月天婷婷黄色| 综合超碰熟| 婷婷九月色| 婷婷丁香水多多视频| 久久婷婷一级片| 99热在线观看| 热99精品视频观看| 91日综合欧美| 九九热精品在线| 26uuu亚洲欧美| 99久久视频| 丁香五月欧美| 思思国产99| 色婷丁香| 欧美一级a | 九月婷婷综合网| www.狠狠操| 五月天婷婷视频30| 婷婷五月天成人网| www.99.色| 欧美日韩123| 久久五月网| 伦99热| a网站免费观看| 婷婷五月天在线观看第二页| 久久婷婷视频| 性爱五月婷| 婷婷丁香十月| 日韩五月丁香| a69在线视频| 久久婷婷激情四射五月天| 五月丁香婷婷综合| 久久色亭亭五月天| 91操操操| 色婷网| 九九色插| 99色综合| 97超碰人人操| 色狠狠色噜噜AV天堂五区消防| 就是色婷婷五月亚洲色| 99啪在线视频| 亚洲V国产V欧美V久久久久久| 国产综合婷婷| 色性五月天| 丁香五月天欧洲在线| 亚洲啪啪精品| 欧美性生交XXXXX无码小说| 天堂综合久| 天天爽天天透天天爱| 日韩操人| 91精品啪| 久久人人添人人爽添人人片αV| 婷婷综合五月| 日本九婷婷| 99色看| 国庆精品久久| 99热偷拍| 国产精品国产| 日韩AV成人电影| 国产真人做爰视频免费| 九九AV| 99热综合| 26uuu另类亚洲欧美日本一| 月月AV| 久久久91| 91成人看片| 色五月色五天色情网址| 国产黄色在线观看| 五月天社区| 97资源碰碰| 天天澡天天狠天天天做| 婷婷色av| 九九热这里只有国产精品| 六月激情婷婷色| a在线观看| 黄色精品五月婷婷| 欧美在线视频9| 婷婷9月天| 欧美性猛交99久久久久99按摩| 激情深爱五月天| 91狠狠色| 男女99免费视频| 久久综合影院| 色婷婷综合影院| 99久在线精品99re8热| 婷婷五月天另类网站| 人人摸人人射| 日日夜夜青青草| 五月天伊人av| 亚洲人人96@| 五月丁香爱婷婷深深| 婷婷丁香熟妇综合网| 91超碰在线播放| 久9精品视频| 五月天激情四射网站| 影音先锋 一区| 婷婷久久婷婷| 一级二级色大片| 伊人九九热| 色婷婷国产精品综合在线观看| 99色免费| 色综合香蕉| 一本色道久久88加勒比—| 色综合偷拍| 久久精品系列| 色久女| 色五月综合激情| 99久久99久久综合| 国产乱码久久| 五月天另类综合网| 深爱丁香激情| 天天爽天天做| 色色com| 天天操婷婷| 成人片在线播放| 99热这里只有精品55| 狠狠色丁香| 777米奇影视第四色| 丁香五月天AV在线 | 五月婷六月| 婷香五月| 五月亚洲激情| 永久地址 色| 日韩1区2区| 中文字幕丰满人妻无码专区| 丁香五月天堂| 99精品偷自拍| 中文字幕人妻一区二区| 婷婷五月天精品| 黄色片区子| www.av视频xx999.com| 色综合久久伊伊婷婷五月| 综合激情深爱| 亚洲成人中心| 99碰碰| 伊人久久丁香狠狠婷婷综合香蕉| 吾爱AV导航| 亚洲在线综合| 亚洲婷婷丁香五月亚洲| 婷婷五月另类网站| 五月婷婷三级| 久久小说网| 91操在线| 国产欧美日韩性爱| 婷婷伊人久久综合| 超碰在线免费9| 午夜一区| 69久久久| www.色五月| 丁香五月成人在线| 手机旧版看人妻1025| 日韩操人| 久久资源综合| 五月天色色激情综合| 婷婷五月色网| 丁香婷婷基地| 天天色中文字幕女优AV| 色情婷婷。| 噜色精品| www.9797国产| 午夜不卡久久精品无码免费| 亚洲无码成人网| 狠狠狠婷婷五月综合| 丁香六月激情综合啪啪| 天天操天天曰| 9999热精品| 丁香婷婷综合精品六月初| 五月婷六月婷婷| 79精品视频在线观看,| 久久性都花花世界成人免费视频| 色射影院| 婷婷五月花西瓜| 俺去也综合| 一区中文字幕电影| 操人妻90p| 激情婷婷五月天| AA片在线观看视频在线播放| 色吧五月婷婷| 婷婷中文字暮| 国产激情久久| 99精品人人| 色婷婷五月天综合网| 五月婷在线观看| 国产精品A片在线| sS丁香五月婷婷| 七七色色综合| 婷婷五月天久草在线| 婷婷五月在线免费| 99色色网| 级人人91| 同性gv国产精品一区二区| 国产精品色婷婷99久久精品| 欧美在线ee日韩| 五月天国产成人| 丰满人妻一区二区三区| 久久免费少妇高潮99精品| www.激情.com.| 激情五月天网站| 久久久全国免费视频| 激情六月丁香综合| 99热这里都是精品| 99碰在线视频| 天天干天天爽天天操| 九九碰九九爱97超碰| 中文字幕九九九九| 开心五月网 | 99免费热视频| 中文字幕丰满孑伦无码专区| 丁香五月婷婷久久综合激情网 | 欧美婷婷色五月| 五月天色五月| 国产韩日亚洲美州欧亚综合在线| 九九99热久久精品66中文字幕| av网站免费在线| AV五月丁香| 亚洲综合五月天婷婷丁香| 一级精品999WWW| 裸体美女丁香五月天。| 色五月天 丁香| 六月婷婷七月丁香| 国产成人精品一区二三区熟女在线| 超碰人人色| 亚洲视频操| 欧美色偷拍| 九九婷婷网五月天| 久久久色情| 日本激情综合| 精品99*| 丁香五月综合在线播放| 国精产品一区一区三区免费视频 | 色爆五月| 亚洲久久婷婷丁香五月天| 久热无码| 91热er| 五月丁香六月激情| 亚洲色激婷| 成人精品在线观看| 亚洲人人96@| 色情婷婷| 天天爽天天日人人爱| 久久久18| 欧美激情五月天在线观看| 丁香九月婷婷| 亚洲色婷婷99一9|| 最新高清无码专区| 天天撸夜夜爽| 婷婷婷婷婷婷婷婷婷婷丁香| 天堂草在线观| 激情电影五月婷婷| 久久99精品久久只有精品| 久久99免费视屏| 无人精品在线视频| 色九九九九| 日韩高清成人| 久久99网站| 天天爽天天操| 丁香六月激情综合网| 亚洲欧美在线观看| 天天插天天| 九月丁香婷婷网| 久久机热/这里只有精品| 国产综合丁香五月天| 天天爱天天秀天天做| 五月婷婷影| 97福利视频| 成人婷婷桔色| 色婷婷很很十八禁| 亚洲激情婷婷| 91黄操| 99爱在线视频| 五月丁香成人| 日韩久久日| 91久久色| 天天射影| 666555。COm毛片| 婷婷综合五月天亚洲综合| 色婷婷四色| 五月天激情影院| 99视频久久免费视频| 五月天丁香婷婷网| 久久99热在线观看| 丁香色色色| 五月天婷婷综合网| 五月婷婷欧美激情| 亚洲乱码w在线观看| 亚洲综合在线视频| 噜噜噜色噜噜| 伊人大香蕉在线视频| 激情丁香社区| 久久五月激情网| 一区二区aV电影免费看| 婷婷色在线观看| 天天色伊人| 2021日韩无码| 婷婷天天色| 六月色国内综合| 五月丁香激情综合六月涩涩爱| 五月天婷婷综合| 亚洲丁香五月在线观看| 五月婷婷深深爱| 欧美槡BBBB槡BBB少妇| 深夜A片| 综合五月婷婷| 久久大大香| 亚洲综合另类| 狠狠色丁婷婷日日,伊人激情综合网| 亚洲天堂玖玖| 五月婷婷激情综合网| 玖玖精品资源| 久久免费操| 人妻熟女一区二区AV| 天天爽天天操| 色色婷五月天| 婷婷va| EEUSS鲁片一区二区三区| 激情综合网五月激情| 另类激情五月天。| 亚洲a片免费观看| 天天做夜夜爽| 天天日,天天插| 精品99这里有| www久久久久久| 九九热视频在线观看| 色五月激情网| 综合激情综合啪啪| 91狠狠综合网| 99色嘟嘟精品网站| 色久天| 色五月天在线观看| 日韩无码一区二区三区四区| 婷婷五月综合啪| 99久久国产宗和精品1上映| 97精品自拍视频| 丁香婷婷啪啪啪| 九九色精品| WWW、日本色丁香、co m| 日韩成人网址| 久热AA| 婷婷五月天电影在线| 99热99在线| 26uuu偷拍亚洲欧洲综合| 久久精品A片777777| 大香蕉婷婷丁香天堂AV| 色五月婷婷五月天激情综合| 久久成人性爱| 日韩一级A片黄色| 男同色五月开心五月激情五月| 97啪啪| 九九亚洲综合| 99亚州综合精品成人网| AV 3P| www.激情五月天。com| 99热国产婷婷| 碰超亚洲| 嫩草AV久久伊人妇女超级A| 婷婷视频网| 人人草人人看| 天天干天天色天天干| 婷婷五月亚洲激情| 色九月婷婷综合| 五月情涩综合婷婷| 久久婷婷六月综合国际| 91丨九色丨熟女高潮| 色射影院| 天天插天天日| 久久久久久久久人妻| 久久99热 这里有精品| 久鲁鲁色网| 九九久久99精品免费观看www| 色射7856五月天激情四射| 九九色婷婷五月天| 国产成人一区二区三区在线观看 | 成人午夜无码视频| 久久综合首页| 婷婷丁香综合| 91传媒无码人妻精| 99久久婷婷国产综合精品| 精品一二三区久久AAA片| 五月婷在线观看| 五月婷在线观看| 超碰在线免费| 婷婷综合97| 丁香五月婷婷五月天| 色在线视频网2025| 丁香六月婷婷一区二区三区| 五月天久久www| 色欲日日躁| 五月丁香六月婷婷中合网| 樱花99视频| 欧美激情五月综合| 噜噜色五月| 丁香六月婷婷一区| 丁香五月情色| 亚洲精品色色| 激情q青青草在线婷婷| 五月丁香六月色婷| 色色综合无码| 天天爱天天日| 色色色视频| 欧美色播综合在线观看| 激情网站综合五月天| 五月www| 五月婷婷,六月激情| 激情五月亚洲综合网| 五五月五月| 偷拍视频五月天| www.夜夜.com| 日日.c| 五月天天久久香| 狠狠爱婷婷| 久操热线| 日本三级日本三级99| a久久| 男同91| 九九色中文| 2022人人操人人看| 婷婷丁香九月| AV激情五月| 亚洲AV激情五月综合网| 激情综合网,婷婷五月天| 99热99这里免费的精品| 天天狠狠干| 美国十月色婷婷在线观看| 操操天堂| 婷色五月天| 免费看欧美成人A片无码| 五月桃花网综合| 加勒比久热| 91免费看片| 天天综合网、天天综合色| 五月激情婷婷开心五月| www.色五月天.com| 丁婷婷五月天在线播放| 伊人久久婷| 无码99| 综合久久激情久久| 五月激情综合性爱| 亚洲九区| 丁香六月激情综合网| 开心五月天激情网站| www热久久yy9| www.色婷婷| 九月婷婷在线视频| 七七色色综合| 九九伊人网| www.人人操人人看人人想人人摸 人人人人操,COM| 丁香五月停停av| 激情图片婷婷丁香五月| 九九在线精点品| av一级棒av| 超碰99热精品| 六月丁香视频网站| 大地资源色婷婷视频在线| 五月丁香激情综合啪啪| 亚洲色综合| 色婷婷丁香AV综合| 婷综合| 亚洲六月婷| 人妻视频在线| 国产一区二区三区影院| 91日综合欧美| 色很很96| 伊人久久五月天综合| 14色综合婷婷| 少妇大叫太大太粗太爽了A片| 国产成人亚洲综合亚洲| 五月丁香六月久久| 亚艹艹| 欧美人妻一区二区| www,99热在线观看| 狠狠丁香| 日本成人噜噜| 日日.c| 日韩欧美婷婷丁| 天天想夜夜爽天天爽| 亚洲五月色| 丁香五月天堂网| 激情五月婷婷色色| 天天弄天天爽| 5月婷婷6月六月丁香| 操操碰| 懂色av蜜臀av粉嫩av永陈冠希| 激情精品久久| 蜜桃人妻无码AV天堂三区| 中文字幕人妻熟女在线| 五月丁香在线观看99| 丁香六月婷婷综合网| 五月天伊人综合| 婷婷在线中文字幕| 成人短视频在线观看| 丁香五月激情啪啪| 婷婷六月天| 91视频精品99| 婷婷开心激情五月激情网| 涩综合婷婷| 激情五月天99色| 色五月激情综合| 色婷丁香| 婷婷色基地在线看| 五月婷婷co.m| 欧美色婷婷| 欧美性交一区二区三区| 五月综合在线婷婷图片| 97碰在线视频| 久久九九re热| 俺去也在线官网| 丁香五月天综合| 九九人人自拍| 99热日韩| 精品一二三区久久AAA片| 99日本黄站| 婷婷丁香小说| 五月久久综合| 久久99这里| 婷婷色网站| 人人爽欧美婷婷久久久五月丁香| 三十路磁力链接| 亚洲五月婷婷| 婷婷射丁香| 99热97| www.韩日视频| 五月四色婷婷| wwwss在线观看| 97啪啪| 超碰二区| 综合激情在线观看| 五月丁香婷婷潮喷中文字幕| 亚洲精品久久久无码| 就是色婷婷五月亚洲色| www.五月婷婷.com| 六月婷婷最新网址| 热成人网| 婷婷视频在线| 色播五月丁香婷婷| 色色婷婷丁香| 99er日韩| 色色五月婷| 婷婷99视频精品| 无码动漫av| 97碰在线免费观看| 这里只有精品在线观看视频| 久久久婷丁香五月| 深爱丁香激情| 无码激情AAAAA片-区区| 久久99激情| 996热| site:pzdcoin.com| 六月婷婷五月天| 久9热| 人人爱操| 日本人妻A片成人免费看片| 婷婷久久99| 欧美大香蕉视频| 久综合| 天天色丁香| 国产成人在线精品| 丁香五月区| 婷婷激情综合| 丁香五月色色| 伊人久久婷婷| 91欧美| 色情综合网| 色五月天.con| 婷婷丁香六月| 一夜福利不卡| 免费做A爰片77777| 五月色丁香婷婷中文字幕| 中文字幕无码人妻少妇免费视频 | 日韩成人电影在线播放| 任你爽精品免费视频6| 色综合九九色综合88| Av九九| 97人人射| 在线另类| 婷婷玉月丁香五月在线视频| 另类丁香五月天区图| 男人的天堂五月丁香| 伊人大蕉香| 五月婷婷导航| 大香蕉婷婷丁香视频在线| 色噜噜狠狠色综合日日| 久久视频66| 亚洲熟妇AV乱码在线观看| 美女主播野战视步页| 婷婷伊人欧美| 97色色综合| 伊人玖玖精品| 丁香桃色网| 狠狠 婷婷| 亚洲九九99精品视频在线播放| www.狠狠艹| 欧美99视频| 久草热在线视频| 色欲日日躁| 久久99网| 色五月五月婷婷| 久久草人妻| 五月婷婷丁香日韩在线| 亚洲这里只有精品| 超碰人人操人人干| 五月天婷婷激情| 夜夜做夜夜愛| 成人av观看| 丁香五月色| 在线观看玖玖资源免费观看| 丁香五月天堂网AV| 色吧五月| 婷婷五月天六月综合| 99久久婷婷综合| 激情综合网五月丁香| 九九九九九无码| 99视频日韩| www.91操| 五月婷婷五月天天| 亚洲成片在线观看| 伊人五月综合网| 久热这里只有精品视频6| 婷婷欧美激情| 天天做天天爱天天高潮| 亚洲小视频| 伊人色综合影院视频| 免费视频WWW在线观看网站| 情趣视频66| 超碰av在线| 色婷插| 亚洲天堂爱爱| 人人综合五月人人婷婷| 伊人碰碰婷婷| 99国产精品久久久久久久久久久| 五月婷婷天| 婷婷五月丁香综合亚洲 | 激情五月激情综合俺也去婷婷小说| 久草x色在线观看99| av色婷婷| 26UUU精品一区二区Com| 九月婷婷色色| 久久AAAA片一区二区| 天天综合久久| 六月丁香婷婷色综合| 无码yw| 天天色天天操天天射| 婷婷婷婷婷婷婷婷婷婷丁香| 久久久五月婷婷| 少妇大叫太大太粗太爽了A片| 深爱激情五月网| 99热日韩这里只有精品| 超碰中文字幕在线| 99热18| 日日操日日撸| 激情99。| 丁香五月欧美色综合| 99视频| 五月婷婷黄色| 婷婷爱五月天人人爱| 色婷婷五月天中文字幕| 伊人丁香五月婷婷潮吹| 日本色色色| 五月丁香综合中文| 丁香五月在线视频黑人| 婷婷五月色情天| 亚洲图色五月天| 这里只有精品视频| 色99热| 五月天成人在线播放丁香| 婷婷99狠狠躁天天躁| 色很久综合| 最近免费中文字幕大全高清大全1| 亚洲在线操| 久久这里只| 色婷婷综合中心| 久久综合激情| 月色色综合婷婷网| 伊人高清无码| 99热这里只有精品55| 99这里有精品视频| 激情五月婷在线精品| 日日天天天| 五月综合丁香婷婷| 97se在线视频| 亚洲V国产V欧美V久久久久久| 九月丁香| 婷婷成人五月天成人文学| 久久精彩视频99| 五月丁色AV| 99色网站| 亚洲一级AV在线免费播放| 午夜伊人大香蕉| 性爱久久| 天天色亚洲| 98色花堂98t.R| 人人干人人操人人摸| 丁香五月天BBw| 色国产五月| 狠狠色狠狠干|