日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pyspark入门---机器学习实战预测婴儿出生率(二)使用ML库

發(fā)布時間:2024/1/8 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pyspark入门---机器学习实战预测婴儿出生率(二)使用ML库 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

機器學習實戰(zhàn)預測嬰兒出生率

      • 1.加載數(shù)據(jù)
      • 2.創(chuàng)建轉(zhuǎn)換器
      • 3.創(chuàng)建預測器
      • 4.創(chuàng)建管道
      • 5.訓練模型
      • 6.使用BinaryClassificationEvaluator對模型評估
      • 7.模型保存與調(diào)用

在上一文中,主要對Spark MLlib機器學習庫使用流程進行了介紹。

從搭建環(huán)境開始,然后加載數(shù)據(jù),探索數(shù)據(jù),直到進行模型的訓練與評估,最終進行未知數(shù)據(jù)的預測,即預測嬰兒生存機會

本文則來介紹如何使用ML機器學習庫來實戰(zhàn)ML!同樣使用上一節(jié)的數(shù)據(jù)集來演示ML的構建過程。再次嘗試預測嬰兒的生存幾率。

**Pipeline——**管道工作流

管道鏈接多個轉(zhuǎn)換器和預測器生成一個機器學習工作流。

管道被指定為一系列階段,每個階段是一個轉(zhuǎn)換器或一個預測器。

第一行表示一個Pipleline,包含三個階段。其中Tokenizer和HashingTF是轉(zhuǎn)換,第三個LogiticRegression邏輯回歸是預測。下面一行代表流水線中的數(shù)據(jù)流,圓柱體表示DataFrame,

(1)對于Raw text文本數(shù)據(jù)和標簽生成DataFrame,然后調(diào)用Pipeline的fit接口;

(2)調(diào)用Tokenizer的transform接口將文本進行分詞,并將分詞添加到DataFrame;

(3)pipleline調(diào)用LogiticRegression.fit產(chǎn)出一個LogiticRegressionModel。

Parameter:所有的Transformer和Estimator共享一個通用的指定參數(shù)的API。

Pipline的使用示例,會在ML構建機器學習的案例中體現(xiàn)出來。

1.加載數(shù)據(jù)

數(shù)據(jù)地址:https://pan.baidu.com/s/1RJIAR4em2L2XiQpZhBWOgg
提取碼:yw39

from pyspark.ml import Pipeline import pyspark.ml.classification as cl import pyspark.ml.evaluation as ev import pandas as pd import numpy as np from pyspark.sql import SparkSession import pyspark.sql.types as typlabels = [('INFANT_ALIVE_AT_REPORT', typ.IntegerType()),('BIRTH_PLACE', typ.StringType()),('MOTHER_AGE_YEARS', typ.IntegerType()),('FATHER_COMBINE_AGE', typ.IntegerType()),('CIG_BEFORE', typ.IntegerType()),('CIG_1_TRI', typ.IntegerType()),('CIG_2_TRI', typ.IntegerType()),('CIG_3_TRI', typ.IntegerType()),('MOTHER_HEIGHT_IN', typ.IntegerType()),('MOTHER_PRE_WEIGHT', typ.IntegerType()),('MOTHER_DELIVERY_WEIGHT', typ.IntegerType()),('MOTHER_WEIGHT_GAIN', typ.IntegerType()),('DIABETES_PRE', typ.IntegerType()),('DIABETES_GEST', typ.IntegerType()),('HYP_TENS_PRE', typ.IntegerType()),('HYP_TENS_GEST', typ.IntegerType()),('PREV_BIRTH_PRETERM', typ.IntegerType())]schema = typ.StructType([typ.StructField(e[0], e[1], False) for e in labels ])births = spark.read.csv('data/births_transformed.csv', header=True, schema=schema) births.show(3)

2.創(chuàng)建轉(zhuǎn)換器

1、先將births中的BIRTH_PLACE字段類型修改為數(shù)值類型

2、然后創(chuàng)建一個轉(zhuǎn)換器 OneHotEncoder可以對數(shù)值類型的數(shù)據(jù)進行編碼,從而轉(zhuǎn)化為數(shù)值類型

3、創(chuàng)建一個單一的列,將所有的特征聚集到一起 該方法是一個列表(沒有包含標簽列),包含所有要組成outputCol的列,outputCol表示輸出的列的名為’features’。

