Spark MLlib 機器學習詳解

目錄

🍉引言

🍉Spark MLlib 簡介

🍈 主要特點

🍈常見應用場景

🍉安裝與配置

🍉數據處理與準備

🍈加載數據

🍈數據預處理

🍉分類模型

🍈邏輯回歸

🍈評價模型

🍉回歸模型

🍈線性回歸

🍈評價模型

🍉聚類模型

🍈K-means 聚類

🍈評價模型

🍉降維模型

🍈PCA 主成分分析

🍉 協同過濾

🍈ALS 模型

🍈評價模型

🍉實戰案例:房價預測

🍈數據加載與預處理

🍈模型訓練與預測

🍈模型評估

🍈結果分析

🍉總結


🍉引言

  • Apache Spark 是一個開源的分布式計算框架,它提供了高效的處理大規模數據集的能力。Spark MLlib 是 Spark 的機器學習庫,旨在提供可擴展的、易于使用的機器學習算法。MLlib 提供了一系列工具,用于分類、回歸、聚類、協同過濾、降維等任務。
  • 本文將詳細介紹 Spark MLlib 的功能及其應用,結合實例講解如何在實際數據處理中使用這些功能。

🍉Spark MLlib 簡介

🍈 主要特點

  • 易于使用:提供了豐富的 API,支持 Scala、Java、Python 和 R 等多種編程語言。
  • 高度可擴展:可以處理海量數據,適用于大規模機器學習任務。
  • 豐富的算法庫:支持分類、回歸、聚類、降維、協同過濾等常用算法。

🍈常見應用場景

  • 分類:如垃圾郵件檢測、圖像識別、情感分析等。
  • 回歸:如房價預測、股票價格預測等。
  • 聚類:如客戶分群、圖像分割等。
  • 協同過濾:如推薦系統等。
  • 降維:如特征選擇、特征提取等。

🍉安裝與配置

在使用 Spark MLlib 之前,需要確保已經安裝了 Apache Spark。可以通過以下命令安裝Spark:

# 安裝 Spark
!apt-get install -y spark# 安裝 PySpark
!pip install pyspark

🍉數據處理與準備

機器學習的第一步通常是數據的獲取與預處理。以下示例演示如何加載數據并進行預處理。

🍈加載數據

我們使用一個簡單的示例數據集:波士頓房價數據集。該數據集包含506個樣本,每個樣本有13個特征和1個目標變量(房價)。

from pyspark.sql import SparkSession# 創建 SparkSession
spark = SparkSession.builder.appName("MLlibExample").getOrCreate()# 加載數據集
data_path = "path/to/boston_housing.csv"
data = spark.read.csv(data_path, header=True, inferSchema=True)
data.show(5)

🍈數據預處理

預處理步驟包括數據清洗、特征選擇、數據標準化等。

from pyspark.sql.functions import col
from pyspark.ml.feature import VectorAssembler, StandardScaler# 選擇特征和目標變量
feature_columns = data.columns[:-1]
target_column = data.columns[-1]# 將特征列組合成一個向量
assembler = VectorAssembler(inputCols=feature_columns, outputCol="features")
data = assembler.transform(data)# 標準化特征
scaler = StandardScaler(inputCol="features", outputCol="scaledFeatures")
scaler_model = scaler.fit(data)
data = scaler_model.transform(data)# 選擇最終的數據集
data = data.select(col("scaledFeatures").alias("features"), col(target_column).alias("label"))
data.show(5)

🍉分類模型

🍈邏輯回歸

邏輯回歸是一種常用的分類算法。以下示例演示如何使用邏輯回歸進行分類。

from pyspark.ml.classification import LogisticRegression# 創建邏輯回歸模型
lr = LogisticRegression(featuresCol="features", labelCol="label")# 拆分數據集
train_data, test_data = data.randomSplit([0.8, 0.2])# 訓練模型
lr_model = lr.fit(train_data)# 預測
predictions = lr_model.transform(test_data)
predictions.select("features", "label", "prediction").show(5)

🍈評價模型

模型評估是機器學習過程中的重要環節。我們可以使用準確率、精確率、召回率等指標來評估分類模型。

from pyspark.ml.evaluation import MulticlassClassificationEvaluator# 評價模型
evaluator = MulticlassClassificationEvaluator(labelCol="label", predictionCol="prediction", metricName="accuracy")
accuracy = evaluator.evaluate(predictions)
print(f"Accuracy: {accuracy}")

