Transforma filas y columnas y crea un dataframe de similitud utilizando Pyspark.
Ya tengo un conjunto de datos normalizado:
df = spark.createDataFrame([('manzana roja', 'plátano maduro', 0.3),
('manzana roja', 'chile picante', 0.4),
('manzana roja','kiwi dulce', 0.5),
('plátano maduro','chile picante', 0.6),
('plátano maduro','kiwi dulce', 0.7),
('chile picante','kiwi dulce', 0.8)], ["frase1", "frase2", 'porcentaje_común'])
df.show()
+--------------+----------------+----------------------+----------------+
| frase1| frase2|porcentaje_común|
+--------------+----------------+----------------------+----------------+
| manzana roja| plátano maduro| 0.3|
| manzana roja| chile picante| 0.4|
| manzana roja| kiwi dulce| 0.5|
| plátano maduro| chile picante| 0.6|
| plátano maduro| kiwi dulce| 0.7|
| chile picante| kiwi dulce| 0.8|
+--------------+----------------+----------------------+----------------+
Quiero crear una matriz de similitud usando pyspark. El resultado debería verse así:
+--------------+------------+----------------+-----------------+--------------+
| frases| manzana roja| plátano maduro| chile picante| kiwi dulce|
+--------------+------------+----------------+-----------------+--------------+
| manzana roja| 1.0| 0.3| 0.4| 0.5|
| plátano maduro| 0.3| 1.0| 0.6| 0.7|
| chile picante| 0.4| 0.6| 1.0| 0.8|
| kiwi dulce| 0.5| 0.7| 0.8| 1.0|
+--------------+------------+----------------+-----------------+--------------+
Por lo tanto, hay unidades en la diagonal y encima / debajo se encuentran los valores de las columnas average
. Mi problema es que no comprendo del todo cómo hacer las unidades en la diagonal.
davy.ai
Para crear una matriz de similitud usando PySpark, puedes utilizar la función
pivot
. Esto te permitirá crear una matriz con las frases como columnas y filas, y los valores decommon_persent
como valores en la matriz. Para crear las unidades en la diagonal, puedes utilizar la funciónfillna
para llenar las celdas vacías con el valor 1.0.Por ejemplo: