功能上线 | AI Earth地球科学云平台新增机器学习类函数算子

AIEarth地球科学云平台 2023-04-27 18:36:07

机器学习类函数算子

AI Earth在用户访谈中收到了多位用户反馈,希望平台能提供机器学习相关算子能力。我们快速规划和研发,近期上线了20多类与机器学习相关的函数算子,包括常用的分类器,如随机森林、支持向量机、贝叶斯等,同时上线对分类模型精度进行评价的混淆矩阵。

/函数列表/

函数名称

函数用途

aie.Classifier.linearsvm

创建线性支持向量机分类器

aie.Classifier.decisionTree

创建决策树分类器

aie.Classifer.cart

创建CART分类器

aie.Classifer.randomForest

创建随机森林分类器

aie.Classifier.gradientTreeBoost

创建梯度提升树分类器

aie.Classifier.AdaBoost

创建自适应集成分类器

aie.Classifer.naiveBayes

创建贝叶斯分类器

aie.Classifer.train

利用样本数据对分类器进行训练

aie.Classifier.confusionMatrix

基于已经训练好的分类器,对训练样本进行再预测,获取真实结果与预测结果的混淆矩阵

aie.Image.classify

对影像进行分类

aie.FeatureCollection.classify

对FeatureCollection进行分类

aie.ConfusionMatrix

构建混淆矩阵

aie.ConfusionMatrix.accuracy

计算混淆矩阵的准确率

aie.ConfusionMatrix.consumersAccuracy

计算混淆矩阵每一类别的查全率

aie.ConfusionMatrix.fscore

计算混淆矩阵每一类别的F度量

aie.ConfusionMatrix.kappa

计算混淆矩阵的kappa系数

aie.ConfusionMatrix.producersAccuracy

计算混淆矩阵每一类别的查准率

aie.FeatureCollection.errorMatrix

基于FeatureCollection中指定的两列属性构建混淆矩阵

aie.Image.sample

从影像中获取样本点,每一个样本点将包含对应坐标点下所有波段的像元值

 

/应用案例/

平台的案例广场中提供了进行地表覆盖监督分类的应用案例,我们利用ESA地表覆盖数据作为随机采样的训练样本真值标签,对单景Sentinel-2A影像采用自适应集成分类器(aie.Classifier.adaBoost)进行地物覆盖的分类,并利用混淆矩阵进行分类精度的分析。

欢迎平台用户进行相关体验与测试。

 

 附案例代码

  • 利用ESA地表覆盖数据,作为训练样本的地物真值标签。

  • 
    # 指定研究区域
    roi = aie.Geometry.BBox(119.8679, 29.7058, 121.0332, 30.7178)
    
    # 使用ESA地表覆盖分类作为标签类别, 并将其裁剪到研究区
    lc = aie.ImageCollection('ESA_WORLD_COVER_V100').filterBounds(roi).mosaic().clip(roi)
    
    # 将ESA地表覆盖分类值重新映射到[0, 10]
    class_values = [10, 20, 30, 40, 50, 60, 70, 80, 90, 95, 100]
    remap_values = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    label = 'lc'
    lc_remap = lc.remap(class_values, remap_values).rename([label])
    
    # 选取一景S2A影像的地表辐射波段, 作为训练和预测示例
    img = aie.Image('S2A_MSIL2A_20220103T024121_N0301_R089_T51RTP_20220103T050347').select('B.*')
    
    # 指定获取样本的范围, 如果样本范围过大, 同时采样分辨率过高的话, 将导致sample函数运行时间过长
    sample_roi = aie.Geometry.BBox(120.1730, 30.1086, 120.3846, 30.2862)
    # 指定在10m分辨率下获取1000个样本点, 由于sample函数无法保证各类别样本数量均衡, 因此可自行上传训练样本
    samples = img.addBands(lc_remap).sample(sample_roi, 10, 1000)
    
    # 在训练样本中增加一列随机数, 选取80%的样本为训练样本, 选取20%的样本为验证样本
    sample = samples.randomColumn()
    training_sample = sample.filter(aie.Filter.lte('random', 0.8))
    validation_sample = sample.filter(aie.Filter.gt('random', 0.8))
    

     

  • 创建分类器,并利用随机获取的样本进行训练,同时利用混淆矩阵进行精度评估。

  • 
    # 创建自适应集成分类器,并进行训练
    trained_classifier = aie.Classifier.adaBoost(10).train(training_sample, label, img.bandNames().getInfo())
    
    # 训练集混淆矩阵包含的类别,对应class_values中的类别为[10, 30, 40, 50, 60, 70]
    train_accuracy = trained_classifier.confusionMatrix()
    print('Training error matrix:', train_accuracy.getInfo())
    print('Training overall accuracy:', train_accuracy.accuracy().getInfo())
    
    # 使用验证集对分类器进行评估
    validation = validation_sample.classify(trained_classifier)
    # 验证集混淆矩阵包含的类别,对应class_values中的类别为[10, 40, 50, 60, 70]
    validation_accuracy = validation.errorMatrix(label, 'classification')
    print('Validation error matrix:', validation_accuracy.getInfo())
    print('Validation accuracy:', validation_accuracy.accuracy().getInfo())
    
  • 对Sentinel-2影像进行分类,并将结果可视化

  • 
    # 使用训练好的分类器对影像进行分类
    img_classified = img.classify(trained_classifier)
    
    color = ['#006400' ,'#ffbb22', '#ffff4c', '#f096ff', '#fa0000', '#b4b4b4',
             '#f0f0f0', '#0064c8', '#0096a0', '#00cf75', '#fae6a0']
    map = aie.Map(
        center=roi.getCenter(),
        height=800,
        zoom=9
    )
    # 待分类影像真彩色图层
    map.addLayer(
        img,
        {
        'bands': ['B4', 'B3', 'B2'],
        'min': 200,
        'max': 1800
        },
        'True Color (432)',
        bounds=roi.getBounds()
    )
    # 自适应集成分类图层
    map.addLayer(
        img_classified,
        {
        'bands': 'classification',
        'min': 0,
        'max': 10,
        'palette': color
        },
        'aie_classification',
        bounds=roi.getBounds()
    )
    map
    

     

...全文
238 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

32

社区成员

发帖
与我相关
我的任务
社区描述
基于达摩院在深度学习、计算机视觉、地理空间分析等方向上的技术积累,结合阿里云强大算力支撑,提供多源遥感对地观测数据的云计算分析服务,用数据感知地球世界,让AI助力科学研究。
阿里云云计算图像处理 技术论坛(原bbs) 浙江省·杭州市
社区管理员
  • AI Earth地球科学云平台
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