# 創(chuàng)建轉(zhuǎn)換器 import pyspark.ml.feature as ftbirths = births.withColumn('BIRTH_PLACE_INT', births['BIRTH_PLACE']\.cast(typ.IntegerType()))# birth place使用one-hot編碼 encoder = ft.OneHotEncoder(inputCol='BIRTH_PLACE_INT',outputCol='BIRTH_PLACE_VEC')# 創(chuàng)建單一的列將所有特征整合在一起 featuresCreator = ft.VectorAssembler(inputCols=[col[0] for col in labels[2:]] + [encoder.getOutputCol()],outputCol='features' )

3.創(chuàng)建預測器

這里使用和上節(jié)一致的邏輯回歸模型LogisticRegression,只不過來自pyspark.ml.classification模塊。

在此我們還是先導入依賴,再創(chuàng)建模型。

#需要注意的是,如果數(shù)據(jù)的標簽列的名稱為label 則無需指定labelCol,如果featuresCre的輸出不為’features’,需要使用featuresCre調(diào)用getOutputColl()來指明featuresCol

# 預測模型性能 import pyspark.ml.classification as cllogistic = cl.LogisticRegression(maxIter=10,regParam=0.01,featuresCol=featuresCreator.getOutputCol(),labelCol='INFANT_ALIVE_AT_REPORT') # 擬合模型 birth_train, birth_test = births.randomSplit([0.7,0.3],seed=123) model = pipeline.fit(birth_train) test_model = model.transform(birth_test)import pyspark.ml.evaluation as ev evaluator = ev.BinaryClassificationEvaluator(rawPredictionCol='probability',labelCol='INFANT_ALIVE_AT_REPORT' )

4.創(chuàng)建管道

前面創(chuàng)建了兩個轉(zhuǎn)換器和一個預測器

現(xiàn)在需要做的事情是將兩個轉(zhuǎn)換器和一個預測器連接起來,放入一個管道中。

因此我們需要創(chuàng)建一個管道:依然是導入相應的模塊,然后實例化一個管道實例。

代碼創(chuàng)建一個管道,并其依次將轉(zhuǎn)換器enco、featuresCre和預測器lr結合了起來

# 創(chuàng)建一個管道 from pyspark.ml import Pipelinepipeline = Pipeline(stages=[encoder, featuresCreator, logistic])

5.訓練模型

(在創(chuàng)建預測器的時候已經(jīng)分好了,這一步要在預測用,可以看上面預測器的代碼)
有了轉(zhuǎn)換器、預測器和管道,我們就可以利用數(shù)據(jù)集進行訓練模型了,

但是為了確保模型的說服力,在訓練模型之前,需要把數(shù)據(jù)集拆分為訓練集和測試集

其中訓練集births_train用來訓練模型、測試集births_test用來評估模型

訓練模型時,訓練集傳遞給enco轉(zhuǎn)換器,enco轉(zhuǎn)換器輸出的DataFrame傳遞給featuresCre轉(zhuǎn)換器,featuresCre轉(zhuǎn)換器的輸出為features列,features列再傳遞給預測器lr邏輯回歸模型。

調(diào)用管道模型model對象的transform方法會獲得預測值

# 擬合模型 birth_train, birth_test = births.randomSplit([0.7,0.3],seed=123)model = pipeline.fit(birth_train) test_model = model.transform(birth_test)

6.使用BinaryClassificationEvaluator對模型評估

此步依然使用BinaryClassificationEvaluator對模型評估

這一步驟與MLlib中基本相同。

先導入模型評估的模塊、然后實例化BinaryClassificationEvaluator評估器

最后打印相關評估結果。

# 評估模型性能 import pyspark.ml.evaluation as evevaluator = ev.BinaryClassificationEvaluator(rawPredictionCol='probability',labelCol='INFANT_ALIVE_AT_REPORT' )print(evaluator.evaluate(test_model, {evaluator.metricName:'areaUnderROC'})) print(evaluator.evaluate(test_model, {evaluator.metricName:'areaUnderPR'}))

7.模型保存與調(diào)用

包括管道的保存與加載、模型的保存與加載

這一步驟與MLlib中基本相同。

