之前做了個基于鳶尾花的邏輯回歸模型。本篇做的是使用真實數(shù)據(jù)的lr模型,遇到的一些問題,解決在此記錄。
1 讀取數(shù)據(jù)。因為之前在sklean上做的時候?qū)С隽薱sv文件,所以這里可以簡單導入
? ? 這里做的是特征工程后的數(shù)據(jù),后面考慮特征工程在spark上的實現(xiàn)。

2 把維度字段都放到features向量中,這里遇到點問題。本身數(shù)據(jù)為string.要轉(zhuǎn)換成float才能用于向量,以及機器學習模型。
這里我用df.withColumn循環(huán)把string類型字段轉(zhuǎn)換為float.(pandas 下的dataframe可以df.astype轉(zhuǎn)換數(shù)據(jù)類型)

3 設(shè)計模型并訓練。這里當對于之前的鳶尾花demo,使用了交叉驗證,用來找出最優(yōu)的超參數(shù)。這里有2*3=6種不同的超參數(shù)組合。

4模型評估。這里除了評估外,還展示了訓練完最優(yōu)的邏輯回歸模型的相關(guān)參數(shù)。

總結(jié):在小數(shù)據(jù)集上(w級別),sklean比spark ml快一些,spark需要一定的啟動時間。在200W數(shù)據(jù),20+維度上面,發(fā)現(xiàn)spark ml 比sklean在速度上有了一個大的提升。sklean的lr訓練時間在30+分鐘左右,spark ml的訓練時間3分鐘左右(spark為單機local模式,虛擬機4核4G內(nèi)存)
1在公司的spark集群服務器上測試模型運算速度,時間上應該會有一個巨大提升。
2實現(xiàn)下在spark ml做特征工程部分。