File size: 4,929 Bytes
712ed64
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
from sklearn.manifold import TSNE
from sklearn.preprocessing import StandardScaler, normalize

# Funci贸n para aplicar Min-Max a cada columna
def min_max_normalize(column):
    return (column - column.min()) / (column.max() - column.min())

# Funci贸n para aplicar Normax
def normax_normalize(column):
    return column / column.max()

# 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 y Normax
data_minmax = data.copy()
data_normax = data.copy()

data_minmax[java_columns] = data_minmax[java_columns].apply(min_max_normalize)
data_minmax[belitung_columns] = data_minmax[belitung_columns].apply(min_max_normalize)

data_normax[java_columns] = data_normax[java_columns].apply(normax_normalize)
data_normax[belitung_columns] = data_normax[belitung_columns].apply(normax_normalize)

# Preparar los datos para PCA y t-SNE
all_columns = java_columns + belitung_columns

# Normalizaci贸n de datos (Min-Max)
spectral_data_minmax = data_minmax[all_columns].dropna().transpose()

# Estandarizaci贸n de datos
scaler = StandardScaler()
spectral_data_standardized = scaler.fit_transform(spectral_data_minmax)

# Normalizaci贸n Normax
spectral_data_normax = data_normax[all_columns].dropna().transpose()

# PCA
pca_minmax = PCA(n_components=2).fit_transform(spectral_data_minmax)
pca_normax = PCA(n_components=2).fit_transform(spectral_data_normax)
pca_standardized = PCA(n_components=2).fit_transform(spectral_data_standardized)

# t-SNE
tsne_minmax = TSNE(n_components=2, random_state=42).fit_transform(spectral_data_minmax)
tsne_normax = TSNE(n_components=2, random_state=42).fit_transform(spectral_data_normax)
tsne_standardized = TSNE(n_components=2, random_state=42).fit_transform(spectral_data_standardized)

# Crear subplots
fig, axs = plt.subplots(3, 2, figsize=(14, 18))

# Gr谩fico de PCA Min-Max
axs[0, 0].scatter(pca_minmax[:len(java_columns), 0], pca_minmax[:len(java_columns), 1], color='blue', label='Java')
axs[0, 0].scatter(pca_minmax[len(java_columns):, 0], pca_minmax[len(java_columns):, 1], color='green', label='Bangka Belitung')
axs[0, 0].set_title('PCA Min-Max')
axs[0, 0].legend()

# Gr谩fico de t-SNE Min-Max
axs[0, 1].scatter(tsne_minmax[:len(java_columns), 0], tsne_minmax[:len(java_columns), 1], color='blue', label='Java')
axs[0, 1].scatter(tsne_minmax[len(java_columns):, 0], tsne_minmax[len(java_columns):, 1], color='green', label='Bangka Belitung')
axs[0, 1].set_title('t-SNE Min-Max')
axs[0, 1].legend()

# Gr谩fico de PCA Normax
axs[1, 0].scatter(pca_normax[:len(java_columns), 0], pca_normax[:len(java_columns), 1], color='blue', label='Java')
axs[1, 0].scatter(pca_normax[len(java_columns):, 0], pca_normax[len(java_columns):, 1], color='green', label='Bangka Belitung')
axs[1, 0].set_title('PCA Normax')
axs[1, 0].legend()

# Gr谩fico de t-SNE Normax
axs[1, 1].scatter(tsne_normax[:len(java_columns), 0], tsne_normax[:len(java_columns), 1], color='blue', label='Java')
axs[1, 1].scatter(tsne_normax[len(java_columns):, 0], tsne_normax[len(java_columns):, 1], color='green', label='Bangka Belitung')
axs[1, 1].set_title('t-SNE Normax')
axs[1, 1].legend()

# Gr谩fico de PCA Estandarizado
axs[2, 0].scatter(pca_standardized[:len(java_columns), 0], pca_standardized[:len(java_columns), 1], color='blue', label='Java')
axs[2, 0].scatter(pca_standardized[len(java_columns):, 0], pca_standardized[len(java_columns):, 1], color='green', label='Bangka Belitung')
axs[2, 0].set_title('PCA Estandarizado')
axs[2, 0].legend()

# Gr谩fico de t-SNE Estandarizado
axs[2, 1].scatter(tsne_standardized[:len(java_columns), 0], tsne_standardized[:len(java_columns), 1], color='blue', label='Java')
axs[2, 1].scatter(tsne_standardized[len(java_columns):, 0], tsne_standardized[len(java_columns):, 1], color='green', label='Bangka Belitung')
axs[2, 1].set_title('t-SNE Estandarizado')
axs[2, 1].legend()

# Ajustar los subplots
plt.tight_layout()
plt.show()