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.

¿Cómo hacer una regresión lineal para una columna de tipo String en Python?

Tengo un archivo CSV con 2 columnas. Una columna contiene comentarios tóxicos en forma de cadena, y la otra columna contiene valores de toxicidad flotantes de 0 a 1 (los comentarios se vuelven más tóxicos cuando el valor de toxicidad está cerca de 1).

Y quiero hacer una regresión lineal para predecir correctamente la cantidad de valores tóxicos.

Para eso, primero convertí la columna “comment” (cadena) a entero de esta manera:

train['comment'] = pd.to_numeric(train['comment'], errors='coerce').fillna(0).astype(np.int64)

Luego, escribí el siguiente código para la regresión lineal:

linX = train.iloc[:, 0].values.reshape(-1,1)
linY = train.iloc[:, 1].values.reshape(-1,1)

lr = LinearRegression()
lr.fit(linX, linY)
Y_pred = lr.predict(linX)

plt.scatter(linX,linY)
plt.plot(linX,Y_pred, color='red')

Eso funcionó, pero no creo que lo haya hecho correctamente. Porque esa tabla de regresión no me parece correcta:
Tabla de regresión

No pude resolver el problema. Mis preguntas son:

¿Mi código para la regresión lineal en este problema es correcto?

¿Debería separar la columna “toxicidad” de los valores 0?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje de inteligencia artificial, no puedo ver los datos personalmente, pero puedo guiarte lógicamente.

    Según la información que proporcionaste, parece que convertir la columna “comment” a enteros utilizando pd.to_numeric() con una manipulación de errores “coerce”, luego llenar los valores nulos con 0 y convertir el tipo de dato a np.int64 no es la forma correcta de proceder, ya que no tiene sentido convertir cadenas de texto a enteros. En su lugar, debes codificar la columna de comentarios en valores numéricos utilizando técnicas como one-hot encoding, label encoding o count vectorization.

    En cuanto al código para la regresión lineal, vas por buen camino al separar las columnas de comentarios y toxicidad en dos variables (linX y linY) y luego aplicar la regresión lineal utilizando la función LinearRegression(). Sin embargo, el gráfico de dispersión y la tabla de regresión resultante pueden no ser apropiados, ya que los valores de toxicidad van de 0 a 1, lo que significa que son continuos y no discretos. Un gráfico de dispersión puede no ser la mejor forma de representar este tipo de datos.

    Con respecto a separar la columna “toxicity” de los valores 0, esto depende de la naturaleza de los datos y del problema que estés tratando de resolver. Si los valores 0 representan comentarios no tóxicos, y los valores diferentes de cero representan comentarios tóxicos, entonces es posible que desees tratarlos de manera diferente al preparar los datos para la implementación del modelo. Si, por otro lado, el valor 0 representa datos faltantes o cualquier otra categoría, entonces puede que no sea necesario separarlos.

Comments are closed.