使用Python,Spark和MLlib執行線性回歸以處理大數據

然後,讓我們加載數據。我們將以libsvm格式讀取.txt文件,因為數據的結構是這樣的。

# Load training data

training_data = spark.read.format("libsvm").load("./sample_linear_regression_data.txt")

這是加載後數據的樣子。

training_data.show()

使用Python,Spark和MLlib執行線性迴歸以處理大數據

我來解釋一下這兩欄:

  • label:具有迴歸數值
  • feature:具有屬於該行的所有特徵的向量

數據的格式是Spark實際需要學習機器學習算法的原因。但是,在實際情況下,數據不會以這種形式格式化,因此需要進行一些數據預處理。但是,通過這個示例數據集,我們可以跳過它,因為它已經完成預處理了。

現在,讓我們使用給定的列創建模型的實例,併為我們的預測實例化一個名為column的預測。

lin_reg=LinearRegression(featuresCol='features',labelCol='label',predictionCol='prediction')

然後擬合模型(記住這可能需要一些時間來查看各種情況下數據集的大小),

lin_reg_model = lin_reg.fit(training_data)

我們可以通過兩個簡單的調用來查看係數和截距。

lin_reg_model.coefficients

使用Python,Spark和MLlib執行線性迴歸以處理大數據

lin_reg_model.intercept

使用Python,Spark和MLlib執行線性迴歸以處理大數據

有關模型的更多摘要,請嘗試運行這些:

lin_reg_model.summary.rootMeanSquaredError

lin_reg_model.summary.r2

這是使用Python對Spark和MLlib執行線性迴歸的方法。

接下來介紹如何從模型中獲取預測以及如何評估模型。

首先,讓我們對數據進行一次訓練測試,以便我們實際擁有一些測試集。

# Load the data

data = spark.read.format("libsvm").load("./sample_linear_regression_data.txt")

# Split the data

split_data = data.randomSplit([0.8,0.2])

split_data

使用Python,Spark和MLlib執行線性迴歸以處理大數據

split_data變量現在包含兩個數據幀的列表:第一個具有80%的數據,另一個具有20%的數據。

讓我們執行一個元組解包來獲取兩個數據幀,

train_data,test_data = split_data

您可以調用train_data.show()或test_data.show()來查看dataframes的樣子。是時候根據訓練數據調整我們的模型了。

model = lin_reg.fit(train_data)

然後,從模型中調用evaluate方法將有助於我們瞭解我們的模型在預測測試數據方面的表現。

result = model.evaluate(test_data)

像以前一樣,您可以從結果變量中調用多個函數來查看不同的摘要。

result.rootMeanSquaredError

...

現在,我們如何從測試數據中獲取我們的功能,然後存儲預測?我們將使用transform函數。

predictions = model.transform(test_data.select('features'))

predictions.show()

使用Python,Spark和MLlib執行線性迴歸以處理大數據

這就是你如何預測未經標記數據的訓練模型。


分享到:


相關文章: