31.机器学习应用-决策树多元分类算法

1、决策树多元分类介绍

       决策树多元分类(DecisionTree Multi Class Classfication),预测在多个特征条件不同组合下的准确率。

 

2、场景假设

       “森林覆盖植被”问题。

       海拔(Elevation),方位(Aspect),斜率(Slope),水源的垂直距离,荒野分类,水源的水平距离,土壤分类都会影响植被的生长。

字段 说明
特征(feature) 海拔(Elevation),方位(Aspect),斜率(Slope),水源的垂直距离,荒野分类,水源的水平距离,土壤分类
标签(Label)

森林覆盖分类:

1-云杉/冷杉(Spruce/Fir)

2-美国黑松(Lodgepole Pine)

3-北美黄松(Ponderosa Pine)

4-杨木/柳树(Cottonwood/Willow)

5-山杨(Aspen)

6-花旗松(Douglas-fir)

7-高山矮曲林(Krummholz)

2、搜集数据

     http://archive.ics.uci.edu/ml/machine-learning-databases/covtype/covtype.info

    其他数据集:http://archive.ics.uci.edu/ml/index.php

31.机器学习应用-决策树多元分类算法_第1张图片

 

31.机器学习应用-决策树多元分类算法_第2张图片

3、基于MLLIB的实现

 

# -*- coding: UTF-8 -*-
import sys
from time import time
import pandas as pd
import matplotlib.pyplot as plt
from pyspark import SparkConf, SparkContext
from pyspark.mllib.tree import DecisionTree
from pyspark.mllib.regression import LabeledPoint
from pyspark.mllib.evaluation import MulticlassMetrics


def SetLogger( sc ):
    logger = sc._jvm.org.apache.log4j
    logger.LogManager.getLogger("org"). setLevel( logger.Level.ERROR )
    logger.LogManager.getLogger("akka").setLevel( logger.Level.ERROR )
    logger.LogManager.getRootLogger().setLevel(logger.Level.ERROR)

def SetPath(sc):
    global Path
    if sc.master[0:5]=="local" :
        Path="file:/home/hduser/pythonwork/PythonProject/"
    else:   
        Path="hdfs://master:9000/user/hduser/"
#如果要在cluster模式运行(hadoop yarn 或Spark Stand alone),请按照书上的说明,先把文件上传到HDFS目录
    
def get_mapping(rdd, idx):
    return rdd.map(lambda fields: fields[idx]).distinct().zipWithIndex().collectAsMap()

def extract_label(record):
    label=(record[-1])
    return float(label)-1

def convert_float(x):
    return (0 if x=="?" else float(x))

def extract_features(record,featureEnd):
    numericalFeatures=[convert_float(field)  for  field in record[0: featureEnd]]
    return  numericalFeatures



def PrepareData(sc): 
    #----------------------1.导入并转换数据-------------
    print("开始导入数据...")
    rawData = sc.textFile(Path+"data/covtype.data")
    print("共计:" + str(rawData.count()) + "项")
    lines = rawData.map(lambda x: x.split(","))
    #----------------------2.建立训练评估所需数据 RDD[LabeledPoint]-------------
    labelpointRDD = lines.map(lambda r: LabeledPoint(
                                                     extract_label(r), 
                                                     extract_features(r,len(r) - 1)))
    #----------------------3.以随机方式将数据分为3个部分并且返回-------------
    (trainData, validationData, testData) = labelpointRDD.randomSplit([8, 1, 1])
    print("将数据分trainData:" + str(trainData.count())+\
             "   validationData:" + str(validationData.count()) +\
             "   testData:" + str(testData.count()))
    print labelpointRDD.first()
    return (trainData, validationData, testData) 