🍉回歸模型

🍈線性回歸

線性回歸用于預測連續值。以下示例演示如何使用線性回歸進行預測。

from pyspark.ml.regression import LinearRegression# 創建線性回歸模型
lr = LinearRegression(featuresCol="features", labelCol="label")# 訓練模型
lr_model = lr.fit(train_data)# 預測
predictions = lr_model.transform(test_data)
predictions.select("features", "label", "prediction").show(5)

🍈評價模型

我們可以使用均方誤差(MSE)、均方根誤差(RMSE)等指標來評估回歸模型。

from pyspark.ml.evaluation import RegressionEvaluator# 評價模型
evaluator = RegressionEvaluator(labelCol="label", predictionCol="prediction", metricName="rmse")
rmse = evaluator.evaluate(predictions)
print(f"RMSE: {rmse}")

🍉聚類模型

🍈K-means 聚類

K-means 是一種常用的聚類算法。以下示例演示如何使用 K-means 進行聚類。

from pyspark.ml.clustering import KMeans# 創建 K-means 模型
kmeans = KMeans(featuresCol="features", k=3)# 訓練模型
kmeans_model = kmeans.fit(data)# 預測
predictions = kmeans_model.transform(data)
predictions.select("features", "prediction").show(5)

🍈評價模型

我們可以使用輪廓系數(Silhouette Coefficient)等指標來評估聚類模型。

from pyspark.ml.evaluation import ClusteringEvaluator# 評價模型
evaluator = ClusteringEvaluator(featuresCol="features", predictionCol="prediction", metricName="silhouette")
silhouette = evaluator.evaluate(predictions)
print(f"Silhouette Coefficient: {silhouette}")

🍉降維模型

🍈PCA 主成分分析

PCA 是一種常用的降維技術,用于減少數據的維度,同時保留盡可能多的信息。以下示例演示如何使用 PCA 進行降維。

from pyspark.ml.feature import PCA# 創建 PCA 模型
pca = PCA(k=3, inputCol="features", outputCol="pcaFeatures")# 訓練模型
pca_model = pca.fit(data)# 轉換數據
pca_result = pca_model.transform(data)
pca_result.select("features", "pcaFeatures").show(5)

🍉 協同過濾

🍈ALS 模型

ALS(交替最小二乘法)是一種常用的協同過濾算法,常用于推薦系統。以下示例演示如何使用 ALS 進行推薦。

from pyspark.ml.recommendation import ALS# 創建 ALS 模型
als = ALS(userCol="userId", itemCol="movieId", ratingCol="rating")# 訓練模型
als_model = als.fit(train_data)# 預測
predictions = als_model.transform(test_data)
predictions.select("userId", "movieId", "rating", "prediction").show(5)

🍈評價模型

我們可以使用均方誤差(MSE)等指標來評估協同過濾模型。

evaluator = RegressionEvaluator(labelCol="rating", predictionCol="prediction", metricName="rmse")
rmse = evaluator.evaluate(predictions)
print(f"RMSE: {rmse}")

🍉實戰案例:房價預測

接下來,我們將通過一個實戰案例,完整展示如何使用 Spark MLlib 進行房價預測。步驟包括數據加載與預處理、模型訓練與預測、模型評估。

🍈數據加載與預處理

# 加載數據集
data_path = "path/to/boston_housing.csv"
data = spark.read.csv(data_path, header=True, inferSchema=True)# 數據預處理
assembler = VectorAssembler(inputCols=data.columns[:-1], outputCol="features")
data = assembler.transform(data)scaler = StandardScaler(inputCol="features", outputCol="scaledFeatures")
scaler_model = scaler.fit(data)
data = scaler_model.transform(data)data = data.select(col("scaledFeatures").alias("features"), col("label"))

🍈模型訓練與預測

我們將使用線性回歸模型進行房價預測。

# 拆分數據集
train_data, test_data = data.randomSplit([0.8, 0.2])# 創建線性回歸模型
lr = LinearRegression(featuresCol="features", labelCol="label")# 訓練模型
lr_model = lr.fit(train_data)# 預測
predictions = lr_model.transform(test_data)

🍈模型評估

# 評價模型
evaluator = RegressionEvaluator(labelCol="label", predictionCol="prediction", metricName="rmse")
rmse = evaluator.evaluate(predictions)
print(f"RMSE: {rmse}")

🍈結果分析

