我試圖在pyspark上運行Spark MLlib軟件包,並附帶一個測試機器學習數據集。我將數據集分成半訓練數據集和半測試數據集。以下是我建立模型的代碼。但是,它顯示了所有因變量中NaN,NaN的重量。無法弄清楚爲什麼。但是,當我嘗試使用StandardScaler函數來標準化數據時,它很有用。Spark MLlib軟件包NaN權重
model = LinearRegressionWithSGD.train(train_data, step = 0.01)
# evaluate model on test data set
valuesAndPreds = test_data.map(lambda p: (p.label, model.predict(p.features)))
非常感謝您的幫助。
下面是我用來進行縮放的代碼。
scaler = StandardScaler(withMean = True, withStd = True).fit(data.map(lambda x:x.features))
feature = [scaler.transform(x) for x in data.map(lambda x:x.features).collect()]
label = data.map(lambda x:x.label).collect()
scaledData = [LabeledPoint(l, f) for l,f in zip(label, feature)]
它是一個標準的數據集? –
Hi Rishi,是的,它是一個包含9個預測變量的標準數據集。是否因爲SGD對功能縮放非常敏感?我有一些變量的數量很大,一些變量的數字較小(例如,一個因變量是1平方米的總收入平均值,另一個是平均客戶數量爲5),所以我需要調整它們每? –
啊,你走了!這應該工作。我只是在我的回答中發佈了這一點。 –