def PredictData(sc,model): 
    #----------------------1.导入并转换数据-------------
    rawData = sc.textFile(Path+"data/covtype.data")
    print("共计:" + str(rawData.count()) + "项")
    print("建立训练评估所需数据 RDD...")
    lines = rawData.map(lambda x: x.split(","))
    #----------------------2.建立预测所需数据 RDD[LabeledPoint]-------------
    labelpointRDD = lines.map(lambda r: LabeledPoint(
                              extract_label(r), extract_features(r,len(r) - 1)))
    #----------------------3.进行预测并显示结果-------------
    for lp in labelpointRDD.take(100):
        predict = model.predict(lp.features)
        label=lp.label
        features=lp.features
        result = ("正确" if  (label == predict) else "错误")
        print("土地条件:海拔:" + str(features[0]) + 
                 " 方位:" + str(features[1]) + 
                 " 斜率:" + str(features[2]) + 
                 " 水源垂直距离:" + str(features[3]) + 
                 " 水源水平距离:" + str(features[4]) + 
                 " 9点时阴影:" + str(features[5]) + 
                 "....==>预测:" + str(predict) +
                 " 实际:" + str(label) + "结果:" + result)
 


def evaluateModel(model, validationData):
    score = model.predict(validationData.map(lambda p: p.features))
    scoreAndLabels=score.zip(validationData.map(lambda p: p.label))
    metrics = MulticlassMetrics(scoreAndLabels)
    accuracy = metrics.accuracy
    return( accuracy)
 

def trainEvaluateModel(trainData,validationData,
                                          impurityParm, maxDepthParm, maxBinsParm):
    startTime = time()
    model = DecisionTree.trainClassifier(trainData,\
                                    numClasses=7, categoricalFeaturesInfo={}, \
                                    impurity=impurityParm, 
                                    maxDepth=maxDepthParm, 
                                    maxBins=maxBinsParm)
    accuracy = evaluateModel(model, validationData)
    duration = time() - startTime
    print    "训练评估:使用参数" + \
                " impurityParm= %s"%impurityParm+ \
                " maxDepthParm= %s"%maxDepthParm+ \
                " maxBinsParm = %d."%maxBinsParm + \
                 " 所需时间=%d"%duration + \
                 " 结果accuracy = %f " % accuracy 
    return (accuracy,duration, impurityParm, maxDepthParm, maxBinsParm,model)




def evalParameter(trainData, validationData, evaparm,impurityList, maxDepthList, maxBinsList):
    metrics = [trainEvaluateModel(trainData, validationData,  impurity,numIter,  maxBins  ) 
               for impurity in impurityList for numIter in maxDepthList  for maxBins in maxBinsList ]
    if evaparm=="impurity":
        IndexList=impurityList[:]
    elif evaparm=="maxDepth":
        IndexList=maxDepthList[:]
    elif evaparm=="maxBins":
        IndexList=maxBinsList[:]
    df = pd.DataFrame(metrics,index=IndexList,
               columns=['accuracy', 'duration','impurity', 'maxDepth', 'maxBins','model'])
    
    showchart(df,evaparm,'accuracy','duration',0.6,1.0 )
    
    
def showchart(df,evalparm ,barData,lineData,yMin,yMax):
    ax = df[barData].plot(kind='bar', titl =evalparm,figsize=(10,6),legend=True, fontsize=12)
    ax.set_xlabel(evalparm,fontsize=12)
    ax.set_ylim([yMin,yMax])
    ax.set_ylabel(barData,fontsize=12)
    ax2 = ax.twinx()
    ax2.plot(df[[lineData ]].values, linestyle='-', marker='o', linewidth=2.0,color='r')
    plt.show()
    
    
def evalAllParameter(training_RDD, validation_RDD, impurityList, maxDepthList, maxBinsList):    
    metrics = [trainEvaluateModel(trainData, validationData,  impurity,numIter,  maxBins  ) 
                        for impurity in impurityList for numIter in maxDepthList  for maxBins in maxBinsList ]
    Smetrics = sorted(metrics, key=lambda k: k[0], reverse=True)
    bestParameter=Smetrics[0]
    print("调校后最佳参数:impurity:" + str(bestParameter[2]) + 
             "  ,maxDepth:" + str(bestParameter[3]) + 
            "  ,maxBins:" + str(bestParameter[4])   + 
            "  ,结果accuracy = " + str(bestParameter[0]))
    return bestParameter[5]

