本文整理汇总了Scala中org.apache.spark.ml.regression.LinearRegressionModel类的典型用法代码示例。如果您正苦于以下问题:Scala LinearRegressionModel类的具体用法?Scala LinearRegressionModel怎么用?Scala LinearRegressionModel使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了LinearRegressionModel类的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Scala代码示例。
示例1: LocalLinearRegressionModel
//设置package包名称以及导入依赖的类
package io.hydrosphere.spark_ml_serving.regression
import io.hydrosphere.spark_ml_serving._
import org.apache.spark.ml.linalg.Vector
import org.apache.spark.ml.regression.LinearRegressionModel
class LocalLinearRegressionModel(override val sparkTransformer: LinearRegressionModel) extends LocalTransformer[LinearRegressionModel] {
override def transform(localData: LocalData): LocalData = {
localData.column(sparkTransformer.getFeaturesCol) match {
case Some(column) =>
val predict = classOf[LinearRegressionModel].getMethod("predict", classOf[Vector])
predict.setAccessible(true)
val newCol = LocalDataColumn(sparkTransformer.getPredictionCol, column.data.map { data =>
val vector = data.asInstanceOf[Vector]
predict.invoke(sparkTransformer,vector).asInstanceOf[Double]
})
localData.withColumn(newCol)
case None =>
localData
}
}
}
object LocalLinearRegressionModel extends LocalModel[LinearRegressionModel] {
override def load(metadata: Metadata, data: Map[String, Any]): LinearRegressionModel = {
val intercept = data("intercept").asInstanceOf[java.lang.Double]
val coeffitientsMap = data("coefficients").asInstanceOf[Map[String, Any]]
val coeffitients = DataUtils.constructVector(coeffitientsMap)
val ctor = classOf[LinearRegressionModel].getConstructor(classOf[String], classOf[Vector], classOf[Double])
val inst = ctor.newInstance(metadata.uid, coeffitients, intercept)
inst
.set(inst.featuresCol, metadata.paramMap("featuresCol").asInstanceOf[String])
.set(inst.predictionCol, metadata.paramMap("predictionCol").asInstanceOf[String])
.set(inst.labelCol, metadata.paramMap("labelCol").asInstanceOf[String])
.set(inst.elasticNetParam, metadata.paramMap("elasticNetParam").toString.toDouble)
// NOTE: introduced in spark 2.1 for reducing iterations for big datasets, e.g unnecessary for us
//.set(inst.aggregationDepth, metadata.paramMap("aggregationDepth").asInstanceOf[Int])
.set(inst.maxIter, metadata.paramMap("maxIter").asInstanceOf[Number].intValue())
.set(inst.regParam, metadata.paramMap("regParam").toString.toDouble)
.set(inst.solver, metadata.paramMap("solver").asInstanceOf[String])
.set(inst.tol, metadata.paramMap("tol").toString.toDouble)
.set(inst.standardization, metadata.paramMap("standardization").asInstanceOf[Boolean])
.set(inst.fitIntercept, metadata.paramMap("fitIntercept").asInstanceOf[Boolean])
}
override implicit def getTransformer(transformer: LinearRegressionModel): LocalTransformer[LinearRegressionModel] = new LocalLinearRegressionModel(transformer)
}
示例2: TrainModel
//设置package包名称以及导入依赖的类
package songs
import org.apache.spark.ml.PipelineModel
import org.apache.spark.ml.regression.LinearRegressionModel
import org.apache.spark.mllib.evaluation.RegressionMetrics
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql.SQLContext
import org.slf4j.LoggerFactory
object TrainModel {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setAppName(Config.appName)
val sc = new SparkContext(conf)
val sqlContext = new SQLContext(sc)
val logger = LoggerFactory.getLogger(getClass.getName)
logger.info("Loading datasets from parquet format")
val data = SongML.loadModelData(sqlContext = sqlContext)
logger.info("Showing summary stats for training data")
val summary = data.training.describe(SongML.allColumns:_*)
summary.show(1000)
logger.info("Training Linear Regression Model")
val startTime = System.nanoTime()
val pipeline = SongML.trainingPipeline.fit(data.training)
val elapsedTime = (System.nanoTime() - startTime) / 1e9
logger.info(s"Training time: $elapsedTime seconds")
logger.info("Calculating Regression Metrics")
val bestModel = pipeline.bestModel.asInstanceOf[PipelineModel]
val testPredictions: RDD[(Double,Double)] = bestModel.transform(data.training)
.select(SongML.predictionColumn, SongML.labelColumn)
.map(r => (r.getAs[Double](SongML.predictionColumn), r.getAs[Double](SongML.labelColumn)))
val rm = new RegressionMetrics(testPredictions)
val model = bestModel.stages(SongML.lrStages.indices.last).asInstanceOf[LinearRegressionModel]
logger.info(s"Saving model to ${Config.modelOut}")
model.write.overwrite().save(Config.modelOut)
logger.info(SongML.printStats(model,rm,"Training"))
logger.info("Exiting")
sc.stop()
}
}
示例3: EvaluateModel
//设置package包名称以及导入依赖的类
package songs
import org.apache.spark.ml.regression.{LinearRegression, LinearRegressionModel}
import org.apache.spark.mllib.evaluation.RegressionMetrics
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql.SQLContext
import org.slf4j.LoggerFactory
object EvaluateModel {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setAppName(Config.appName)
val sc = new SparkContext(conf)
val sqlContext = new SQLContext(sc)
val logger = LoggerFactory.getLogger(getClass.getName)
logger.info(s"Loading Linear Regression Model from ${Config.modelOut}")
val model = LinearRegressionModel.load(Config.modelOut)
logger.info("Loading datasets")
val datasets = SongML.loadModelData(sqlContext = sqlContext)
val pipelineModel = SongML.transformPipeline.fit(datasets.training)
val testData = pipelineModel.transform(datasets.test).select(SongML.labelColumn,SongML.featuresColumn)
logger.info("Calculating Regression Metrics")
val testPredictions = model.transform(testData)
.select(SongML.labelColumn,SongML.predictionColumn)
.map(r => (r.getAs[Double](SongML.predictionColumn), r.getAs[Double](SongML.labelColumn)))
val rm = new RegressionMetrics(testPredictions)
logger.info(SongML.printStats(model,rm,"Testing"))
logger.info("Exiting")
sc.stop()
}
}
示例4: EjecutaRegresor
//设置package包名称以及导入依赖的类
package es.upm.ging.EjecutaRegresor
import org.apache.spark.ml.regression.{LinearRegression, LinearRegressionModel}
import org.apache.spark.sql.SparkSession
object EjecutaRegresor {
def main(args: Array[String]): Unit = {
val spark = SparkSession.builder().getOrCreate()
spark.sparkContext.setLogLevel("OFF")
val carga = new Carga(spark)
// midf = carga.json()
val midf = carga.mysql()
midf.cache()
// Imprimimos el esquema detectado
midf.printSchema()
// Construimos el modelo
val iteraciones = 100
val model = LinearRegression.train(midf, iteraciones)
// Evaluar el modelo para el dataset de entrenamiento
val valoresYPrediccion = midf.map { punto =>
val prediccion = model.predict(punto.features)
(punto.label, prediccion)
}
val MSE = valoresYPrediccion.map{case(v, p) => math.pow((v - p), 2)}.mean()
println("Mean Squared Error del Entrenador = " + MSE)
// Carga y guarda
model.save(sc, "MiModeloLinReg")
val MiModelo = LinearRegressionModel.load(sc, "MiModeloLinReg")
println(valuesAndPreds.collect)
}
}
示例5: LocalLinearRegressionModel
//设置package包名称以及导入依赖的类
package io.hydrosphere.mist.api.ml.regression
import io.hydrosphere.mist.api.ml._
import org.apache.spark.ml.linalg.Vector
import org.apache.spark.ml.regression.LinearRegressionModel
class LocalLinearRegressionModel(override val sparkTransformer: LinearRegressionModel) extends LocalTransformer[LinearRegressionModel] {
override def transform(localData: LocalData): LocalData = {
localData.column(sparkTransformer.getFeaturesCol) match {
case Some(column) =>
val predict = classOf[LinearRegressionModel].getMethod("predict", classOf[Vector])
predict.setAccessible(true)
val newCol = LocalDataColumn(sparkTransformer.getPredictionCol, column.data.map { data =>
val vector = data.asInstanceOf[Vector]
predict.invoke(sparkTransformer,vector).asInstanceOf[Double]
})
localData.withColumn(newCol)
case None =>
localData
}
}
}
object LocalLinearRegressionModel extends LocalModel[LinearRegressionModel] {
override def load(metadata: Metadata, data: Map[String, Any]): LinearRegressionModel = {
val intercept = data("intercept").asInstanceOf[java.lang.Double]
val coeffitientsMap = data("coefficients").asInstanceOf[Map[String, Any]]
val coeffitients = DataUtils.constructVector(coeffitientsMap)
val ctor = classOf[LinearRegressionModel].getConstructor(classOf[String], classOf[Vector], classOf[Double])
val inst = ctor.newInstance(metadata.uid, coeffitients, intercept)
inst
.set(inst.featuresCol, metadata.paramMap("featuresCol").asInstanceOf[String])
.set(inst.predictionCol, metadata.paramMap("predictionCol").asInstanceOf[String])
.set(inst.labelCol, metadata.paramMap("labelCol").asInstanceOf[String])
.set(inst.elasticNetParam, metadata.paramMap("elasticNetParam").toString.toDouble)
// NOTE: introduced in spark 2.1 for reducing iterations for big datasets, e.g unnecessary for us
//.set(inst.aggregationDepth, metadata.paramMap("aggregationDepth").asInstanceOf[Int])
.set(inst.maxIter, metadata.paramMap("maxIter").asInstanceOf[Number].intValue())
.set(inst.regParam, metadata.paramMap("regParam").toString.toDouble)
.set(inst.solver, metadata.paramMap("solver").asInstanceOf[String])
.set(inst.tol, metadata.paramMap("tol").toString.toDouble)
.set(inst.standardization, metadata.paramMap("standardization").asInstanceOf[Boolean])
.set(inst.fitIntercept, metadata.paramMap("fitIntercept").asInstanceOf[Boolean])
}
override implicit def getTransformer(transformer: LinearRegressionModel): LocalTransformer[LinearRegressionModel] = new LocalLinearRegressionModel(transformer)
}
示例6: BaseTransformerConverter
//设置package包名称以及导入依赖的类
package org.apache.spark.ml.mleap.converter.runtime
import com.truecar.mleap.runtime.transformer
import org.apache.spark.ml.PipelineModel
import org.apache.spark.ml.classification.RandomForestClassificationModel
import org.apache.spark.ml.feature.{IndexToString, StandardScalerModel, StringIndexerModel, VectorAssembler}
import org.apache.spark.ml.mleap.classification.SVMModel
import org.apache.spark.ml.mleap.converter.runtime.classification.{RandomForestClassificationModelToMleap, SupportVectorMachineModelToMleap}
import org.apache.spark.ml.mleap.converter.runtime.feature.{IndexToStringToMleap, StandardScalerModelToMleap, StringIndexerModelToMleap, VectorAssemblerModelToMleap}
import org.apache.spark.ml.mleap.converter.runtime.regression.{LinearRegressionModelToMleap, RandomForestRegressionModelToMleap}
import org.apache.spark.ml.regression.{LinearRegressionModel, RandomForestRegressionModel}
trait BaseTransformerConverter extends SparkTransformerConverter {
// regression
implicit val mleapLinearRegressionModelToMleap: TransformerToMleap[LinearRegressionModel, transformer.LinearRegressionModel] =
addConverter(LinearRegressionModelToMleap)
implicit val mleapRandomForestRegressionModelToMleap: TransformerToMleap[RandomForestRegressionModel, transformer.RandomForestRegressionModel] =
addConverter(RandomForestRegressionModelToMleap)
// classification
implicit val mleapRandomForestClassificationModelToMleap: TransformerToMleap[RandomForestClassificationModel, transformer.RandomForestClassificationModel] =
addConverter(RandomForestClassificationModelToMleap)
implicit val mleapSupportVectorMachineModelToMleap: TransformerToMleap[SVMModel, transformer.SupportVectorMachineModel] =
addConverter(SupportVectorMachineModelToMleap)
//feature
implicit val mleapIndexToStringToMleap: TransformerToMleap[IndexToString, transformer.ReverseStringIndexerModel] =
addConverter(IndexToStringToMleap)
implicit val mleapStandardScalerModelToMleap: TransformerToMleap[StandardScalerModel, transformer.StandardScalerModel] =
addConverter(StandardScalerModelToMleap)
implicit val mleapStringIndexerModelToMleap: TransformerToMleap[StringIndexerModel, transformer.StringIndexerModel] =
addConverter(StringIndexerModelToMleap)
implicit val mleapVectorAssemblerToMleap: TransformerToMleap[VectorAssembler, transformer.VectorAssemblerModel] =
addConverter(VectorAssemblerModelToMleap)
// other
implicit val mleapPipelineModelToMleap: TransformerToMleap[PipelineModel, transformer.PipelineModel] =
addConverter(PipelineModelToMleap(this))
}
object BaseTransformerConverter extends BaseTransformerConverter