Python + Spark2.0 + hadoop study notes --Python Spark MLlib binary decision tree

 A decision tree is commonly used in data classification and classical machine learning methods, decision tree model in this case, in analyzing StumbleUpon data sets to predict web page is temporary (ephemeral) or evergreen (evergreen), and tuning parameters to find the best combination of parameters to improve the prediction accuracy.

But this kind of classic binary classification problem, in python, then transfer package will be very easy to do, and there are many analytical tools. But now the task is to practice using Spark to deal with problems facing the class, so you start to introduce the Spark be binary classification process.

The first step: characterization data

In this case, the data we want to use data from the official website Kaggle large dimensions of this data, some of the data column is meaningless, in the choice of when to avoid. Although the data after a great dimension, but many columns are related to the content of some text, and therefore does not consider curse of dimensionality in this issue, the preliminary screening will be modeled.

Step Two: Start Ipython Notebook

cd ~/pythonwork/ipynotebook

PYSPARK_DRIVER_PYTHON=ipython PYSPARK_DRIVER_PYTHON_OPTS=“notebook" MASTER=local[*] pyspark

The third step: data preparation

It requires raw data into the required data format LabeledPoint training model, and a random manner in accordance with 8: 1: 1 ratio of the data is divided into three parts trainData, validationData and testData.

from pyspark.mllib.regression import LabeledPoint

def SetPath(sc):
global Path
if sc.master[0:5]=="local" :
Path="file:/home/jorlinlee/pythonsparkexample/PythonProject/"
else:
Path="hdfs://master:9000/user/jorlinlee/"

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)

def extract_features(field,categoriesMap,featureEnd):
categoryIdx = categoriesMap[field[3]]
categoryFeatures = np.zeros(len(categoriesMap))
categoryFeatures[categoryIdx] = 1
numericalFeatures=[convert_float(field) for field in field[4: featureEnd]]
return np.concatenate(( categoryFeatures, numericalFeatures))

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

def PrepareData(sc):
print("Data loading...")
rawDataWithHeader = sc.textFile(Path+"data/train.tsv")
header = rawDataWithHeader.first()
rawData = rawDataWithHeader.filter(lambda x:x !=header)
rData=rawData.map(lambda x: x.replace("\"", ""))
lines = rData.map(lambda x: x.split("\t"))
print("The number of data" + str(lines.count()))
categoriesMap = lines.map(lambda fields: fields[3]).distinct().zipWithIndex().collectAsMap()
labelpointRDD = lines.map( lambda r:LabeledPoint(
extract_label(r),
extract_features(r,categoriesMap,len(r) - 1)))
(trainData, validationData, testData) = labelpointRDD.randomSplit([8, 1, 1])
print("The number of trainData:" + str(trainData.count()) +
" The number of validationData:" + str(validationData.count()) +
" The number of testData:" + str(testData.count()))
return (trainData, validationData, testData, categoriesMap)

Step four: the model training

def PredictData(sc,model,categoriesMap):
print("Data loading.....")
rawDataWithHeader = sc.textFile(Path+"data/test.tsv")
header = rawDataWithHeader.first()
rawData = rawDataWithHeader.filter(lambda x:x !=header)
rData=rawData.map(lambda x: x.replace("\"", ""))
lines = rData.map(lambda x: x.split("\t"))
print("The number of data:" + str(lines.count()) )
dataRDD = lines.map(lambda r: ( r[0] ,
extract_features(r,categoriesMap,len(r) )))
DescDict = {
0: "ephemeral",
1: "evergreen"
}
for data in dataRDD.take(10):
predictResult = model.predict(data[1])
print("The web: " +str(data[0])+"\n" +"Predict:"+ str(predictResult)+"Illustration"+DescDict[predictResult] +"\n")

Step five: assessment of the accuracy of the model (using AUC)

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

Step Six: evaluation of the model parameters are determined (determined impurityParm, maxDepthParm and maxBinsParm)

