跳轉到主要內容

Apache火花™教程:開始使用Apache火花磚

概述

隨著組織創建更多的多樣化和更加數據產品和服務,越來越多的機器學習的需要,可用於開發個人化操作,建議,和預測的見解。Apache火花機器學習庫(MLlib)允許數據科學家專注於他們的數據問題和模型,而不是解決周圍的複雜分布式數據(如基礎設施、配置等)。

模塊在本教程中,您將學習如何:

  • 加載示例數據
  • 準備ML算法和可視化數據
  • 運行一個線性回歸模型
  • 評價一個線性回歸模型
  • 想象一個線性回歸模型

我們也提供一個樣的筆記本你可以導入訪問和運行的所有代碼示例包含在模塊。

加載示例數據

開始使用機器學習最簡單的方法是使用一個磚中可用數據集的例子/ databricks-datasets在磚工作區文件夾訪問。例如,訪問文件相比,城市人口的房屋平均銷售價格,您可以訪問該文件/ databricks-datasets /樣本/ population-vs-price / data_geo.csv

#使用火花CSV和選項指定數據源:# -文件的第一行是標題#——自動推斷出數據的模式data = spark.read。格式(“csv”).option (“頭”,“真正的”).option (“inferSchema”,“真正的”).load (“/ databricks-datasets /樣本/ population-vs-price / data_geo.csv”)data.cache ()#緩存數據更快的重用

查看這些數據以表格格式,而不是出口這些數據的第三方工具,您可以使用顯示()命令你的磚筆記本。

顯示器(數據)

準備ML算法和可視化數據

在監督學習,如回歸算法——你通常定義一個標簽和一組特性。在這個線性回歸的例子中,標簽是2015年平均銷售價格和功能是2014人口的估計。即使用特性(人口)預測的標簽(銷售價格)。

第一行用缺失值和重命名功能下降和標簽列,取代空間_

數據=data.dropna () #下降失蹤exprs=[坳().alias (column.replace (' ',“_”))data.columns]

簡化的創造功能,注冊一個UDF轉換特性(2014 _population_estimate)到一個列向量VectorUDT類型和應用於列。

pyspark.ml.linalg進口向量,VectorUDTspark.udf.register (“oneElementVec”,λd: Vectors.dense ([d]), returnType = VectorUDT ())tdata = data.select (* exprs) .selectExpr (“oneElementVec (2014 _population_estimate)功能”,“2015 _median_sales_price標簽”)

然後顯示新的DataFrame:

顯示器(tdata)

運行線性回歸模型

在本節中,您使用不同的正則化參數運行兩種不同的線性回歸模型來確定這兩個模型預測銷售價格(標簽)基於人口(特性)。

構建模型

#進口LinearRegression類pyspark.ml.regression進口LinearRegression#定義LinearRegression算法lr = LinearRegression ()#適合2模型,使用不同的正則化參數模型= lr。fit(數據,{lr.regParam:0.0})modelB = lr。fit(數據,{lr.regParam:100.0})

使用這個模型,你也可以通過使用預測變換()函數,添加一個新列的預測。例如,下麵的代碼將第一個模型(模型),並向您展示這兩個標簽(原銷售價格)和預測(預測銷售價格)基於特征(人口)。

#做出預測predictionsA = modelA.transform(數據)顯示器(predictionsA)

評估模型

進行回歸分析,計算均方根誤差使用RegressionEvaluator。這是Python代碼來評估兩個模型及其輸出。

pyspark.ml.evaluation進口RegressionEvaluator評估者= RegressionEvaluator (metricName =“rmse”)RMSE = evaluator.evaluate (predictionsA)打印(“模型:根均方誤差= "+str(RMSE))#模型:根均方誤差= 128.602026843
                 predictionsB = modelB.transform(數據)RMSE = evaluator.evaluate (predictionsB)打印(“ModelB:根均方誤差= "+str(RMSE))# ModelB:根均方誤差= 129.496300193

可視化模型

作為許多機器學習算法是典型的,你要想象的散點圖。因為磚支持大熊貓和ggplot,下麵的代碼創建了一個線性回歸圖使用熊貓DataFrame (pydf)和ggplot顯示散點圖和兩個回歸模型。

#進口numpy,熊貓,ggplot進口numpy作為np熊貓進口*ggplot進口*#創建Python DataFrame流行=數據。地圖(λp: (p.features [0])).collect ()價格=數據。地圖(λp: (p.label)) .collect ()predA = predictionsA.select (“預測”)。地圖(λr: [0]).collect ()predB = predictionsB.select (“預測”)。地圖(λr: [0]).collect ()#創建一個熊貓DataFramepydf = DataFrame ({“流行”:流行,“價格”:價格、“predA”:predA,“predB”:predB})可視化模型#創建散點圖和兩個回歸模型使用ggplot(標度指數)p = ggplot (pydf aes (“流行”,“價格”)+geom_point(顏色=“藍”)+geom_line (pydf aes (“流行”,“predA”),顏色=“紅色”)+geom_line (pydf aes (“流行”,“predB”),顏色=“綠色”)+scale_x_log10 scale_y_log10 () + ()顯示器(p)

我們也提供一個樣的筆記本你可以導入訪問和運行的所有代碼示例包含在模塊。

額外的資源

繼續下一個模塊:

Baidu
map