特征提取
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cross_decomposition import PLSRegression
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression# 設置matplotlib支持中文
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False# 讀取數據
df = pd.read_csv('高光譜.csv')
X = df.drop(columns=['som']).values
y = df['som'].values
band_names = df.columns[:-1]# 標準化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)# SPA選波段(逐步回歸近似)
def spa_selection(X, y, n_bands):selected = []remaining = list(range(X.shape[1]))