def trainEvaluateModel(trainData,validationData,
impurityParm, maxDepthParm, maxBinsParm):
startTime = time()
model = DecisionTree.trainClassifier(trainData,
numClasses=2, categoricalFeaturesInfo={},
impurity=impurityParm,
maxDepth=maxDepthParm,
maxBins=maxBinsParm)
AUC = evaluateModel(model, validationData)
duration = time() - startTime
print ("Parameter" + \
" impurity="+str(impurityParm) +\
" maxDepth="+str(maxDepthParm) + \
" maxBins="+str(maxBinsParm) +\
" Time="+str(duration) + \
" AUC = " + str(AUC) )
return (AUC,duration, impurityParm, maxDepthParm, maxBinsParm,model)

def evalParameter(trainData, validationData, evalparm,
impurityList, maxDepthList, maxBinsList):
metrics = [trainEvaluateModel(trainData, validationData,
impurity,maxDepth, maxBins )
for impurity in impurityList
for maxDepth in maxDepthList
for maxBins in maxBinsList ]
if evalparm=="impurity":
IndexList=impurityList[:]
elif evalparm=="maxDepth":
IndexList=maxDepthList[:]
elif evalparm=="maxBins":
IndexList=maxBinsList[:]
df = pd.DataFrame(metrics,index=IndexList,
columns=['AUC', 'duration','impurity', 'maxDepth', 'maxBins','model'])
showchart(df,evalparm,'AUC','duration',0.5,0.7 )

Using a visual method to select a reference as a parameter

def showchart(df,evalparm ,barData,lineData,yMin,yMax):
ax = df[barData].plot(kind='bar', title =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()

Find out the accuracy of the highest combination of parameters

def evalAllParameter(trainData, validationData,
impurityList, maxDepthList, maxBinsList):
metrics = [trainEvaluateModel(trainData, validationData,
impurity,maxDepth, maxBins )
for impurity in impurityList
for maxDepth in maxDepthList
for maxBins in maxBinsList ]
Smetrics = sorted(metrics, key=lambda k: k[0], reverse=True)
bestParameter=Smetrics[0]
print("The best parameter:impurity:" + str(bestParameter[2]) +
" ,maxDepth:" + str(bestParameter[3]) +
" ,maxBins:" + str(bestParameter[4]) +
" ,AUC = " + str(bestParameter[0]))
return bestParameter[5]

def parametersEval(trainData, validationData):

print("----- impurity ---------")
evalParameter(trainData, validationData,"impurity",
impurityList=["gini", "entropy"],
maxDepthList=[10],
maxBinsList=[10 ])


Given parameter choice
Print ( "--------- ----- maxDepth")
evalParameter (trainData, validationData, "maxDepth",
impurityList = [ "Gini"],
maxDepthList = [. 3,. 5 , 10, 15, 20 is, 25],
maxBinsList = [10])
Print ( "--------- ----- maxBins")
evalParameter (trainData, validationData, "maxBins",
impurityList = [ " Gini "],
maxDepthList = [10],
maxBinsList = [. 3,. 5, 10, 50, 100, 200 is])

Step Seven: Spark-related settings

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/jorlinlee/pythonsparkexample/PythonProject/"
else:
Path="hdfs://master:9000/user/jorlinlee/"

def CreateSparkContext():
conf = SparkConf().setMaster("local[*]").setAppName("DTree")
sc = SparkContext(conf = conf)
print ("master="+sc.master)
SetLogger(sc)
SetPath(sc)
return (sc)

sc.stop()

Step eight: Run the main program, have ten predictions, and gives the classification rules

if __name__ == "__main__":
print("RunDecisionTreeBinary")
sc=CreateSparkContext()
print("==========Preparing===============")
(trainData, validationData, testData, categoriesMap) =PrepareData(sc)
trainData.persist(); validationData.persist(); testData.persist()
print("==========Evaluating===============")
(AUC,duration, impurityParm, maxDepthParm, maxBinsParm,model)= \
trainEvaluateModel(trainData, validationData, "entropy", 10, 200)
if (len(sys.argv) == 2) and (sys.argv[1]=="-e"):
parametersEval(trainData, validationData)
elif (len(sys.argv) == 2) and (sys.argv[1]=="-a"):
print("-----The best parameter---------")
model=evalAllParameter(trainData, validationData,
["gini", "entropy"],
[3, 5, 10, 15, 20, 25],
[3, 5, 10, 50, 100, 200 ])
print("==========Testing===============")
auc = evaluateModel(model, testData)
print("Test best model, AUC:" + str(auc))
print("==========Predicting===============")
PredictData(sc, model, categoriesMap)
print(model.toDebugString())

 

result:

RunDecisionTreeBinary
master=local[*]
==========Preparing===============
Data loading...
The number of data7395
The number of trainData:5925 The number of validationData:725 The number of testData:745
==========Evaluating===============
Parameter impurity=entropy maxDepth=10 maxBins=200 Time=6.611667633056641 AUC = 0.6579354553492485
==========Testing===============
Test best model, AUC:0.6323763091368725
==========Predicting===============
Data loading.....
The number of data:3171
The web: http://www.lynnskitchenadventures.com/2009/04/homemade-enchilada-sauce.html
Predict:1.0Illustrationevergreen

The web: http://lolpics.se/18552-stun-grenade-ar
Predict:0.0Illustrationephemeral

The web: http://www.xcelerationfitness.com/treadmills.html
Predict:0.0Illustrationephemeral

The web: http://www.bloomberg.com/news/2012-02-06/syria-s-assad-deploys-tactics-of-father-to-crush-revolt-threatening-reign.html
Predict:0.0Illustrationephemeral

The web: http://www.wired.com/gadgetlab/2011/12/stem-turns-lemons-and-limes-into-juicy-atomizers/
Predict:0.0Illustrationephemeral

The web: http://www.latimes.com/health/boostershots/la-heb-fat-tax-denmark-20111013,0,2603132.story
Predict:0.0Illustrationephemeral

The web: http://www.howlifeworks.com/a/a?AG_ID=1186&cid=7340ci
Predict:1.0Illustrationevergreen

The web: http://romancingthestoveblog.wordpress.com/2010/01/13/sweet-potato-ravioli-with-lemon-sage-brown-butter-sauce/
Predict:1.0Illustrationevergreen

The web: http://www.funniez.net/Funny-Pictures/turn-men-down.html
Predict:0.0Illustrationephemeral

The web: http://youfellasleepwatchingadvd.com/
Predict:1.0Illustrationevergreen

DecisionTreeModel classifier of depth 10 with 419 nodes
If (feature 31 <= 1458.5)
If (feature 2 <= 0.5)
If (feature 23 <= 0.0391787705)
If (feature 16 <= 0.719848485)
If (feature 1 <= 0.5)
If (feature 14 <= 0.8458745000000001)
If (feature 8 <= 0.5)
If (feature 0 <= 0.5)
If (feature 29 <= 34.5)
If (feature 16 <= 0.5433298440000001)
Predict: 0.0
Else (feature 16 > 0.5433298440000001)
Predict: 1.0
Else (feature 29 > 34.5)
Predict: 0.0
Else (feature 0 > 0.5)
If (feature 33 <= 5.5)
If (feature 34 <= 0.2243290195)
Predict: 1.0
Else (feature 34 > 0.2243290195)
Predict: 0.0
Else (feature 33 > 5.5)
Predict: 0.0
Else (feature 8 > 0.5)
If (feature 14 <= 0.4711965)
If (feature 14 <= 0.46250199999999997)
Predict: 1.0
Else (feature 14 > 0.46250199999999997)
Predict: 0.0
Else (feature 14 > 0.4711965)
Predict: 1.0
Else (feature 14 > 0.8458745000000001)
Predict: 0.0
Else (feature 1 > 0.5)
If (feature 18 <= 9.702515E-4)
If (feature 34 <= 4.495E-4)
If (feature 23 <= 0.0197483205)
If (feature 35 <= 0.043529472)
Predict: 1.0
Else (feature 35 > 0.043529472)
Predict: 0.0
Else (feature 23 > 0.0197483205)
Predict: 1.0
Else (feature 34 > 4.495E-4)
Predict: 0.0
Else (feature 18 > 9.702515E-4)
If (feature 16 <= 0.4610159345)
Predict: 1.0
Else (feature 16 > 0.4610159345)
If (feature 19 <= 0.050450614000000005)
If (feature 17 <= 0.07201618500000001)
Predict: 1.0
Else (feature 17 > 0.07201618500000001)
Predict: 0.0
Else (feature 19 > 0.050450614000000005)
Predict: 1.0
Else (feature 16 > 0.719848485)
If (feature 19 <= 0.10272814250000001)
If (feature 23 <= 0.035596906)
If (feature 18 <= 0.3340675475)
If (feature 31 <= 1350.5)
If (feature 6 <= 0.5)
Predict: 1.0
Else (feature 6 > 0.5)
Predict: 0.0
Else (feature 31 > 1350.5)
If (feature 18 <= 0.0885694875)
Predict: 1.0
Else (feature 18 > 0.0885694875)
Predict: 0.0
Else (feature 18 > 0.3340675475)
Predict: 0.0
Else (feature 23 > 0.035596906)
Predict: 0.0
Else (feature 19 > 0.10272814250000001)
Predict: 1.0
Else (feature 23 > 0.0391787705)
If (feature 26 <= 0.614921223)
If (feature 15 <= 1.882617912)
If (feature 18 <= 0.0618079675)
If (feature 25 <= 0.18241650199999998)
If (feature 14 <= 0.88331)
If (feature 15 <= 1.5707610145)
Predict: 0.0
Else (feature 15 > 1.5707610145)
Predict: 1.0
Else (feature 14 > 0.88331)
Predict: 1.0
Else (feature 25 > 0.18241650199999998)
If (feature 26 <= 0.18868168899999999)
Predict: 0.0
Else (feature 26 > 0.18868168899999999)
If (feature 32 <= 184.5)
If (feature 23 <= 0.047017412999999994)
Predict: 1.0
Else (feature 23 > 0.047017412999999994)
Predict: 0.0
Else (feature 32 > 184.5)
Predict: 0.0
Else (feature 18 > 0.0618079675)
If (feature 15 <= 1.813996156)
If (feature 15 <= 1.424541885)
Predict: 1.0
Else (feature 15 > 1.424541885)
If (feature 23 <= 0.105398118)
If (feature 15 <= 1.7089758339999999)
Predict: 0.0
Else (feature 15 > 1.7089758339999999)
Predict: 1.0
Else (feature 23 > 0.105398118)
Predict: 1.0
Else (feature 15 > 1.813996156)
Predict: 1.0
Else (feature 15 > 1.882617912)
If (feature 14 <= 0.48163900000000004)
If (feature 15 <= 2.718090381)
If (feature 17 <= 0.08549820050000001)
If (feature 4 <= 0.5)
Predict: 0.0
Else (feature 4 > 0.5)
If (feature 23 <= 0.0719649975)
Predict: 1.0
Else (feature 23 > 0.0719649975)
Predict: 0.0
Else (feature 17 > 0.08549820050000001)
If (feature 25 <= 0.2354568495)
Predict: 0.0
Else (feature 25 > 0.2354568495)
If (feature 14 <= 0.37942050000000005)
Predict: 0.0
Else (feature 14 > 0.37942050000000005)
Predict: 1.0
Else (feature 15 > 2.718090381)
If (feature 35 <= 0.3323970035)
If (feature 16 <= 0.641086983)
If (feature 16 <= 0.29731728749999997)
Predict: 1.0
Else (feature 16 > 0.29731728749999997)
Predict: 0.0
Else (feature 16 > 0.641086983)
If (feature 15 <= 3.024357284)
Predict: 0.0
Else (feature 15 > 3.024357284)
Predict: 1.0
Else (feature 35 > 0.3323970035)
Predict: 1.0
Else (feature 14 > 0.48163900000000004)
If (feature 20 <= 0.408191065)
If (feature 33 <= 5.5)
If (feature 20 <= 0.392865142)
If (feature 15 <= 3.219436535)
Predict: 0.0
Else (feature 15 > 3.219436535)
Predict: 1.0
Else (feature 20 > 0.392865142)
Predict: 1.0
Else (feature 33 > 5.5)
Predict: 1.0
Else (feature 20 > 0.408191065)
If (feature 20 <= 16.0)
Predict: 0.0
Else (feature 20 > 16.0)
If (feature 34 <= 0.0059084325)
Predict: 0.0
Else (feature 34 > 0.0059084325)
If (feature 25 <= 0.296182712)
Predict: 1.0
Else (feature 25 > 0.296182712)
Predict: 0.0
Else (feature 26 > 0.614921223)
If (feature 17 <= 0.29483385900000003)
If (feature 26 <= 3.845238095)
If (feature 32 <= 90.5)
If (feature 25 <= 0.260248616)
If (feature 20 <= 0.6091436754999999)
If (feature 14 <= 0.651891)
Predict: 0.0
Else (feature 14 > 0.651891)
Predict: 1.0
Else (feature 20 > 0.6091436754999999)
Predict: 0.0
Else (feature 25 > 0.260248616)
If (feature 20 <= 0.6210849915000001)
If (feature 25 <= 0.263034435)
Predict: 0.0
Else (feature 25 > 0.263034435)
Predict: 1.0
Else (feature 20 > 0.6210849915000001)
Predict: 0.0
Else (feature 32 > 90.5)
If (feature 35 <= 0.068156843)
If (feature 15 <= 1.199737533)
If (feature 1 <= 0.5)
Predict: 0.0
Else (feature 1 > 0.5)
Predict: 1.0
Else (feature 15 > 1.199737533)
Predict: 0.0
Else (feature 35 > 0.068156843)
If (feature 31 <= 1059.5)
Predict: 0.0
Else (feature 31 > 1059.5)
Predict: 1.0
Else (feature 26 > 3.845238095)
Predict: 0.0
Else (feature 17 > 0.29483385900000003)
If (feature 15 <= 2.5117194654999997)
Predict: 1.0
Else (feature 15 > 2.5117194654999997)
Predict: 0.0
Else (feature 2 > 0.5)
If (feature 14 <= 0.5029295)
If (feature 33 <= 7.5)
If (feature 32 <= 20.5)
Predict: 0.0
Else (feature 32 > 20.5)
If (feature 32 <= 66.5)
Predict: 1.0
Else (feature 32 > 66.5)
Predict: 0.0
Else (feature 33 > 7.5)
Predict: 1.0
Else (feature 14 > 0.5029295)
If (feature 35 <= 0.053987811499999996)
If (feature 26 <= 0.092158035)
Predict: 0.0
Else (feature 26 > 0.092158035)
Predict: 1.0
Else (feature 35 > 0.053987811499999996)
If (feature 27 <= 0.5)
Predict: 1.0
Else (feature 27 > 0.5)
If (feature 25 <= 0.21417068)
If (feature 16 <= 0.617740727)
Predict: 0.0
Else (feature 16 > 0.617740727)
Predict: 1.0
Else (feature 25 > 0.21417068)
If (feature 24 <= 0.5)
Predict: 1.0
Else (feature 24 > 0.5)
Predict: 0.0
Else (feature 31 > 1458.5)
If (feature 3 <= 0.5)
If (feature 0 <= 0.5)
If (feature 1 <= 0.5)
If (feature 29 <= 25.5)
If (feature 19 <= 0.078501401)
If (feature 23 <= 0.052976552499999996)
If (feature 33 <= 6.5)
If (feature 26 <= 0.1836998015)
Predict: 1.0
Else (feature 26 > 0.1836998015)
If (feature 33 <= 0.5)
Predict: 0.0
Else (feature 33 > 0.5)
Predict: 1.0
Else (feature 33 > 6.5)
If (feature 8 <= 0.5)
If (feature 16 <= 0.387492143)
Predict: 0.0
Else (feature 16 > 0.387492143)
Predict: 1.0
Else (feature 8 > 0.5)
Predict: 0.0
Else (feature 23 > 0.052976552499999996)
If (feature 9 <= 0.5)
If (feature 16 <= 0.762858822)
Predict: 0.0
Else (feature 16 > 0.762858822)
Predict: 1.0
Else (feature 9 > 0.5)
If (feature 14 <= 0.2909735)
Predict: 1.0
Else (feature 14 > 0.2909735)
Predict: 0.0
Else (feature 19 > 0.078501401)
If (feature 15 <= 2.5904545455)
If (feature 32 <= 51.5)
If (feature 15 <= 2.241657397)
Predict: 0.0
Else (feature 15 > 2.241657397)
If (feature 4 <= 0.5)
Predict: 1.0
Else (feature 4 > 0.5)
Predict: 0.0
Else (feature 32 > 51.5)
If (feature 20 <= 0.4474304455)
If (feature 15 <= 2.4902903465)
Predict: 1.0
Else (feature 15 > 2.4902903465)
Predict: 0.0
Else (feature 20 > 0.4474304455)
If (feature 30 <= 0.5)
Predict: 1.0
Else (feature 30 > 0.5)
Predict: 0.0
Else (feature 15 > 2.5904545455)
If (feature 35 <= 0.11862860350000001)
If (feature 20 <= 0.604100313)
If (feature 26 <= 0.0703273525)
Predict: 1.0
Else (feature 26 > 0.0703273525)
Predict: 0.0
Else (feature 20 > 0.604100313)
Predict: 0.0
Else (feature 35 > 0.11862860350000001)
If (feature 26 <= 0.0023895)
If (feature 27 <= 0.5)
Predict: 1.0
Else (feature 27 > 0.5)
Predict: 0.0
Else (feature 26 > 0.0023895)
Predict: 0.0
Else (feature 29 > 25.5)
If (feature 14 <= 0.5597875000000001)
If (feature 17 <= 0.1432107495)
If (feature 32 <= 84.5)
Predict: 0.0
Else (feature 32 > 84.5)
If (feature 32 <= 99.5)
Predict: 1.0
Else (feature 32 > 99.5)
Predict: 0.0
Else (feature 17 > 0.1432107495)
If (feature 15 <= 2.54534632)
If (feature 35 <= 0.1135839195)
If (feature 18 <= 0.071340821)
Predict: 0.0
Else (feature 18 > 0.071340821)
Predict: 1.0
Else (feature 35 > 0.1135839195)
Predict: 0.0
Else (feature 15 > 2.54534632)
If (feature 16 <= 0.842136969)
Predict: 0.0
Else (feature 16 > 0.842136969)
If (feature 35 <= 0.0704363165)
Predict: 0.0
Else (feature 35 > 0.0704363165)
Predict: 1.0
Else (feature 14 > 0.5597875000000001)
If (feature 9 <= 0.5)
If (feature 2 <= 0.5)
Predict: 0.0
Else (feature 2 > 0.5)
If (feature 17 <= 0.2244121985)
If (feature 31 <= 2302.5)
Predict: 1.0
Else (feature 31 > 2302.5)
Predict: 0.0
Else (feature 17 > 0.2244121985)
If (feature 32 <= 368.5)
Predict: 1.0
Else (feature 32 > 368.5)
Predict: 0.0
Else (feature 9 > 0.5)
If (feature 15 <= 2.9814851825)
If (feature 29 <= 54.5)
Predict: 0.0
Else (feature 29 > 54.5)
Predict: 1.0
Else (feature 15 > 2.9814851825)
Predict: 0.0
Else (feature 1 > 0.5)
If (feature 35 <= 0.10557280899999999)
If (feature 15 <= 2.6319293674999997)
If (feature 26 <= 0.0102600085)
If (feature 15 <= 1.982317179)
If (feature 20 <= 0.4708425435)
If (feature 14 <= 0.28213)
Predict: 0.0
Else (feature 14 > 0.28213)
Predict: 1.0
Else (feature 20 > 0.4708425435)
Predict: 0.0
Else (feature 15 > 1.982317179)
If (feature 21 <= 1.065E-4)
Predict: 0.0
Else (feature 21 > 1.065E-4)
Predict: 1.0
Else (feature 26 > 0.0102600085)
If (feature 25 <= 0.33658205350000003)
If (feature 35 <= 0.0833107985)
Predict: 1.0
Else (feature 35 > 0.0833107985)
If (feature 31 <= 1624.5)
Predict: 0.0
Else (feature 31 > 1624.5)
Predict: 1.0
Else (feature 25 > 0.33658205350000003)
Predict: 0.0
Else (feature 15 > 2.6319293674999997)
If (feature 23 <= 0.0459418095)
If (feature 29 <= 18.5)
Predict: 1.0
Else (feature 29 > 18.5)
If (feature 14 <= 0.0799874)
Predict: 0.0
Else (feature 14 > 0.0799874)
Predict: 1.0
Else (feature 23 > 0.0459418095)
If (feature 17 <= 0.4005988025)
If (feature 35 <= 0.09598409050000001)
If (feature 35 <= 0.090486137)
Predict: 0.0
Else (feature 35 > 0.090486137)
Predict: 1.0
Else (feature 35 > 0.09598409050000001)
Predict: 0.0
Else (feature 17 > 0.4005988025)
Predict: 1.0
Else (feature 35 > 0.10557280899999999)
If (feature 20 <= 0.43892298949999997)
If (feature 32 <= 384.5)
If (feature 25 <= 0.248139513)
If (feature 34 <= 0.1917453335)
Predict: 0.0
Else (feature 34 > 0.1917453335)
If (feature 15 <= 2.2038107279999997)
Predict: 1.0
Else (feature 15 > 2.2038107279999997)
Predict: 0.0
Else (feature 25 > 0.248139513)
If (feature 14 <= 0.2909735)
Predict: 1.0
Else (feature 14 > 0.2909735)
If (feature 23 <= 0.051961552)
Predict: 0.0
Else (feature 23 > 0.051961552)
Predict: 1.0
Else (feature 32 > 384.5)
If (feature 18 <= 0.093286713)
Predict: 1.0
Else (feature 18 > 0.093286713)
Predict: 0.0
Else (feature 20 > 0.43892298949999997)
If (feature 26 <= 7.9E-5)
Predict: 0.0
Else (feature 26 > 7.9E-5)
If (feature 20 <= 0.6911990685)
If (feature 23 <= 0.076318364)
If (feature 29 <= 36.5)
Predict: 1.0
Else (feature 29 > 36.5)
Predict: 0.0
Else (feature 23 > 0.076318364)
If (feature 14 <= 0.8499995)
Predict: 1.0
Else (feature 14 > 0.8499995)
Predict: 0.0
Else (feature 20 > 0.6911990685)
Predict: 1.0
Else (feature 0 > 0.5)
If (feature 35 <= 0.123543858)
If (feature 26 <= 0.0398114305)
If (feature 14 <= 0.8499995)
If (feature 14 <= 0.765962)
If (feature 32 <= 184.5)
If (feature 23 <= 0.0221340885)
Predict: 1.0
Else (feature 23 > 0.0221340885)
If (feature 17 <= 0.07201618500000001)
Predict: 0.0
Else (feature 17 > 0.07201618500000001)
Predict: 1.0
Else (feature 32 > 184.5)
If (feature 19 <= 0.0482599545)
If (feature 34 <= 0.092270351)
Predict: 0.0
Else (feature 34 > 0.092270351)
Predict: 1.0
Else (feature 19 > 0.0482599545)
Predict: 0.0
Else (feature 14 > 0.765962)
If (feature 26 <= 0.017958696500000003)
If (feature 14 <= 0.8432904999999999)
Predict: 0.0
Else (feature 14 > 0.8432904999999999)
If (feature 15 <= 1.971547115)
Predict: 1.0
Else (feature 15 > 1.971547115)
Predict: 0.0
Else (feature 26 > 0.017958696500000003)
If (feature 18 <= 4.04E-4)
Predict: 0.0
Else (feature 18 > 4.04E-4)
Predict: 1.0
Else (feature 14 > 0.8499995)
If (feature 25 <= 0.18025862)
Predict: 0.0
Else (feature 25 > 0.18025862)
Predict: 1.0
Else (feature 26 > 0.0398114305)
If (feature 29 <= 33.5)
If (feature 25 <= 0.1375444065)
If (feature 32 <= 214.5)
Predict: 1.0
Else (feature 32 > 214.5)
Predict: 0.0
Else (feature 25 > 0.1375444065)
If (feature 23 <= 0.1289247745)
If (feature 31 <= 1497.0)
Predict: 0.0
Else (feature 31 > 1497.0)
If (feature 35 <= 0.0263854075)
Predict: 0.0
Else (feature 35 > 0.0263854075)
Predict: 1.0
Else (feature 23 > 0.1289247745)
Predict: 0.0
Else (feature 29 > 33.5)
If (feature 19 <= 0.046103239000000004)
If (feature 17 <= 0.1148483135)
Predict: 0.0
Else (feature 17 > 0.1148483135)
Predict: 1.0
Else (feature 19 > 0.046103239000000004)
If (feature 23 <= 0.036442443)
If (feature 31 <= 10718.5)
If (feature 16 <= 0.499097473)
Predict: 0.0
Else (feature 16 > 0.499097473)
Predict: 1.0
Else (feature 31 > 10718.5)
Predict: 0.0
Else (feature 23 > 0.036442443)
If (feature 25 <= 0.24691742700000002)
If (feature 16 <= 0.6619797155)
Predict: 0.0
Else (feature 16 > 0.6619797155)
Predict: 1.0
Else (feature 25 > 0.24691742700000002)
Predict: 1.0
Else (feature 35 > 0.123543858)
If (feature 20 <= 0.494038735)
If (feature 19 <= 0.150085324)
Predict: 0.0
Else (feature 19 > 0.150085324)
Predict: 1.0
Else (feature 20 > 0.494038735)
If (feature 29 <= 33.5)
Predict: 1.0
Else (feature 29 > 33.5)
If (feature 23 <= 0.0285232765)
Predict: 0.0
Else (feature 23 > 0.0285232765)
If (feature 15 <= 2.078819647)
Predict: 1.0
Else (feature 15 > 2.078819647)
Predict: 0.0
Else (feature 3 > 0.5)
If (feature 29 <= 30.5)
If (feature 26 <= 0.0137855585)
If (feature 31 <= 3875.5)
Predict: 1.0
Else (feature 31 > 3875.5)
If (feature 29 <= 5.5)
Predict: 1.0
Else (feature 29 > 5.5)
If (feature 18 <= 0.08599717800000001)
Predict: 0.0
Else (feature 18 > 0.08599717800000001)
If (feature 18 <= 0.13203773600000002)
Predict: 1.0
Else (feature 18 > 0.13203773600000002)
Predict: 0.0
Else (feature 26 > 0.0137855585)
If (feature 14 <= 0.4769935)
If (feature 15 <= 1.5387538305000001)
Predict: 1.0
Else (feature 15 > 1.5387538305000001)
If (feature 19 <= 0.032281749)
Predict: 0.0
Else (feature 19 > 0.032281749)
If (feature 35 <= 0.099369468)
If (feature 27 <= 0.5)
If (feature 14 <= 0.3311615)
Predict: 1.0
Else (feature 14 > 0.3311615)
Predict: 0.0
Else (feature 27 > 0.5)
Predict: 1.0
Else (feature 35 > 0.099369468)
Predict: 0.0
Else (feature 14 > 0.4769935)
If (feature 18 <= 0.0119284765)
Predict: 0.0
Else (feature 18 > 0.0119284765)
If (feature 19 <= 0.0092025405)
If (feature 16 <= 0.350257732)
Predict: 1.0
Else (feature 16 > 0.350257732)
If (feature 29 <= 20.5)
Predict: 0.0
Else (feature 29 > 20.5)
Predict: 1.0
Else (feature 19 > 0.0092025405)
If (feature 29 <= 15.5)
If (feature 15 <= 2.6508928569999997)
If (feature 20 <= 0.338772014)
Predict: 1.0
Else (feature 20 > 0.338772014)
Predict: 0.0
Else (feature 15 > 2.6508928569999997)
If (feature 19 <= 0.0482599545)
Predict: 1.0
Else (feature 19 > 0.0482599545)
Predict: 0.0
Else (feature 29 > 15.5)
Predict: 0.0
Else (feature 29 > 30.5)
If (feature 16 <= 0.572688423)
If (feature 16 <= 0.554178497)
If (feature 26 <= 0.048132494)
If (feature 14 <= 0.7296955)
Predict: 0.0
Else (feature 14 > 0.7296955)
Predict: 1.0
Else (feature 26 > 0.048132494)
Predict: 0.0
Else (feature 16 > 0.554178497)
If (feature 14 <= 0.3016565)
Predict: 0.0
Else (feature 14 > 0.3016565)
Predict: 1.0
Else (feature 16 > 0.572688423)
Predict: 0.0

Guess you like

Origin www.cnblogs.com/zhuozige/p/12623301.html