python随机森林遥感图像分类代码
时间: 2024-08-16 19:02:23 浏览: 83
Python中随机森林的实现通常使用scikit-learn库,而遥感图像分类的代码实现通常需要使用到scikit-image库和GDAL库。下面是一个简单的随机森林遥感图像分类的代码示例:
```
# 导入库
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
from skimage import io
from osgeo import gdal
import numpy as np
# 读取图像和标签数据
image = io.imread('image.tif')
labels = gdal.Open('labels.tif').ReadAsArray()
# 获取图像和标签的形状信息
rows, cols, bands = image.shape
num_samples = rows * cols
# 将图像展平为二维数组
image_2d = image.reshape((num_samples, bands))
# 将标签数据展平为一维数组
labels_1d = labels.ravel()
# 随机选择一部分样本作为训练集,其余作为测试集
train_indices = np.random.choice(num_samples, int(num_samples * 0.7), replace=False)
test_indices = np.setdiff1d(np.arange(num_samples), train_indices)
# 构建随机森林模型并训练
rf = RandomForestClassifier(n_estimators=100)
rf.fit(image_2d[train_indices], labels_1d[train_indices])
# 预测测试集标签并计算准确率
predicted_labels = rf.predict(image_2d[test_indices])
accuracy = accuracy_score(labels_1d[test_indices], predicted_labels)
print('Accuracy:', accuracy)
```
该代码首先使用skimage库和GDAL库读取遥感图像和标签数据,并将图像和标签数据展平为二维和一维数组。然后,随机选择一部分样本作为训练集,其余作为测试集,并使用scikit-learn库中的RandomForestClassifier类构建随机森林模型并训练。最后,使用模型预测测试集标签,并计算准确率。
阅读全文