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.

Pasando un vector de C# a Python.

Utilizo Python.Net para la interacción de C# con bibliotecas de Python. Resuelvo el problema de clasificación de texto. Utilizo FastText para indexar y obtener el vector, así como Sklearn para entrenar el clasificador (Knn). Durante la implementación, me encontré con muchos problemas, pero todos fueron resueltos, con la excepción de uno.
Después de recibir los vectores de los textos en los que entreno Knn, los guardo en un archivo de texto separado y luego, si es necesario, lo utilizo.

string loadKnowVec = File.ReadAllText("vectorKnowClass.txt", Encoding.Default);
string[] splitKnowVec = loadKnowVec.Split('\r');
splitKnowVec = splitKnowVec.Where(x => x != "").ToArray();
for()
{ 
    keyValues_vector.Add(float.Parse(splitKnowVec[i], NumberFormatInfo.InvariantInfo), 1);
}
    dynamic X_vec = np.array(keyValues_vector.Keys.ToArray()).reshape(-1, 1);
    dynamic y_tag = np.array(keyValues_vector.Values.ToArray());
    dynamic neigh = KNN(n_neighbors: 3);
    dynamic KnnFit = neigh.fit(X_vec, y_tag);
    string predict = neigh.predict("0.00889");
    MessageBox.Show("Probablemente sea: "+predict);

Durante el entrenamiento del clasificador, me encontré con un problema en el que de C# a Python, no son valores con el tipo float, sino el valor de System.Single[].

Python.Runtime.PythonException: “TypeError: el argumento float() debe ser una cadena o un número, no ‘Single[]’

El valor almacenado, en este punto, de la variable dinámica X_vec es ‘System.Single[]’ (Creo que ese es exactamente el problema).

  1. Al principio intenté establecer manualmente los valores de X_vec, pero el error y sus valores seguían siendo los mismos. La primera idea fue cambiar el tipo de array utilizando la biblioteca numpy, pero no ayudó, también generaba una salida vacía.
dynamic Xx = np.array(X_vec, dtype: "float"); 
dynamic yY = np.array(y_tag, dtype: "int");

Luego, se intentó crear un array vacío de antemano y cargar valores específicos en él antes de cambiar el tipo de dato, pero esto tampoco funcionó.

Tal vez no entiendo el principio de formación e interacción de la IDE MSVS19 y el intérprete de Python.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que el problema de pasar System.Single[] como un argumento float a Python está causando problemas en la implementación del algoritmo de clasificación de texto. Se han realizado varios intentos para convertir el array al tipo correcto utilizando la biblioteca numpy o creando un array vacío y cargando valores específicos, pero sin éxito.

    Puede ser útil revisar la documentación de la biblioteca Python.Runtime y asegurarse de que se estén utilizando los tipos de datos y formatos correctos al llamar a las funciones de Python desde C#. Además, puede ser útil consultar con otros expertos en este campo o buscar orientación adicional sobre detalles de implementación específicos, ya que esta es un área compleja de programación que requiere conocimientos y habilidades especializadas.

Comments are closed.