然後,讓我們加載數據。我們將以libsvm格式讀取.txt文件,因為數據的結構是這樣的。
# Load training data
training_data = spark.read.format("libsvm").load("./sample_linear_regression_data.txt")
這是加載後數據的樣子。
training_data.show()
我來解釋一下這兩欄:
- 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
lin_reg_model.intercept
有關模型的更多摘要,請嘗試運行這些:
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
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()
這就是你如何預測未經標記數據的訓練模型。
閱讀更多 不靠譜的貓 的文章