最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pyspark 隨機(jī)森林的實(shí)現(xiàn)

 更新時(shí)間:2020年04月24日 14:41:57   作者:陽(yáng)望  
這篇文章主要介紹了pyspark 隨機(jī)森林的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

隨機(jī)森林是由許多決策樹(shù)構(gòu)成,是一種有監(jiān)督機(jī)器學(xué)習(xí)方法,可以用于分類和回歸,通過(guò)合并匯總來(lái)自個(gè)體決策樹(shù)的結(jié)果來(lái)進(jìn)行預(yù)測(cè),采用多數(shù)選票作為分類結(jié)果,采用預(yù)測(cè)結(jié)果平均值作為回歸結(jié)果。

“森林”的概念很好理解,“隨機(jī)”是針對(duì)森林中的每一顆決策樹(shù),有兩種含義:第一種隨機(jī)是數(shù)據(jù)采樣隨機(jī),構(gòu)建決策樹(shù)的訓(xùn)練數(shù)據(jù)集通過(guò)有放回的隨機(jī)采樣,并且只會(huì)選擇一定百分比的樣本,這樣可以在數(shù)據(jù)集合存在噪聲點(diǎn)、異常點(diǎn)的情況下,有些決策樹(shù)的構(gòu)造過(guò)程中不會(huì)選擇到這些噪聲點(diǎn)、異常點(diǎn)從而達(dá)到一定的泛化作用在一定程度上抑制過(guò)擬合;第二種隨機(jī)是特征隨機(jī),訓(xùn)練集會(huì)包含一系列特征,隨機(jī)選擇一部分特征進(jìn)行決策樹(shù)的構(gòu)建。通過(guò)這些差異點(diǎn)來(lái)訓(xùn)練的每一顆決策樹(shù)都會(huì)學(xué)習(xí)輸入與輸出的關(guān)系,隨機(jī)森林的強(qiáng)大之處也就在于此。

廢話不多說(shuō),直接上代碼:

from pyspark import SparkConf
from pyspark.sql import SparkSession
from pyspark.ml.linalg import Vectors
from pyspark.ml.feature import StringIndexer
from pyspark.ml.classification import RandomForestClassifier
from pyspark.sql import Row
import pandas as pd
from sklearn import metrics
 
if __name__ == "__main__":
  appname = "RandomForestClassifier"
  master ="local[4]" 
  conf = SparkConf().setAppName(appname).setMaster(master) #spark配置        
  spark=SparkSession.builder.config(conf=conf).getOrCreate()#spark實(shí)例化
  
#讀取數(shù)據(jù)
  data=spark.read.csv('良惡性乳腺癌數(shù)據(jù).csv',header=True)
  
#構(gòu)造訓(xùn)練數(shù)據(jù)集
  dataSet = data.na.fill('0').rdd.map(list)#用0填充空值  
  trainData, testData= dataSet.randomSplit([0.7, 0.3], seed=7)
  trainingSet = trainData.map(lambda x:Row(label=x[-1], features=Vectors.dense(x[:-1]))).toDF()  
  train_num = trainingSet.count()
  print("訓(xùn)練樣本數(shù):{}".format(train_num))
 
   
#使用隨機(jī)森林進(jìn)行訓(xùn)練
  stringIndexer = StringIndexer(inputCol="label", outputCol="indexed")
  si_model = stringIndexer.fit(trainingSet)
  train_tf = si_model.transform(trainingSet)
  train_tf.show(5)  
  rf = RandomForestClassifier(numTrees=100, labelCol="indexed", seed=7)
  rfModel = rf.fit(train_tf)
   
#輸出模型特征重要性、子樹(shù)權(quán)重
  print("模型特征重要性:{}".format(rfModel.featureImportances))
  print("模型特征數(shù):{}".format(rfModel.numFeatures))
  
#預(yù)測(cè)測(cè)試集
  testSet = testData.map(lambda x:Row(label=x[-1], features=Vectors.dense(x[:-1]))).toDF()
  test_num=testSet.count()
  print("測(cè)試樣本數(shù):{}".format(test_num))  
  si_model = stringIndexer.fit(testSet)
  test_tf = si_model.transform(testSet)  
  predictResult = rfModel.transform(test_tf)
  predictResult.show(5)
  spark.stop()
 
#將預(yù)測(cè)結(jié)果轉(zhuǎn)為python中的dataframe
  columns=predictResult.columns#提取強(qiáng)表字段
  predictResult=predictResult.take(test_num)#
  predictResult=pd.DataFrame(predictResult,columns=columns)#轉(zhuǎn)為python中的dataframe
 
#性能評(píng)估
  y=list(predictResult['indexed'])
  y_pred=list(predictResult['prediction'])
  y_predprob=[x[1] for x in list(predictResult['probability'])]
  precision_score=metrics.precision_score(y, y_pred)#精確率
  recall_score=metrics.recall_score(y, y_pred)#召回率
  accuracy_score=metrics.accuracy_score(y, y_pred)#準(zhǔn)確率
  f1_score=metrics.f1_score(y, y_pred)#F1分?jǐn)?shù)
  auc_score=metrics.roc_auc_score(y, y_predprob)#auc分?jǐn)?shù)
  print("精確率:",precision_score )#精確率
  print("召回率:",recall_score )#召回率
  print("準(zhǔn)確率:",accuracy_score )#準(zhǔn)確率
  print("F1分?jǐn)?shù):", f1_score)#F1分?jǐn)?shù)
  print("auc分?jǐn)?shù):",auc_score )#auc分?jǐn)?shù)

運(yùn)行結(jié)果:

到此這篇關(guān)于pyspark 隨機(jī)森林的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)pyspark 隨機(jī)森林內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

烟台市| 中西区| 闻喜县| 安宁市| 乌拉特后旗| 固镇县| 平原县| 安庆市| 阿荣旗| 阜新| 平罗县| 枣强县| 河北区| 宣威市| 邹城市| 青田县| 禹城市| 登封市| 尚志市| 肇东市| 北京市| 江孜县| 大新县| 南京市| 满城县| 南雄市| 临邑县| 鄂尔多斯市| 北票市| 察隅县| 赫章县| 万宁市| 塘沽区| 广汉市| 滦南县| 金寨县| 泸州市| 石河子市| 深泽县| 十堰市| 亚东县|