调整缩放、多核运行、图标显示
This commit is contained in:
@ -1,4 +1,5 @@
|
||||
import numpy as np
|
||||
import sys
|
||||
# import preprocessing
|
||||
|
||||
try:
|
||||
@ -14,9 +15,12 @@ try:
|
||||
except ImportError:
|
||||
TQDM_AVAILABLE = False
|
||||
# 如果tqdm不可用,定义一个简单的包装器
|
||||
def tqdm(iterable, desc=None, total=None):
|
||||
def tqdm(iterable, desc=None, total=None, disable=None):
|
||||
return iterable
|
||||
|
||||
# 检测是否在 PyInstaller 打包环境(无控制台)
|
||||
_is_frozen_gui = getattr(sys, "frozen", False) and (not hasattr(sys, 'stdout') or sys.stdout is None)
|
||||
|
||||
class Goodman:
|
||||
def __init__(self, im_aligned, NIR_lower = 25, NIR_upper = 37, A = 0.000019, B = 0.1,
|
||||
use_gdal=True, chunk_size=None, water_mask=None, output_path=None):
|
||||
@ -170,7 +174,7 @@ class Goodman:
|
||||
water_mask_bool = self.water_mask.astype(bool) if self.water_mask is not None else None
|
||||
|
||||
# 逐波段处理:每次只处理一个波段,处理完后立即添加到结果列表
|
||||
for i in tqdm(range(self.n_bands), desc="处理波段 (numpy)", total=self.n_bands):
|
||||
for i in tqdm(range(self.n_bands), desc="处理波段 (numpy)", total=self.n_bands, disable=_is_frozen_gui):
|
||||
# 获取当前波段(这是数组视图,不是复制)
|
||||
R = self.im_aligned[:,:,i]
|
||||
# 优化计算:减少中间数组创建
|
||||
@ -207,7 +211,7 @@ class Goodman:
|
||||
water_mask_bool = self.water_mask.astype(bool) if self.water_mask is not None else None
|
||||
|
||||
# 逐波段处理:每次只读取和处理一个波段
|
||||
for i in tqdm(range(self.n_bands), desc="处理波段 (GDAL)", total=self.n_bands):
|
||||
for i in tqdm(range(self.n_bands), desc="处理波段 (GDAL)", total=self.n_bands, disable=_is_frozen_gui):
|
||||
# 读取当前波段(只加载一个波段到内存)
|
||||
current_band = self.dataset.GetRasterBand(i + 1)
|
||||
R = current_band.ReadAsArray().astype(np.float32)
|
||||
@ -235,7 +239,7 @@ class Goodman:
|
||||
mem_dataset = driver.Create('', self.width, self.height, self.n_bands, gdal.GDT_Float32)
|
||||
|
||||
# 将numpy数组写入内存数据集(显示进度)
|
||||
for i in tqdm(range(self.n_bands), desc="加载波段到内存", total=self.n_bands):
|
||||
for i in tqdm(range(self.n_bands), desc="加载波段到内存", total=self.n_bands, disable=_is_frozen_gui):
|
||||
band = mem_dataset.GetRasterBand(i + 1)
|
||||
band.WriteArray(self.im_aligned[:,:,i])
|
||||
band.FlushCache()
|
||||
@ -316,7 +320,7 @@ class Goodman:
|
||||
dataset.SetProjection(projection)
|
||||
|
||||
# 直接逐波段写入(不先堆叠,节省内存)
|
||||
for i in tqdm(range(n_bands), desc="保存波段", total=n_bands):
|
||||
for i in tqdm(range(n_bands), desc="保存波段", total=n_bands, disable=_is_frozen_gui):
|
||||
band = dataset.GetRasterBand(i + 1)
|
||||
# 直接从列表中获取波段并写入,避免创建完整数组
|
||||
band.WriteArray(corrected_bands[i])
|
||||
|
||||
@ -19,7 +19,7 @@ from sklearn.cross_decomposition import PLSRegression
|
||||
from sklearn.ensemble import GradientBoostingRegressor, AdaBoostRegressor, ExtraTreesRegressor
|
||||
from sklearn.tree import DecisionTreeRegressor
|
||||
from sklearn.neural_network import MLPRegressor
|
||||
|
||||
from joblib import parallel_backend
|
||||
# 第三方模型导入
|
||||
# try:
|
||||
# import lightgbm as lgb
|
||||
@ -648,8 +648,10 @@ class WaterQualityModelingBatch:
|
||||
)
|
||||
|
||||
# 在训练集上训练模型
|
||||
# with parallel_backend("threading", n_jobs=-1):
|
||||
# grid_search.fit(X_train, y_train)
|
||||
grid_search.fit(X_train, y_train)
|
||||
|
||||
|
||||
# 获取最佳模型
|
||||
best_model = grid_search.best_estimator_
|
||||
|
||||
|
||||
Reference in New Issue
Block a user