import pandas as pd from sklearn.model_selection import train_test_split from sklearn.svm import SVC from sklearn.metrics import classification_report import os import joblib # Rutas relativas para el archivo Excel y la ubicación del modelo excel_path = os.path.join('data', 'Rice_Spectral_2.xlsx') model_path = os.path.join('model', 'svm_model.joblib') # Cargar datos desde Excel especificando que los decimales están separados por comas data = pd.read_excel(excel_path, sheet_name="Spectral", decimal=',') # Asignar etiquetas: '0' para Java y '1' para Bangka Belitung labels = [0 if "Java" in col else 1 for col in data.columns] # Transponer el DataFrame para tener las firmas en filas y las características en columnas data_transposed = data.T # Dividir los datos en conjuntos de entrenamiento y prueba X_train, X_test, y_train, y_test = train_test_split(data_transposed, labels, test_size=0.001, random_state=42) # Crear y entrenar el modelo SVM svm_model = SVC(kernel='linear', random_state=42) svm_model.fit(X_train, y_train) # Evaluar el modelo y_pred = svm_model.predict(X_test) report = classification_report(y_test, y_pred) print("Evaluación del Modelo:") print(report) # Asegurarse de que el directorio para guardar el modelo existe os.makedirs('model', exist_ok=True) # Guardar el modelo en la carpeta del modelo joblib.dump(svm_model, model_path) print(f"Modelo guardado en {model_path}")