es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Reversión de la codificación en caliente sin reducir las columnas a una sola.

Tengo un conjunto de datos que muestra cada transacción como una fila.

por ejemplo;

Item1 Item2 Item_3
NaN 1 1
1 1 NaN

La tabla tiene 611 columnas con 1180 filas, por lo tanto, 611 elementos y 1180 transacciones.

Estoy buscando realizar un análisis de cesta, por lo tanto, necesito que todas las filas que tienen ‘1’ sean cambiadas al nombre del elemento.

Por ejemplo…

Item1 Item2 Item3
NaN Item2 Item3
Item1 Item_2 NaN

Luego, tengo la intención de eliminar las columnas del encabezado y simplemente tener cada transacción en cada fila alineada sin NaN’s

es decir

Noheader Noheader Noheader
Item2 Item3 NaN
Item1 Item_2 NaN
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para realizar el análisis de cesta, necesitamos usar la codificación one-hot para transformar los datos en un formato que pueda ser utilizado para generar reglas de asociación. Aquí están los pasos para realizar esta tarea:

    1. Importa la biblioteca pandas y lee el conjunto de datos en un objeto DataFrame de pandas.
    import pandas as pd
    
    data = pd.read_csv('dataset.csv')
    
    1. Reemplaza todos los valores de 1 en el DataFrame con el nombre correspondiente del artículo.
    data = data.replace(1, data.columns)
    
    1. Para cada fila en el DataFrame, crea una lista de los artículos en esa fila.
    transactions = []
    for index, row in data.iterrows():
        transaction = [item for item in row if isinstance(item, str)]
        transactions.append(transaction)
    
    1. Usa la biblioteca mlxtend para realizar la codificación one-hot en la lista de transacciones.
    from mlxtend.preprocessing import TransactionEncoder
    
    te = TransactionEncoder()
    te_ary = te.fit(transactions).transform(transactions)
    new_data = pd.DataFrame(te_ary, columns=te.columns_)
    
    1. Elimina los encabezados de columna del DataFrame.
    new_data.columns = range(new_data.shape[1])
    

    El DataFrame resultante, new_data, tendrá una fila por transacción, y cada columna corresponderá a un artículo. Un valor True en una columna significa que el artículo correspondiente estaba presente en esa transacción. Los valores NaN han sido eliminados del DataFrame, y en lugar de 1 se han utilizado los nombres de los artículos. Este formato se puede utilizar para generar reglas de asociación utilizando bibliotecas como mlxtend.

Comments are closed.