使用Scala预测波士顿房价完整项目代码
时间: 2024-12-02 15:18:28 浏览: 2
基于Scala的Spark学习项目设计源码
在Scala中构建一个完整的波士顿房价预测项目通常会包括数据预处理、特征工程、模型训练和评估等步骤。这里是一个简化的示例,我们将使用`Spark MLlib`库来进行预测,因为它是 Scala 中常用的机器学习库:
```scala
import org.apache.spark.ml.feature._
import org.apache.spark.ml.regression.LinearRegression
import org.apache.spark.ml.evaluation.RegressionEvaluator
import org.apache.spark.sql.SparkSession
// 创建SparkSession
val spark = SparkSession.builder.appName("Boston Housing Price Prediction").getOrCreate()
// 加载数据
val dataPath = "path_to_boston_housing_dataset.csv"
val rawDF = spark.read.format("csv").option("header", "true").load(dataPath)
// 数据预处理
val featureCols = Array("CRIM", "ZN", "INDUS", "CHAS", "NOX", "RM", "AGE", "DIS", "RAD", "TAX", "PTRATIO", "B", "LSTAT")
val labelCol = "PRICE"
val processedDF = rawDF.select(featureCols :+ labelCol)
// 数据划分
val Array(trainingData, testData) = processedDF.randomSplit(Array(0.7, 0.3))
// 特征缩放
val scaler = new StandardScaler().setInputCol(labelCol).setOutputCol("scaledLabel")
val scaledTraining = scaler.fit(trainingData)
val scaledTest = scaler.transform(testData)
// 构建并训练线性回归模型
val lr = new LinearRegression().setLabelCol("scaledLabel").setFeaturesCol("features")
val model = lr.fit(scaledTraining)
// 预测
val predictions = model.transform(scaledTest)
// 评估
val evaluator = new RegressionEvaluator().setLabelCol("scaledLabel").setPredictionCol("prediction").setMetricName("rmse")
val rmse = evaluator.evaluate(predictions)
println(s"Root Mean Squared Error (RMSE) on test data = $rmse")
//
阅读全文