You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提升Python中Bi-LSTM神经网络的土地利用分类准确率?

土地利用类型预测模型准确率提升方案

问题背景

我尝试构建模型预测地块的土地利用类型,但训练后准确率仅约50%,数值过低。作为神经网络新手,需要针对性的优化建议。

使用CSV格式的地块历史数据,选取mean_B04、mean_B08、NDVI、H_NDVI这4列作为特征,目标是预测9种土地利用类型(0-8)。

现有代码实现

# 划分训练与分类数据
df1 = df[['mean_B04','mean_B08','NDVI','H_NDVI']] 
df2 = df['Num_uso'] 
Data_array = np.array(df1) 
Uso_SP_array = np.array(df2) 
# 划分训练集与测试集
xTrain, xTest, yTrain, yTest = train_test_split(Data_array, Uso_SP_array, test_size=0.15, random_state=42)

model = Sequential() 
model.add(Bidirectional(LSTM(100, return_sequences=True, activation='tanh'), input_shape=(Filas_entrada,Canales_entrada,))) 
model.add(Bidirectional(LSTM(100, activation='tanh'))) 
model.add(Dropout(0.5)) 
model.add(Dense(50, activation='relu')) 
model.add(Dense(9,activation='softmax'))

model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy']) 

# 训练模型
model.fit(xTrain, yTrain, epochs=1, batch_size=24, validation_split=0.1)

# 获取可预测类别列表
ListOfSPusos = df_Train['Num_uso'] 
SPUsos = ListOfSPusos.drop_duplicates() 
SPUsos = SPUsos.sort_values() 
SPUsos = SPUsos.reset_index(drop=True)

# 测试集预测
yTestPredicted = model.predict(xTest) 
y_classes = SPUsos[np.argmax(yTestPredicted, axis = 1)]

针对性优化建议

1. 数据层面优化

  • 特征扩充:当前仅用4个特征,可尝试添加衍生特征,比如NDVI的差值/变化率、mean_B04与mean_B08的比值,若有地形数据(海拔、坡度)或多时段观测数据也可加入,丰富特征维度。
  • 数据标准化:LSTM对输入数据尺度敏感,必须用StandardScaler或MinMaxScaler对特征做归一化/标准化处理,消除量纲差异对模型的影响。
  • 类别平衡检查:9种土地利用类型大概率存在样本不平衡问题,比如某类样本占比过高导致模型偏向多数类。先通过混淆矩阵查看各分类的准确率,针对少数类可采用SMOTE过采样、欠采样,或在model.fit中设置class_weight参数分配类别权重。
  • 输入维度适配:LSTM要求输入为三维结构(样本数, 时间步长, 特征数),当前Data_array是二维数组,需确认Filas_entrada和Canales_entrada的设置是否符合时间序列逻辑。如果没有时间序列数据,LSTM并非最优选择,可换用MLP(多层感知机)尝试。

2. 模型结构与训练优化

  • 简化模型复杂度:当前双向LSTM合计200个单元,对于仅4个特征的任务可能过拟合。可尝试减少LSTM单元数(比如双向各32/64),或直接简化为单层LSTM甚至MLP结构。
  • 增加训练轮次:当前仅训练1个epoch,模型远未收敛。逐步将epochs提升至20-50,同时加入EarlyStopping回调函数监控验证集损失,连续3-5轮无下降则停止训练,避免过拟合。
  • 优化器与学习率调整:默认Adam学习率可能不适配当前任务,可尝试调整学习率至0.0001或0.001,或换用RMSprop优化器测试效果。
  • 增强正则化:除Dropout外,可在Dense层添加kernel_regularizer=l2(0.01)进一步约束模型权重,减少过拟合风险。

3. 训练流程优化

  • 独立验证集划分:当前用validation_split=0.1从训练集拆分验证集,建议单独划分独立的验证集,确保训练、验证、测试集完全分离,避免数据泄露。
  • 多维度评估:除了准确率,重点查看混淆矩阵、F1-score、召回率等指标,明确模型在哪些类别上表现差,针对性调整优化方向。

内容的提问来源于stack exchange,提问作者David Cerezo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 22:12:10