我們可以通過繪圖等手段進一步分析預測結果。

import matplotlib.pyplot as plt# 提取實際值和預測值
actual = predictions.select("label").toPandas()
predicted = predictions.select("prediction").toPandas()# 繪制實際值與預測值對比圖
plt.figure(figsize=(10, 6))
plt.scatter(actual, predicted, alpha=0.5)
plt.xlabel("Actual")
plt.ylabel("Predicted")
plt.title("Actual vs Predicted")
plt.show()

🍉總結

  • 本文詳細介紹了 Spark MLlib 的功能及其應用,結合實例演示了分類、回歸、聚類、降維、協同過濾等常用機器學習任務的實現過程。通過這些實例,我們可以看到 Spark MLlib 強大的數據處理和機器學習能力,非常適合大規模數據的處理與分析。
  • 在實際應用中,根據具體需求選擇合適的算法和模型,并通過數據預處理、特征選擇、模型訓練與評估等步驟,不斷優化和提升模型性能,從而解決實際問題。
  • 希望本文能夠為讀者提供一個全面的 Spark MLlib 機器學習的參考,幫助讀者更好地理解和應用這一強大的工具。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/23404.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/23404.shtml
英文地址,請注明出處:http://en.pswp.cn/web/23404.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

? 傳知代碼 ? 輔助任務改進社交帖子多模態分類

💛前情提要💛 本文是傳知代碼平臺中的相關前沿知識與技術的分享~ 接下來我們即將進入一個全新的空間,對技術有一個全新的視角~ 本文所涉及所有資源均在傳知代碼平臺可獲取 以下的內容一定會讓你對AI 賦能時代有一個顛覆性的認識哦&#x…

【自然語言處理】【Scaling Law】語言模型物理學 第3.3部分:知識容量Scaling Laws

語言模型物理學3.3:知識容量Scaling Laws 論文名稱:Physics of Language Models: Part 3.3, Knowledge Capacity Scaling Laws 論文地址:https://arxiv.org/pdf/2404.05405 相關博客 【自然語言處理】【Scaling Law】Observational Scaling …

R語言探索與分析17-股票題目

Value at Risk(VaR)是一種統計技術,用于量化投資組合在正常市場條件下可能遭受的最大潛在損失。它是風險管理和金融領域中一個非常重要的概念。VaR通常以貨幣單位表示,用于估計在給定的置信水平和特定時間范圍內,投資組…

OpenCV的小部件最基本范例

OpenCV也有與PYQT類似的小部件,例如滑塊slider。OpenCV可以用與PYQT類似的“信號與槽”方法,也可以在函數中直接查詢小部件的值。 import cv2 import numpy as npcv2.namedWindow(Show1) image np.zeros((100, 400, 3), np.uint8) # 創建一個空白內容…

JavaScript基礎知識4(數組、函數、參數、作用域、具名和匿名函數、邏輯運算符短路、轉化布爾類型)

