package ml_prj_01_01
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.mllib.regression.LabeledPoint
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.regression.LinearRegressionWithSGD
object linear_02 {
def par1(x: String): Array[Double]={
val a= x.split(",")
val b=a(0).toDouble
val c=a(1).toDouble
val d=a(2).toDouble
val e=a(3).toDouble
val f=a(4).toDouble
val g=a(5).toDouble
val h=a(6).toDouble
val i=a(7).toDouble
val j=a(8).toDouble
val k=a(9).toDouble
val l=a(10).toDouble
return Array(b,c,d,e,f,g,h,i,j,k,l)
}
def par2(x: Array[Double]): LabeledPoint={
return new
LabeledPoint(x(0),Vectors.dense(x(1),x(2),x(3)
,x(4),x(5),x(6),x(7),x(8),x(
9),x(10)) )
}
def main(args: Array[String]) {
val conf = new
SparkConf().setAppName("linear_02").setMaster("local[*]")
val sc = new SparkContext(conf)
val file = sc.textFile("/home/user/Downloads/Prj_files/house price
linear_reg/housedata(linear regression)/pricing_finalized")
val todouble= file.map(x=> par1(x))
val tolp= todouble.map(x=> par2(x))
val training= tolp.filter(x=> x.features(2) >900)
val testing= tolp.filter(x=> x.features(2) <=900)
val model=
LinearRegressionWithSGD.train(training,50,0.0000006,1.0)
val predictions= testing.map(x=>
(x.label,model.predict(x.features)) )
predictions.take(10).foreach(println)
}
}
В приведенном выше коде я получаю прогнозы только как отрицательные. Использование функций и меток для прогнозирования цен дает отрицательный результат, который невозможен. Из-за этого даже среднеквадратическая ошибка и среднеквадратичная ошибка не могут быть рассчитаны.
имена столбцов, соответствующих файлу: -
ценообразование, спальни, ванная комната, sqft_living, sqft_lot, полы, набережная, вид, состояние, sqft_above, sqft_basement
Файл набора данных предоставляется по ссылке ниже:
dataset_file