lansat5随机森林提取土地利用代码
时间: 2023-06-17 07:07:25 浏览: 158
随机森林代码
以下是使用随机森林提取土地利用的 Python 代码:
``` python
# 导入必要的库
import os
import numpy as np
import pandas as pd
from osgeo import gdal
from sklearn.ensemble import RandomForestClassifier
# 设置工作目录和文件路径
os.chdir("D:/data")
img_path = "Landsat5.tif"
label_path = "label.tif"
# 读取影像和标签数据
img_ds = gdal.Open(img_path)
label_ds = gdal.Open(label_path)
img = img_ds.ReadAsArray().transpose(1, 2, 0)
label = label_ds.ReadAsArray()
# 数据预处理
rows, cols, bands = img.shape
X = img.reshape(rows*cols, bands)
y = label.reshape(rows*cols)
# 训练随机森林分类器
clf = RandomForestClassifier(n_estimators=100, max_depth=10)
clf.fit(X, y)
# 预测土地利用类型
pred = clf.predict(X)
# 将预测结果转换为图像格式
pred_img = pred.reshape(rows, cols)
# 输出预测结果
driver = gdal.GetDriverByName("GTiff")
output_ds = driver.Create("pred.tif", cols, rows, 1, gdal.GDT_Byte)
output_ds.SetProjection(img_ds.GetProjection())
output_ds.SetGeoTransform(img_ds.GetGeoTransform())
output_ds.GetRasterBand(1).WriteArray(pred_img)
output_ds.FlushCache()
output_ds = None
```
其中,`Landsat5.tif`是Landsat 5影像数据,`label.tif`是对应的土地利用标签数据。预测结果保存在`pred.tif`中。
阅读全文