def  parametersEval(training_RDD, validation_RDD):
    print("----- 评估impurity参数使用 ---------")
    evalParameter(trainData, validationData,"impurity", 
                              impurityList=["gini", "entropy"],   
                              maxDepthList=[10],  
                              maxBinsList=[10 ])  

    print("----- 评估maxDepth参数使用 ---------")
    evalParameter(trainData, validationData,"maxDepth", 
                              impurityList=["gini"],                    
                              maxDepthList=[3, 5, 10, 15, 20, 25],    
                              maxBinsList=[10])   

    print("----- 评估maxBins参数使用 ---------")
    evalParameter(trainData, validationData,"maxBins", 
                              impurityList=["gini"],      
                              maxDepthList =[10],        
                              maxBinsList=[3, 5, 10, 50, 100, 200 ])
    


def CreateSparkContext():
    sparkConf = SparkConf()                                                       \
                         .setAppName("RunDecisionTreeBinary")                         \
                         .set("spark.ui.showConsoleProgress", "false") 
    sc = SparkContext(conf = sparkConf)
    print ("master="+sc.master)    
    SetLogger(sc)
    SetPath(sc)
    return (sc)

if __name__ == "__main__":
    print("RunDecisionTreeMulti")
    sc=CreateSparkContext()
    print("==========数据准备阶段===============")
    (trainData, validationData, testData) =PrepareData(sc)
    trainData.persist(); validationData.persist(); testData.persist()
    print("==========训练评估阶段===============")
    (AUC,duration, impurityParm, maxDepthParm, maxBinsParm,model)= \
        trainEvaluateModel(trainData, validationData, "entropy", 15,50)
    #if (len(sys.argv) == 2) and (sys.argv[1]=="-e"):
    #    parametersEval(trainData, validationData)
    #elif   (len(sys.argv) == 2) and (sys.argv[1]=="-a"): 
    print("-----所有参数训练评估找出最好的参数组合---------")  
    model=evalAllParameter(trainData, validationData,
                          ["gini", "entropy"],
                          [3, 5, 10, 15],
                          [3, 5, 10, 50 ])
                
    print("==========测试阶段===============")
    accuracy = evaluateModel(model, testData)
    print("使用test Data测试最佳模型,结果 accuracy:" + str(accuracy))
    print("==========预测数据===============")
    PredictData(sc, model)
    #print   model.toDebugString()

     

    
