数据采集综合实践_第八组_严涛

项目名称:福育未来

小组名称:来财

项目背景

全球正经历深刻的人口结构转型,核心特征为生育率普遍下降与"人口红利"窗口收窄。发达国家面临老龄化与劳动力萎缩的挑战,而许多发展中国家,包括传统高生育率地区,生育率也出现显著下降趋势。

聚焦福建省福州市,其人口变化呈现总体下降且区域差异显著的特点。2016至2023年间,全市出生人口从10.3万降至9.1万,但不同区县降幅悬殊。例如,核心城区鼓楼区降幅约为30%,而县级市福清市降幅高达42%。这种巨大差异表明,驱动生育行为的社会经济文化因素(如房价、教育压力、职业发展、侨乡经济、文化传统等)具有强烈的空间异质性。

项目目标:开发一套新系统,能够在县级粒度上实现高精度人口预测,并能科学融合多源数据、量化分析各类政策及区域性因素对生育决策的复杂影响。

技术路线:前端:React + React Router + ECharts 后端:Flask + MySQL + Redis 算法:本地 Qwen2.5-7B + LoRA + 4-bit 量化。系统部署在本机。

团队成员学号:

102302124严涛,102302126李坤铭,102302138林楚涵,102302136林伟杰,102302116田自豪,102302114比山布·努尔兰

项目目标:

  1. 出生人口预测 以 2015-2023 年福州市 13 区县为样本,构建"出生+政策+GDP"多变量 LSTM 模型; 县级出生人口预测 MAPE ≤ 7%,单县预测响应 < 200 ms。
  2. 政策强度量化 以 2015-2023 年政策文本为语料,关键词权重法量化政策强度(0-1); 政策-出生人口相关系数 ≥ 0.80,可解释、无 API 依赖。
  3. 经济-人口双向分析 人口 → GDP:每增加 1 万人,GDP 增加 1.83 亿元(线性回归); GDP → 出生:GDP 增速每 +1%,下年出生增加 1715 人(滞后 1-3 年)。
  4. 动态阈值警报 近 5 年出生均值 × 0.8,每年自动刷新; 警报响应 < 200 ms,公网可点。

其他参考文献

  1. 福州市统计局. (2015-2023). 福州统计年鉴[EB/OL]. https://tjj.fuzhou.gov.cn
    福建省统计局. (2015-2023). 福建省国民经济和社会发展统计公报[EB/OL]. https://tjj.fujian.gov.cn
  2. 福州市卫生健康委员会. (2015-2023). 福州市卫生健康统计公报[EB/OL]. https://wjw.fuzhou.gov.cn

码云链接
https://gitee.com/yan-tao2380465352/2025_crawl_project/tree/数据采集综合实践/

1..系统功能

image

2..算法实验日志
2.1时间序列:LSTM vs SARIMA vs Prophet

image
结论:LSTM 胜出,县级粒度可行
LSTM 核心代码:

点击查看代码
import pandas as pd
import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense, Dropout
from sklearn.preprocessing import MinMaxScaler

# 1. 读取数据(出生+政策+GDP)
df = pd.read_csv('fz_merged.csv')   # 出生/政策/GDP
data = df[['birth', 'policy', 'GDP']].values

# 2. 归一化
scaler = MinMaxScaler()
data = scaler.fit_transform(data)

# 3. 构造监督学习
def make_supervised(data, seq_len=4):
    X, y = [], []
    for i in range(seq_len, len(data)):
        X.append(data[i-seq_len:i])
        y.append(data[i, 0])   # 预测出生
    return np.array(X), np.array(y)

X, y = make_supervised(data, 4)

# 4. 构建 LSTM
model = Sequential([
    LSTM(32, return_sequences=True, input_shape=(4, 3)),
    Dropout(0.2),
    LSTM(16),
    Dense(8, activation='relu'),
    Dense(1)
])
model.compile(optimizer='adam', loss='mse')

# 5. 训练(本地 CPU 5 min)
model.fit(X, y, epochs=500, batch_size=16, verbose=1)

# 6. 保存
model.save('models/fz_lstm.h5')
2.2政策量化:关键词 vs 大模型

image
结论:关键词权重法胜出
关键词权重法代码:

点击查看代码
import re

KEYS = {
    "三孩": 0.30,
    "育儿补贴|生育补助|一次性生育奖励": 0.25,
    "产假延长|增加产假": 0.20,
    "购房优惠|落户|契税减免": 0.15,
    "托育|幼儿园减免|教育优惠": 0.10
}

def score_text(text: str) -> float:
    text = text.lower()
    score = 0.
    for k, w in KEYS.items():
        if re.search(k, text):
            score += w
    return min(score, 1.0)

# 批量打分
for file in os.listdir('data/raw'):
    if file.endswith('.txt'):
        year = int(file[:4])
        with open(f'data/raw/{file}', encoding='utf-8') as f:
            txt = f.read()
        score = score_text(txt)
        print(f"{year}: {score}")
2.3经济-人口双向模型 皮尔逊相关:0.997(强到离谱) 线性回归:每增加 1 万人,GDP 增加 1.83 亿元 滞后效应:人口滞后 1-3 年显著 反向因果:GDP 增速每 +1%,下年出生增加 1715 人 结论:人口↔GDP 双向因果成立

2.4动态阈值:近 5 年均值 × 0.8

点击查看代码
BIRTH_ALERT_THRESHOLD = int(city.iloc[-5:].mean() * 0.8)
3.结语 从“为什么出生人口在降”到“原来政策可以量化”,这段旅程让我第一次体会到:技术不是冰冷的代码,而是可以照亮生活的光。 结课不是终点,而是“技术落地”的起点。 愿我们都能用代码,点亮自己的那片天空。
posted @ 2025-12-22 15:34  浔之  阅读(26)  评论(0)    收藏  举报