He entrenado un clasificador de regresión logística para predecir si una reseña es positiva o negativa. Ahora, quiero agregar las probabilidades pronosticadas devueltas por la predict_proba a mi marco de datos de Pandas que contiene las revisiones. Intenté hacer algo como:
test_data['prediction'] = sentiment_model.predict_proba(test_matrix) Obviamente, eso no funciona, ya que predict_proba devuelve una matriz numpy 2D. Entonces, ¿cuál es la forma más eficiente de hacer esto? test_matrix con CountVectorizer de SciKit-Learn:
vectorizer = CountVectorizer(token_pattern=r'\b\w+\b') train_matrix = vectorizer.fit_transform(train_data['review_clean'].values.astype('U')) test_matrix = vectorizer.transform(test_data['review_clean'].values.astype('U'))Los datos de muestra se ven así:
| Review | Prediction | | ------------------------------------------ | ------------------ | | "Toy was great! Our six-year old loved it!"| 0.986 |Asigne las predicciones a una variable y luego extraiga las columnas de la variable para asignarlas a las cols del marco de datos de pandas. Si x es la matriz numpy 2D con predicciones,
x = sentiment_model.predict_proba(test_matrix)entonces puedes hacer,
test_data['prediction0'] = x[:,0] test_data['prediction1'] = x[:,1]import numpy as np import pandas as pd df = pd.DataFrame( np.arange(10).reshape(5, 2), columns=['a', 'b']) print('df:', df, sep='\n') arr = np.arange(100, 104).reshape(2, 2) print('array to append:', arr, sep='\n') df = df.append(pd.DataFrame(arr, columns=df.columns), ignore_index=True) print('df:', df, sep='\n')producción
df: ab 0 0 1 1 2 3 2 4 5 3 6 7 4 8 9 array to append: [[100 101] [102 103]] df: ab 0 0 1 1 2 3 2 4 5 3 6 7 4 8 9 5 100 101 6 102 103