19/06/01 10:15:07 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
]0;IPython: pythonwork/PythonProjectRunDecisionTreeMulti
master=spark://master:7077
==========数据准备阶段===============
开始导入数据...
共计:581012项
将数据分trainData:465004   validationData:58086   testData:57922
(4.0,[2596.0,51.0,3.0,258.0,0.0,510.0,221.0,232.0,148.0,6279.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0])
==========训练评估阶段===============
训练评估:使用参数 impurityParm= entropy maxDepthParm= 15 maxBinsParm = 50. 所需时间=71 结果accuracy = 0.855473 
-----所有参数训练评估找出最好的参数组合---------
训练评估:使用参数 impurityParm= gini maxDepthParm= 3 maxBinsParm = 3. 所需时间=50 结果accuracy = 0.661709 
训练评估:使用参数 impurityParm= gini maxDepthParm= 3 maxBinsParm = 5. 所需时间=50 结果accuracy = 0.678460 
训练评估:使用参数 impurityParm= gini maxDepthParm= 3 maxBinsParm = 10. 所需时间=49 结果accuracy = 0.672262 
训练评估:使用参数 impurityParm= gini maxDepthParm= 3 maxBinsParm = 50. 所需时间=51 结果accuracy = 0.675671 
训练评估:使用参数 impurityParm= gini maxDepthParm= 5 maxBinsParm = 3. 所需时间=57 结果accuracy = 0.687446 
训练评估:使用参数 impurityParm= gini maxDepthParm= 5 maxBinsParm = 5. 所需时间=47 结果accuracy = 0.701288 
训练评估:使用参数 impurityParm= gini maxDepthParm= 5 maxBinsParm = 10. 所需时间=50 结果accuracy = 0.696967 
训练评估:使用参数 impurityParm= gini maxDepthParm= 5 maxBinsParm = 50. 所需时间=46 结果accuracy = 0.703388 
训练评估:使用参数 impurityParm= gini maxDepthParm= 10 maxBinsParm = 3. 所需时间=58 结果accuracy = 0.732603 
训练评估:使用参数 impurityParm= gini maxDepthParm= 10 maxBinsParm = 5. 所需时间=60 结果accuracy = 0.761612 
训练评估:使用参数 impurityParm= gini maxDepthParm= 10 maxBinsParm = 10. 所需时间=56 结果accuracy = 0.774765 
训练评估:使用参数 impurityParm= gini maxDepthParm= 10 maxBinsParm = 50. 所需时间=55 结果accuracy = 0.776676 
训练评估:使用参数 impurityParm= gini maxDepthParm= 15 maxBinsParm = 3. 所需时间=45 结果accuracy = 0.778208 
训练评估:使用参数 impurityParm= gini maxDepthParm= 15 maxBinsParm = 5. 所需时间=46 结果accuracy = 0.815601 
训练评估:使用参数 impurityParm= gini maxDepthParm= 15 maxBinsParm = 10. 所需时间=46 结果accuracy = 0.844059 
训练评估:使用参数 impurityParm= gini maxDepthParm= 15 maxBinsParm = 50. 所需时间=46 结果accuracy = 0.849361 
训练评估:使用参数 impurityParm= entropy maxDepthParm= 3 maxBinsParm = 3. 所需时间=47 结果accuracy = 0.658024 
训练评估:使用参数 impurityParm= entropy maxDepthParm= 3 maxBinsParm = 5. 所需时间=44 结果accuracy = 0.664411 
训练评估:使用参数 impurityParm= entropy maxDepthParm= 3 maxBinsParm = 10. 所需时间=48 结果accuracy = 0.670196 
训练评估:使用参数 impurityParm= entropy maxDepthParm= 3 maxBinsParm = 50. 所需时间=48 结果accuracy = 0.669129 
训练评估:使用参数 impurityParm= entropy maxDepthParm= 5 maxBinsParm = 3. 所需时间=43 结果accuracy = 0.691647 
训练评估:使用参数 impurityParm= entropy maxDepthParm= 5 maxBinsParm = 5. 所需时间=43 结果accuracy = 0.695865 
训练评估:使用参数 impurityParm= entropy maxDepthParm= 5 maxBinsParm = 10. 所需时间=50 结果accuracy = 0.693145 
训练评估:使用参数 impurityParm= entropy maxDepthParm= 5 maxBinsParm = 50. 所需时间=45 结果accuracy = 0.701477 
训练评估:使用参数 impurityParm= entropy maxDepthParm= 10 maxBinsParm = 3. 所需时间=46 结果accuracy = 0.723737 
训练评估:使用参数 impurityParm= entropy maxDepthParm= 10 maxBinsParm = 5. 所需时间=54 结果accuracy = 0.758393 
训练评估:使用参数 impurityParm= entropy maxDepthParm= 10 maxBinsParm = 10. 所需时间=45 结果accuracy = 0.764091 
训练评估:使用参数 impurityParm= entropy maxDepthParm= 10 maxBinsParm = 50. 所需时间=54 结果accuracy = 0.775454 
训练评估:使用参数 impurityParm= entropy maxDepthParm= 15 maxBinsParm = 3. 所需时间=54 结果accuracy = 0.769067 
训练评估:使用参数 impurityParm= entropy maxDepthParm= 15 maxBinsParm = 5. 所需时间=57 结果accuracy = 0.819767 
训练评估:使用参数 impurityParm= entropy maxDepthParm= 15 maxBinsParm = 10. 所需时间=57 结果accuracy = 0.841597 
训练评估:使用参数 impurityParm= entropy maxDepthParm= 15 maxBinsParm = 50. 所需时间=63 结果accuracy = 0.855473 
调校后最佳参数:impurity:entropy  ,maxDepth:15  ,maxBins:50  ,结果accuracy = 0.855472919464
==========测试阶段===============
使用test Data测试最佳模型,结果 accuracy:0.859310797279
==========预测数据===============
共计:581012项
建立训练评估所需数据 RDD...
土地条件:海拔:2596.0 方位:51.0 斜率:3.0 水源垂直距离:258.0 水源水平距离:0.0 9点时阴影:510.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2590.0 方位:56.0 斜率:2.0 水源垂直距离:212.0 水源水平距离:-6.0 9点时阴影:390.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2804.0 方位:139.0 斜率:9.0 水源垂直距离:268.0 水源水平距离:65.0 9点时阴影:3180.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2785.0 方位:155.0 斜率:18.0 水源垂直距离:242.0 水源水平距离:118.0 9点时阴影:3090.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2595.0 方位:45.0 斜率:2.0 水源垂直距离:153.0 水源水平距离:-1.0 9点时阴影:391.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2579.0 方位:132.0 斜率:6.0 水源垂直距离:300.0 水源水平距离:-15.0 9点时阴影:67.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2606.0 方位:45.0 斜率:7.0 水源垂直距离:270.0 水源水平距离:5.0 9点时阴影:633.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2605.0 方位:49.0 斜率:4.0 水源垂直距离:234.0 水源水平距离:7.0 9点时阴影:573.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2617.0 方位:45.0 斜率:9.0 水源垂直距离:240.0 水源水平距离:56.0 9点时阴影:666.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2612.0 方位:59.0 斜率:10.0 水源垂直距离:247.0 水源水平距离:11.0 9点时阴影:636.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2612.0 方位:201.0 斜率:4.0 水源垂直距离:180.0 水源水平距离:51.0 9点时阴影:735.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2886.0 方位:151.0 斜率:11.0 水源垂直距离:371.0 水源水平距离:26.0 9点时阴影:5253.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2742.0 方位:134.0 斜率:22.0 水源垂直距离:150.0 水源水平距离:69.0 9点时阴影:3215.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2609.0 方位:214.0 斜率:7.0 水源垂直距离:150.0 水源水平距离:46.0 9点时阴影:771.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2503.0 方位:157.0 斜率:4.0 水源垂直距离:67.0 水源水平距离:4.0 9点时阴影:674.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2495.0 方位:51.0 斜率:7.0 水源垂直距离:42.0 水源水平距离:2.0 9点时阴影:752.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2610.0 方位:259.0 斜率:1.0 水源垂直距离:120.0 水源水平距离:-1.0 9点时阴影:607.0....==>预测:1.0 实际:4.0结果:错误
土地条件:海拔:2517.0 方位:72.0 斜率:7.0 水源垂直距离:85.0 水源水平距离:6.0 9点时阴影:595.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2504.0 方位:0.0 斜率:4.0 水源垂直距离:95.0 水源水平距离:5.0 9点时阴影:691.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2503.0 方位:38.0 斜率:5.0 水源垂直距离:85.0 水源水平距离:10.0 9点时阴影:741.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2501.0 方位:71.0 斜率:9.0 水源垂直距离:60.0 水源水平距离:8.0 9点时阴影:767.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2880.0 方位:209.0 斜率:17.0 水源垂直距离:216.0 水源水平距离:30.0 9点时阴影:4986.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2768.0 方位:114.0 斜率:23.0 水源垂直距离:192.0 水源水平距离:82.0 9点时阴影:3339.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2511.0 方位:54.0 斜率:8.0 水源垂直距离:124.0 水源水平距离:0.0 9点时阴影:638.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2507.0 方位:22.0 斜率:9.0 水源垂直距离:120.0 水源水平距离:14.0 9点时阴影:732.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2492.0 方位:135.0 斜率:6.0 水源垂直距离:0.0 水源水平距离:0.0 9点时阴影:860.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2489.0 方位:163.0 斜率:10.0 水源垂直距离:30.0 水源水平距离:-4.0 9点时阴影:849.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2962.0 方位:148.0 斜率:16.0 水源垂直距离:323.0 水源水平距离:23.0 9点时阴影:5916.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2811.0 方位:135.0 斜率:1.0 水源垂直距离:212.0 水源水平距离:30.0 9点时阴影:3670.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2739.0 方位:117.0 斜率:24.0 水源垂直距离:127.0 水源水平距离:53.0 9点时阴影:3281.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2703.0 方位:122.0 斜率:30.0 水源垂直距离:67.0 水源水平距离:27.0 9点时阴影:3191.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2522.0 方位:105.0 斜率:7.0 水源垂直距离:120.0 水源水平距离:1.0 9点时阴影:595.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2519.0 方位:102.0 斜率:6.0 水源垂直距离:124.0 水源水平距离:4.0 9点时阴影:616.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2516.0 方位:23.0 斜率:6.0 水源垂直距离:150.0 水源水平距离:4.0 9点时阴影:658.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2515.0 方位:41.0 斜率:9.0 水源垂直距离:162.0 水源水平距离:4.0 9点时阴影:680.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2900.0 方位:45.0 斜率:19.0 水源垂直距离:242.0 水源水平距离:20.0 9点时阴影:5199.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2709.0 方位:125.0 斜率:28.0 水源垂直距离:67.0 水源水平距离:23.0 9点时阴影:3224.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2511.0 方位:92.0 斜率:7.0 水源垂直距离:182.0 水源水平距离:18.0 9点时阴影:722.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2749.0 方位:98.0 斜率:30.0 水源垂直距离:124.0 水源水平距离:53.0 9点时阴影:3316.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2686.0 方位:354.0 斜率:12.0 水源垂直距离:0.0 水源水平距离:0.0 9点时阴影:3167.0....==>预测:0.0 实际:4.0结果:错误
土地条件:海拔:2699.0 方位:347.0 斜率:3.0 水源垂直距离:0.0 水源水平距离:0.0 9点时阴影:2096.0....==>预测:0.0 实际:0.0结果:正确
土地条件:海拔:2570.0 方位:346.0 斜率:2.0 水源垂直距离:0.0 水源水平距离:0.0 9点时阴影:331.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2533.0 方位:71.0 斜率:9.0 水源垂直距离:150.0 水源水平距离:-3.0 9点时阴影:577.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2703.0 方位:330.0 斜率:27.0 水源垂直距离:30.0 水源水平距离:17.0 9点时阴影:3141.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2678.0 方位:128.0 斜率:5.0 水源垂直距离:95.0 水源水平距离:23.0 9点时阴影:1660.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2529.0 方位:68.0 斜率:8.0 水源垂直距离:210.0 水源水平距离:-5.0 9点时阴影:666.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2524.0 方位:94.0 斜率:7.0 水源垂直距离:212.0 水源水平距离:-4.0 9点时阴影:684.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2536.0 方位:99.0 斜率:6.0 水源垂直距离:234.0 水源水平距离:0.0 9点时阴影:659.0....==>预测:1.0 实际:4.0结果:错误
土地条件:海拔:2498.0 方位:66.0 斜率:6.0 水源垂直距离:95.0 水源水平距离:7.0 9点时阴影:900.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2489.0 方位:100.0 斜率:7.0 水源垂直距离:85.0 水源水平距离:13.0 9点时阴影:810.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2713.0 方位:117.0 斜率:30.0 水源垂直距离:60.0 水源水平距离:17.0 9点时阴影:3297.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2739.0 方位:323.0 斜率:25.0 水源垂直距离:85.0 水源水平距离:43.0 9点时阴影:3118.0....==>预测:0.0 实际:0.0结果:正确
土地条件:海拔:2696.0 方位:72.0 斜率:2.0 水源垂直距离:30.0 水源水平距离:0.0 9点时阴影:3271.0....==>预测:0.0 实际:0.0结果:正确
土地条件:海拔:2510.0 方位:79.0 斜率:14.0 水源垂直距离:192.0 水源水平距离:19.0 9点时阴影:891.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2502.0 方位:81.0 斜率:7.0 水源垂直距离:175.0 水源水平距离:11.0 9点时阴影:912.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2722.0 方位:315.0 斜率:24.0 水源垂直距离:30.0 水源水平距离:19.0 9点时阴影:3216.0....==>预测:0.0 实际:0.0结果:正确
土地条件:海拔:2500.0 方位:74.0 斜率:11.0 水源垂直距离:190.0 水源水平距离:9.0 9点时阴影:930.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2486.0 方位:68.0 斜率:5.0 水源垂直距离:180.0 水源水平距离:-4.0 9点时阴影:870.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2489.0 方位:11.0 斜率:4.0 水源垂直距离:175.0 水源水平距离:13.0 9点时阴影:840.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2489.0 方位:42.0 斜率:6.0 水源垂直距离:162.0 水源水平距离:13.0 9点时阴影:810.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2490.0 方位:75.0 斜率:5.0 水源垂直距离:134.0 水源水平距离:17.0 9点时阴影:810.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2952.0 方位:107.0 斜率:11.0 水源垂直距离:42.0 水源水平距离:7.0 9点时阴影:5845.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2705.0 方位:90.0 斜率:8.0 水源垂直距离:134.0 水源水平距离:22.0 9点时阴影:2023.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2507.0 方位:40.0 斜率:7.0 水源垂直距离:153.0 水源水平距离:10.0 9点时阴影:930.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2500.0 方位:49.0 斜率:14.0 水源垂直距离:150.0 水源水平距离:27.0 9点时阴影:870.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2493.0 方位:63.0 斜率:10.0 水源垂直距离:127.0 水源水平距离:20.0 9点时阴影:840.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2509.0 方位:59.0 斜率:7.0 水源垂直距离:134.0 水源水平距离:10.0 9点时阴影:900.0....==>预测:4.0 实际:4.0结果:正确
土地条件:海拔:2919.0 方位:13.0 斜率:13.0 水源垂直距离:90.0 水源水平距离:6.0 9点时阴影:5321.0....==>预测:0.0 实际:0.0结果:正确
土地条件:海拔:2740.0 方位:54.0 斜率:6.0 水源垂直距离:218.0 水源水平距离:42.0 9点时阴影:2287.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2640.0 方位:80.0 斜率:8.0 水源垂直距离:180.0 水源水平距离:-2.0 9点时阴影:1092.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2843.0 方位:166.0 斜率:12.0 水源垂直距离:242.0 水源水平距离:53.0 9点时阴影:4434.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:3008.0 方位:45.0 斜率:14.0 水源垂直距离:277.0 水源水平距离:10.0 9点时阴影:6371.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2893.0 方位:114.0 斜率:16.0 水源垂直距离:108.0 水源水平距离:30.0 9点时阴影:5066.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2850.0 方位:6.0 斜率:9.0 水源垂直距离:0.0 水源水平距离:0.0 9点时阴影:4858.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2628.0 方位:30.0 斜率:10.0 水源垂直距离:240.0 水源水平距离:19.0 9点时阴影:960.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2864.0 方位:118.0 斜率:18.0 水源垂直距离:201.0 水源水平距离:74.0 9点时阴影:4567.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2827.0 方位:160.0 斜率:28.0 水源垂直距离:134.0 水源水平距离:65.0 9点时阴影:3948.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2529.0 方位:326.0 斜率:5.0 水源垂直距离:30.0 水源水平距离:14.0 9点时阴影:1062.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2808.0 方位:99.0 斜率:7.0 水源垂直距离:382.0 水源水平距离:95.0 9点时阴影:3107.0....==>预测:0.0 实际:0.0结果:正确
土地条件:海拔:2840.0 方位:153.0 斜率:26.0 水源垂直距离:134.0 水源水平距离:42.0 9点时阴影:4613.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2795.0 方位:79.0 斜率:10.0 水源垂直距离:531.0 水源水平距离:96.0 9点时阴影:2980.0....==>预测:1.0 实际:0.0结果:错误
土地条件:海拔:2746.0 方位:143.0 斜率:16.0 水源垂直距离:67.0 水源水平距离:22.0 9点时阴影:2440.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2847.0 方位:352.0 斜率:26.0 水源垂直距离:150.0 水源水平距离:82.0 9点时阴影:3697.0....==>预测:0.0 实际:0.0结果:正确
土地条件:海拔:2840.0 方位:14.0 斜率:14.0 水源垂直距离:216.0 水源水平距离:88.0 9点时阴影:3552.0....==>预测:0.0 实际:0.0结果:正确
土地条件:海拔:2537.0 方位:42.0 斜率:7.0 水源垂直距离:210.0 水源水平距离:17.0 9点时阴影:1132.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2860.0 方位:358.0 斜率:17.0 水源垂直距离:175.0 水源水平距离:98.0 9点时阴影:3705.0....==>预测:0.0 实际:0.0结果:正确
土地条件:海拔:2818.0 方位:332.0 斜率:26.0 水源垂直距离:30.0 水源水平距离:17.0 9点时阴影:4526.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2801.0 方位:18.0 斜率:7.0 水源垂直距离:560.0 水源水平距离:58.0 9点时阴影:3084.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2791.0 方位:63.0 斜率:10.0 水源垂直距离:418.0 水源水平距离:48.0 9点时阴影:2942.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2745.0 方位:306.0 斜率:11.0 水源垂直距离:67.0 水源水平距离:24.0 9点时阴影:2416.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2514.0 方位:102.0 斜率:6.0 水源垂直距离:272.0 水源水平距离:-5.0 9点时阴影:1082.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2788.0 方位:13.0 斜率:16.0 水源垂直距离:30.0 水源水平距离:8.0 9点时阴影:4126.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2562.0 方位:354.0 斜率:12.0 水源垂直距离:67.0 水源水平距离:9.0 9点时阴影:1057.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:3073.0 方位:173.0 斜率:12.0 水源垂直距离:108.0 水源水平距离:-3.0 9点时阴影:6836.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2978.0 方位:71.0 斜率:10.0 水源垂直距离:426.0 水源水平距离:85.0 9点时阴影:5742.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2860.0 方位:31.0 斜率:10.0 水源垂直距离:295.0 水源水平距离:98.0 9点时阴影:3644.0....==>预测:0.0 实际:0.0结果:正确
土地条件:海拔:3067.0 方位:164.0 斜率:11.0 水源垂直距离:85.0 水源水平距离:7.0 9点时阴影:6811.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2804.0 方位:72.0 斜率:5.0 水源垂直距离:543.0 水源水平距离:61.0 9点时阴影:3115.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2562.0 方位:59.0 斜率:3.0 水源垂直距离:0.0 水源水平距离:0.0 9点时阴影:1116.0....==>预测:1.0 实际:1.0结果:正确
土地条件:海拔:2567.0 方位:34.0 斜率:9.0 水源垂直距离:190.0 水源水平距离:16.0 9点时阴影:1136.0....==>预测:1.0 实际:1.0结果:正确

 

你可能感兴趣的:(面试算法,云计算,机器学习,算法分析,大数据,大数据+机器学习,决策树多元分类,机器学习)