Spaces:
Build error
Build error
| import pandas as pd | |
| import matplotlib.pyplot as plt | |
| from sklearn.decomposition import PCA | |
| from sklearn.manifold import TSNE | |
| # Función para aplicar Min-Max a cada columna | |
| def min_max_normalize(column): | |
| return (column - column.min()) / (column.max() - column.min()) | |
| # Cargar el archivo de Excel desde la ruta especificada | |
| file_path = r"C:\Users\USUARIO\Documents\Indonecia\Rice_Spectral.xlsx" | |
| data = pd.read_excel(file_path, sheet_name="Spectral") | |
| # Asegurarse de que los valores de "Location" sean numéricos | |
| data['Location'] = pd.to_numeric(data['Location'], errors='coerce') | |
| # Separar los datos de los números de onda (Wavenumbers) | |
| wavenumbers = data['Location'].dropna() # Eliminar posibles NaN en wavenumbers | |
| # Filtrar las columnas que pertenecen a Java y Bangka Belitung | |
| java_columns = [col for col in data.columns if "Java" in col] | |
| belitung_columns = [col for col in data.columns if "Bangka Belitung" in col] | |
| # Asegurarse de que todas las columnas de datos sean numéricas | |
| data[java_columns] = data[java_columns].apply(pd.to_numeric, errors='coerce') | |
| data[belitung_columns] = data[belitung_columns].apply(pd.to_numeric, errors='coerce') | |
| # Aplicar normalización Min-Max a cada firma espectral | |
| data[java_columns] = data[java_columns].apply(min_max_normalize) | |
| data[belitung_columns] = data[belitung_columns].apply(min_max_normalize) | |
| # Graficar las firmas espectrales normalizadas | |
| plt.figure(figsize=(10, 6)) | |
| # Graficar las firmas de Java en un color | |
| for column in java_columns: | |
| plt.plot(wavenumbers, data[column].dropna(), color='blue', label='Java' if 'Java' in column else "") | |
| # Graficar las firmas de Bangka Belitung en otro color | |
| for column in belitung_columns: | |
| plt.plot(wavenumbers, data[column].dropna(), color='green', label='Bangka Belitung' if 'Bangka Belitung' in column else "") | |
| # Etiquetas y título | |
| plt.title('Firmas Espectrales Normalizadas (Min-Max) de Muestras de Arroz') | |
| plt.xlabel('Número de Onda (Wavenumber)') | |
| plt.ylabel('Reflectancia Espectral Normalizada') | |
| plt.legend(['Java', 'Bangka Belitung']) | |
| # Mostrar la gráfica | |
| plt.show() | |
| # Preparar los datos para PCA y t-SNE | |
| all_columns = java_columns + belitung_columns | |
| spectral_data = data[all_columns].dropna().transpose() # Transponer para tener las firmas en filas | |
| # PCA: Análisis de Componentes Principales | |
| pca = PCA(n_components=2) | |
| pca_result = pca.fit_transform(spectral_data) | |
| # Graficar PCA | |
| plt.figure(figsize=(8, 6)) | |
| plt.scatter(pca_result[:len(java_columns), 0], pca_result[:len(java_columns), 1], color='blue', label='Java') | |
| plt.scatter(pca_result[len(java_columns):, 0], pca_result[len(java_columns):, 1], color='green', label='Bangka Belitung') | |
| plt.title('PCA de Firmas Espectrales') | |
| plt.xlabel('Componente Principal 1') | |
| plt.ylabel('Componente Principal 2') | |
| plt.legend() | |
| plt.show() | |
| # t-SNE: Embedding de Vecinos Estocásticos Distribuidos | |
| tsne = TSNE(n_components=2, random_state=42) | |
| tsne_result = tsne.fit_transform(spectral_data) | |
| # Graficar t-SNE | |
| plt.figure(figsize=(8, 6)) | |
| plt.scatter(tsne_result[:len(java_columns), 0], tsne_result[:len(java_columns), 1], color='blue', label='Java') | |
| plt.scatter(tsne_result[len(java_columns):, 0], tsne_result[len(java_columns):, 1], color='green', label='Bangka Belitung') | |
| plt.title('t-SNE de Firmas Espectrales') | |
| plt.xlabel('Componente t-SNE 1') | |
| plt.ylabel('Componente t-SNE 2') | |
| plt.legend() | |
| plt.show() | |