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

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

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

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

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

廢話不多說,直接上代碼:

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)
   
#輸出模型特征重要性、子樹權(quán)重
  print("模型特征重要性:{}".format(rfModel.featureImportances))
  print("模型特征數(shù):{}".format(rfModel.numFeatures))
  
#預(yù)測測試集
  testSet = testData.map(lambda x:Row(label=x[-1], features=Vectors.dense(x[:-1]))).toDF()
  test_num=testSet.count()
  print("測試樣本數(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ù)測結(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
 
#性能評估
  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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

邵东县| 崇文区| 六枝特区| 宣化县| 泸溪县| 将乐县| 锦州市| 莎车县| 清水河县| 家居| 林周县| 邹平县| 保定市| 章丘市| 萨迦县| 延津县| 日土县| 海盐县| 惠州市| 福鼎市| 茶陵县| 宣汉县| 易门县| 五大连池市| 连山| 建阳市| 南澳县| 蒲江县| 吉木乃县| 南城县| 会理县| 泸西县| 太康县| 雅江县| 皮山县| 容城县| 清水县| 四川省| 宜都市| 西城区| 邵阳市|