from pyspark.ml import Pipeline from pyspark.ml.feature import VectorAssembler # Definir el 'df' Spark a utilizar df = spark.createDataFrame([ ('line_1', 100, 10, 1), ('line_2', 200, 20, 2), ('line_3', 300, 30, 2), ('line_4', 300, 30, 3), ('line_5', 200, 20, 1), ('line_6', 100, 10, 1) ], ("label", "x1", "x2", "x3")) # Definir un ensamblador de las columnas 'x1', 'x2' y 'x3' que toma como salida 'aux_features' assembler = VectorAssembler(inputCols=["x1", "x2","x3"], outputCol="features") # Crear la tuberia pipelineResult = Pipeline() # Definir las etapas de las que está compuesta la tuberia pipelineResult.setStages([assembler]) # Modelo de ajuste de la tuberia con los datos 'df' de entrada modelResult = pipelineResult.fit(df) # Realiza la transformación de los datos utilizando el modelo result_df = modelResult.transform(df) # Definir el modelo de k-means. kmeans = KMeans().setK(3).setSeed(1) model = kmeans.fit(result_df) # Obtener la suma cuadrada de errores 'SSE' SSE = model.computeCost(result_df) print ("Suma cuadrada de errores: " + str(SSE)) # Obtener el número de elementos n = result_df.count() # Calcular el error cuadratico medio 'RMSE' RMSE = math.sqrt(SSE/n) print ("Error cuadratico medio: " + str(RMSE)) # Mostrar los centroides. centers = model.clusterCenters() print("Cluster Centers: ") for center in centers: print(center)
0 comentarios