JavaScript基礎知識4(數組、函數、參數、作用域、具名和匿名函數、邏輯運算符短路、轉化布爾類型) 數組數組是什么?數組的基本使用定義數組和數組單元訪問數組和數組索引數據單元值類型數組長度屬性 操作數組 函數聲明和調用聲明(…

(面試官問我微服務與naocs的使用我回答了如下,面試官讓我回去等通知)微服務拆分與nacos的配置使用

微服務架構 正常的小項目就是所有的功能集成在一個模塊中,這樣代碼之間不僅非常耦合,而且修改處理的時候也非常的麻煩,應對高并發時也不好處理,所以 我們可以使用微服務架構,對項目進行模塊之間的拆分,每一…

前端傳參數后端變量類型能夠接受到List卻無法接收到值

問題描述 今天寫了個接口,下圖所示 ReqVO里是這樣的: 然后前端去請求,從請求結果中看發現這里值是在的(有經驗的可能就看出來了otherInfo.id: 這樣以參數后端是接收不到的,但是當時沒發現) 傳進來后端…

維納運動的概念

維納運動(Wiener Process),也稱為標準布朗運動,是一種重要的隨機過程,廣泛應用于數學、物理學和金融學等領域。它是一個連續時間的隨機過程,具有一些特殊的性質,使其成為描述隨機動態系統的經典…

GAT1399協議分析(8)--批量圖像查詢

一、請求消息定義 視頻圖像包含視頻片段、 圖像、 文件、 人員、 人臉、 機動車、 非機動車、 物品、 場景和視頻案事件、 視頻圖像標簽等對象 在消息體中,可以包含其中一種類,加上Data字段即可。 ImageInfo對象 二、請求消息實例 wireshark 抓包實例 請求: 文本化: /V…

制造執行MES系統在光伏行業的應用

全球對可再生能源的需求不斷增長,光伏能源作為一種清潔、可持續的能源形式,已經在廣泛應用中受到了廣泛關注。為滿足工業領域的光伏能源需求,光伏制造執行系統(MES)作為一種集成化的技術解決方案,提供了更高效、更可靠的解決方案。…

WPS的JSA算國產編程語言,IDE,腳本工具嗎?javascript代替VBA

現在wps用javascript代替VBA,應該算很成功了吧。 如果可以獨立出來變成一個腳本語言,簡單的IDE(本身也有類似VBA,不要寄宿在WPS里面運行,這樣就可以變成VBS一樣執行腳本了,用來開發按鍵精靈,LUA一樣的腳本很不錯 以下…

Activity->Activity中動態添加Fragment->Fragment回退棧BackStack

Fragment回退棧 Fragment回退棧用于管理Fragment的導航歷史(添加、刪除、替換)。每個Activity都有一個包含其所有Fragment的FragmentManager,調用其addToBackStack方法時,這個事務就會被添加到FragmentManager的回退棧中當用戶按下返回鍵時,…

MySQL報ERROR 2002 (HY000)解決

今天在連接客戶服務器時MySQL的時候報: ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql/mysql.sock’ (2) [rootXXX ~]# mysql -uroot -p Enter password: ERROR 2002 (HY000): Can’t connect to local MySQL server through socket…

rman恢復后,少部分數據文件狀態為MISSING000**

客戶有套一體機,每天晚上21點開始做rman完全備份,大約第2天上午9點多完成備份,rman備份保留策略保留一份完全備份 6月1日晚21點自動發起備份,6月2日上午10點15分完成備份,并生成了一個控制文件備份 c-4063271871-2024…

前端圖片在切換暗黑模式時太亮該怎么辦?

通過css中的filter屬性來實現,進行圖片的色系反轉、亮度、對比度調整等 1、invert 反轉輸入圖像,值為 100% 則圖像完全反轉,值為 0% 則圖像無變化 filter: invert(1); 2、blur 給元素應用高斯模糊效果。 filter: blur(5px); 3、brightnes…

如何解決網絡問題?

組織和 IT 管理員盡其所能完善他們的網絡,但是,不同程度的網絡問題仍然可能出現,這些網絡問題需要立即響應和解決,如果這些問題在不合理的時間內得不到解決,網絡和組織的損害可能會付出高昂的代價。這就是為什么 IT 管…

【漏洞復現】銳捷校園網自助服務系統 login_judge.jsf 任意文件讀取漏洞(XVE-2024-2116)

0x01 產品簡介 銳捷校園網自助服務系統是銳捷網絡推出的一款面向學校和校園網絡管理的解決方案。該系統旨在提供便捷的網絡自助服務,使學生、教職員工和網絡管理員能夠更好地管理和利用校園網絡資源。 0x02 漏洞概述 校園網自助服務系統/selfservice/selfservice…

css移動端開發

1.視口 視口標簽 視口元標簽&#xff08;Viewport Meta Tag&#xff09;用于控制網頁在移動設備上的視口行為&#xff0c;確保頁面能夠正確縮放和調整。通常在HTML的<head>部分添加如下代碼&#xff1a; <meta name"viewport" content"widthdevice-…

《大道平淵》· 玖 —— 把高深的道理講的通俗,這是一門藝術。

《平淵》 玖 "化繁為簡, 點石成金。" 把高深的道理講得通俗&#xff0c;這是一門藝術&#xff01; 講述者能夠站在群眾的角度&#xff0c;用盡可能簡單通俗的語言來解釋復雜的概念。 講述者需要對概念有深刻的理解&#xff0c;還要有靈活的表達能力。 群眾愿意接受…

從當當網批量獲取圖書信息

爬取當當網圖書數據并保存到本地&#xff0c;使用request、lxml的etree模塊、pandas保存數據為excel到本地。 爬取網頁的url為&#xff1a; http://search.dangdang.com/?key{}&actinput&page_index{} 其中key為搜索關鍵字&#xff0c;page_index為頁碼。 爬取的數據…