Correo electrónico del autor del artículo: [email protected] Dirección: Huizhou, Guangdong
▲ El programa de este capítulo
⚪ Dominar el caso de Spark: predecir la demanda de productos;
⚪ Domina el caso de Spark: predice la tasa de asesinatos;
1. Caso 1: Previsión de la demanda de materias primas
1. Descripción
Los valores observados de la demanda (y, toneladas), el precio (x1, yuan/kg) y el ingreso del consumidor (x2, yuan) de un determinado producto se muestran en la siguiente tabla.
y= β 1 X1+ β 2 X2+ β 0
y |
x1 |
x2 |
100 |
5 |
1000 |
75 |
7 |
600 |
80 |
6 |
1200 |
70 |
6 |
500 |
50 |
8 |
30 |
sesenta y cinco |
7 |
400 |
90 |
5 |
1300 |
100 |
4 |
1100 |
110 |
3 |
1300 |
60 |
9 |
300 |
Para poder modelar a través de Mllib, primero debemos realizar cierto procesamiento en el formato de datos, como el siguiente:
100|5 1000
75|7 600
80|6 1200
70|6 500
50|8 30
65|7 400
90|5 1300
100|4 1100
110|3 1300
60|9 300
X1=10 X2=400 Y=?
2. Ejemplo de código:
importar org.apache.spark.SparkConf
importar org.apache.spark.SparkContext
importar org.apache.spark.mllib.regression.LabeledPoint
importar org.apache.spark.mllib.linalg.Vectors
importar org.apache.spark.ml.regression.LinearRegressionModel.LinearRegressionModelReader
importar org.apache.spark.ml.regression.LinearRegressionSummary
importar org.apache.spark.ml.regression.LinearRegressionTrainingSummary
importar org.apache.spark.mllib.regression.LinearRegressionWithSGD
importar org.apache.spark.mllib.regression.LinearRegressionModel
importar org.apache.spark.ml.regression.LinearRegressionModel
importar org.apache.spark.sql.SQLContext
importar org.apache.spark.ml.feature.VectorAssembler
importar org.apache.spark.ml.regression.LinearRegression
controlador de objetos {
def principal(argumentos: Matriz[Cadena]): Unidad = {
val conf=new SparkConf().setMaster("local").setAppName("lr")
val sc=nuevo SparkContext(conf)
val sqc=nuevo SQLContext(sc)
val datos=sc.textFile("d://ml/lritem.txt")
//--Convertimos los datos al formato tupla para su posterior conversión a SparkSql DataFrame
val parseData=datos.mapa { x =>
val partes=x.split("\\|")
val características=partes(1).split(" ")
(partes(0).toDouble,características(0).toDouble,características(1).toDouble)
}
//-- Convertir a DF
val df=sqc.createDataFrame(parseData)
//-- definimos los nombres de los campos de cada columna
val dfData=df.toDF("Y","X1","X2")
//--definir característica