fix: show WU rounding intervals in probability, weight DEB 70% over ensemble 30%
This commit is contained in:
+8
-6
@@ -179,11 +179,13 @@ def analyze_weather_trend(weather_data, temp_symbol, city_name=None):
|
|||||||
# 用 P10/P90 反推标准差: P10 = median - 1.28*sigma, P90 = median + 1.28*sigma
|
# 用 P10/P90 反推标准差: P10 = median - 1.28*sigma, P90 = median + 1.28*sigma
|
||||||
sigma = (ens_p90 - ens_p10) / 2.56
|
sigma = (ens_p90 - ens_p10) / 2.56
|
||||||
if sigma < 0.1: sigma = 0.1 # 防止除以零
|
if sigma < 0.1: sigma = 0.1 # 防止除以零
|
||||||
mu = ens_median # 以集合中位数为中心
|
|
||||||
|
|
||||||
# 如果 DEB 融合值或多模型均值存在,用它们微调中心
|
# 分布中心:以 DEB/多模型中位数为主锚(权重 70%),集合中位数为辅(30%)
|
||||||
|
# 因为集合中位数经常偏保守,不如确定性模型和 DEB 融合值可靠
|
||||||
if forecast_median is not None:
|
if forecast_median is not None:
|
||||||
mu = (ens_median + forecast_median) / 2 # 取集合中位数和模型中位数的均值
|
mu = forecast_median * 0.7 + ens_median * 0.3
|
||||||
|
else:
|
||||||
|
mu = ens_median
|
||||||
|
|
||||||
# 简化的正态 CDF (不依赖 scipy)
|
# 简化的正态 CDF (不依赖 scipy)
|
||||||
def _norm_cdf(x, m, s):
|
def _norm_cdf(x, m, s):
|
||||||
@@ -203,12 +205,12 @@ def analyze_weather_trend(weather_data, temp_symbol, city_name=None):
|
|||||||
if total_p > 0:
|
if total_p > 0:
|
||||||
probs = {k: v / total_p for k, v in probs.items()}
|
probs = {k: v / total_p for k, v in probs.items()}
|
||||||
|
|
||||||
# 格式化输出(按概率从高到低排列)
|
# 格式化输出(按概率从高到低排列,显示区间)
|
||||||
sorted_probs = sorted(probs.items(), key=lambda x: x[1], reverse=True)
|
sorted_probs = sorted(probs.items(), key=lambda x: x[1], reverse=True)
|
||||||
prob_parts = [f"{int(t)}{temp_symbol}({p*100:.0f}%)" for t, p in sorted_probs[:4]]
|
prob_parts = [f"{int(t)}{temp_symbol} [{t-0.5}~{t+0.5}) {p*100:.0f}%" for t, p in sorted_probs[:4]]
|
||||||
if prob_parts:
|
if prob_parts:
|
||||||
prob_str = " | ".join(prob_parts)
|
prob_str = " | ".join(prob_parts)
|
||||||
insights.append(f"🎲 <b>结算概率</b>:{prob_str}")
|
insights.append(f"🎲 <b>结算概率</b> (μ={mu:.1f}):{prob_str}")
|
||||||
ai_features.append(f"🎲 数学概率分布:{prob_str}")
|
ai_features.append(f"🎲 数学概率分布:{prob_str}")
|
||||||
|
|
||||||
# === 实测已超预报 & 趋势输出 ===
|
# === 实测已超预报 & 趋势输出 ===
|
||||||
|
|||||||
Reference in New Issue
Block a user