對于形狀為 ( 10000 , 1 , 304 ) (10000, 1, 304) (10000,1,304)的三維數據,若需使用scipy.stats.ks_2samp
進行KS檢驗,可按以下步驟處理:
- 數據降維
KS檢驗要求輸入為一維數組,需將三維數據展平或按特定維度聚合:
? 方法1:沿最后一維展開
將每個樣本的304個特征視為獨立數據點(適用于特征獨立場景):
import numpy as np
data_reshaped = original_data.reshape(-1) # 形狀變為(10000*1*304,)
? 方法2:按樣本聚合
若需保留樣本獨立性,可對每個樣本的304個特征計算統計量(如均值、最大值),生成一維數組:
data_aggregated = original_data.mean(axis=2).flatten() # 形狀(10000,)
- 分維度檢驗
若需比較不同特征維度的分布差異,可逐維度進行KS檢驗:
from scipy import stats
results = []
for i in range(304):dim_data = original_data[:, 0, i] # 提取第i個特征維度ks_result = stats.ks_2samp(dim_data, reference_data) # 與參考數據比較results.append(ks_result)
- 注意事項
? 數據連續性:KS檢驗適用于連續分布,離散數據需謹慎。
? 樣本量:大樣本易導致p值敏感,需結合效應量(如D值)判斷實際差異。
? 缺失值:需提前處理NaN值,否則會報錯。
- 替代方案
若數據為多變量分布,可考慮:
? 多變量KS檢驗(如基于距離的檢驗)。
? 單變量漂移檢測方法(如Jensen-Shannon距離、海林格距離)。
如需進一步分析數據漂移或模型性能,建議結合可視化(如CDF曲線)輔助判斷。