# 保存模型pipeline pipelinePath = './infant_oneHotEncoder_Logistic_Pipeline' pipeline.write().overwrite().save(pipelinePath)# 重載模型pipeline loadedPipeline = Pipeline.load(pipelinePath) loadedPipeline.fit(birth_train).transform(birth_test).take(1)# 保存模型 from pyspark.ml import PipelineModelmodelPath = './infant_oneHotEncoder_LogisticPipelineModel' model.write().overwrite().save(modelPath)# 載入模型 loadedPipelineModel = PipelineModel.load(modelPath) test_reloadedModel = loadedPipelineModel.transform(birth_test) test_reloadedModel.take(1)

通過本文的學習,大致了解了Spark.ML機器學習庫的使用步驟:

包括加載數(shù)據(jù)、創(chuàng)建轉(zhuǎn)換器和預測器、創(chuàng)建管道、訓練模型、模型評估以及模型的保存與調(diào)用

ML與上一節(jié)MLlib的使用步驟主要區(qū)別在于預測器和管道的創(chuàng)建、這是ML特殊的地方。

而且從spark2.x版本開始人們更傾向于使用ML

總結

以上是生活随笔為你收集整理的pyspark入门---机器学习实战预测婴儿出生率(二)使用ML库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 永久免费不卡在线观看黄网站 | 国产a级一级片 | 这里只有精品国产 | 大香伊人 | 波多野结衣1区2区3区 | 有码在线视频 | 成人毛片在线观看 | 国产第20页 | 国产午夜精品一区二区三区 | 91久久久久久久久久久 | 老司机狠狠爱 | 91爱国产| 亚洲精品v日韩精品 | 成人拍拍 | 国产高清日韩 | 少妇搡bbbb搡bbb搡澳门 | 欧洲精品久久一区二区 | 中文字幕欧美人妻精品一区蜜臀 | 欧美精品一区视频 | √8天堂资源地址中文在线 欧美精品在线一区二区 | 老头老太吃奶xb视频 | 成年人免费av | av一区二区三区在线 | 91视频污在线观看 | 两性午夜视频 | 国产精品传媒在线 | 欧美精品日韩精品 | 国产欧美在线 | 国产精品一区二区三区四区视频 | 国产小视频免费观看 | 欧美成人精品欧美一 | 中文视频一区二区 | 黄色a一级片 | 色狠狠综合| 成人在线视频一区二区三区 | 狠狠干天天 | 高h av | 国产一区二区三区 | 黄色操人视频 | 30一40一50女人毛片 | 91黄色影视| 91丨porny在线| 看av在线 | 欧美特黄一区二区三区 | 日韩色影院 | 深夜福利在线免费观看 | 美女扒逼| 欧美日韩国产综合网 | 亚洲欧美另类一区 | 国产日韩一区二区三区 | 不卡视频在线观看 | 动漫美女被吸乳奶动漫视频 | 成人免费网视频 | 欧美精品久久99 | 一级片成人 | 情欲超| 国产精品777777| 先锋影音一区二区三区 | 国产亚洲av综合人人澡精品 | 久久久久久久久久免费视频 | 欧美第五页 | 国内精品视频在线 | free性m.freesex欧美 | 69精品国产 | 欧美一级α片 | 色哟哟精品一区 | 草草影院最新地址 | 污漫在线观看 | 欧美精品日韩在线 | 不卡免费视频 | 亚洲精品偷拍视频 | 公肉吊粗大爽色翁浪妇视频 | 国产剧情精品 | 女人脱下裤子让男人桶 | 久久免费看 | 日本三级播放 | 国产黄色免费 | 色爱av综合网 | www.在线视频| 天堂精品一区 | 亚洲黄色第一页 | av资源一区 | 无码人妻精品一区二区50 | 久久激情婷婷 | 日韩一区二区三区久久 | 一级片欧美 | 中国丰满人妻videoshd | 操操操干干干 | 日韩精品电影在线 | 杨幂一区二区国产精品 | 欧美v在线 | 欧美一区二区三区久久成人精品 | 德国性猛交xxxxhd | www色网| 欧美成人三级伦在线观看 | 日韩av在线一区二区 | 国产第一区第二区 | 日本一区二区三区免费在线观看 | 成人做爰视频www网站小优视频 |