分类算法,
这里以随机森林算法为例:
以土地利用分类为例,简单的采用温度和高程作为模型的输入变量,采用随机森林算法进行土地利用分类.
var tem=ee.ImageCollection("OREGONSTATE/PRISM/AN81d")
.filterDate('2016-08-01','2016-09-01')
.first().select('tmax')
var elev=ee.Image("CGIAR/SRTM90_V4")
var lucc=ee.ImageCollection("MODIS/006/MCD12Q1")
.filterDate('2016-01-01','2016-12-31').first()
.select('LC_Type1').rename('lucc')
var true_image=elev.addBands(tem).addBands(lucc)
print(tem)
print(elev)
print(true_image)
var train_test=true_image.sample({
region:geometry,
scale:90,
numPixels:10000,
geometries:true,
seed:2
})
var random=train_test.randomColumn()
var training_data=random.filter(ee.Filter.gte('random',0.2))
var validation_data=random.filter(ee.Filter.lt('random',0.2))
print(training_data)
print(validation_data)
var classifier=ee.Classifier.smileRandomForest(10).train({
features:training_data,
classProperty:'lucc',
inputProperties:['elevation','tmax']
})
var classified=true_image.select(['elevation','tmax']).classify(classifier)
Map.addLayer(lucc,{},'lucc')
Map.addLayer(classified.clip(geometry),{},'pred_landcover')
var dict = classifier.explain();
var variable_importance = ee.Feature(null, ee.Dictionary(dict).get('importance'));
var chart =
ui.Chart.feature.byProperty(variable_importance)
.setChartType('ColumnChart')
.setOptions({
title: 'Random Forest Variable Importance',
legend: {position: 'none'},
hAxis: {title: 'Bands'},
vAxis: {title: 'Importance'}
});
print(chart);
print(validation_data.classify(classifier))
print('train_acc',classifier.confusionMatrix().accuracy())
print('test_acc',validation_data.classify(classifier).errorMatrix('lucc','classification').accuracy())
其中,geometry为自己绘制的美国的一个区域。
变量重要性结果如下:
、
精度评估:
另外,随机森林算法的回归模型,资源详见https://download.csdn.net/download/qq_33657870/19403119。或者私聊。