class DataProcess(object): # 特征处理 def __init__(self, process_type): self.process_type = process_type if self.process_type == "Binary": # 二值化处理 self.processmodule = Binarizer(copy=True, threshold=0.0) # 大于 threshold 的映射为1, 小于 threshold 的映射为0 elif self.process_type == "MinMax": # 归一化处理 self.processmodule = MinMaxScaler(feature_range=(0, 1), copy=True) elif self.process_type == "Stand": # 标准化处理 self.processmodule = StandardScaler(copy=True, with_mean=True, with_std=True) elif self.process_type == "Normal": # 正则化处理 self.processmodule = Normalizer(copy=True, norm="l2") # 可选择l1, max ,l2三种 elif self.process_type == "MultiLabelBinar": # 多标签二值化处理 self.processmodule = MultiLabelBinarizer(sparse_output=False) # 使用其他CRS格式使用True else: raise ValueError("please select a correct process_type") def fit_transform(self, data): return self.processmodule.fit_transform(data) def fit(self, data): self.processmodule.fit(data) def transform(self, data): self.processmodule.transform(data) def set_params(self, params): self.processmodule.set_params(**params) def get_params(self): return self.processmodule.get_params(deep=True) def get_classes(self): assert self.process_type in {"MultiLabelBinar"} return self.processmodule.classes_ # 输出相关的classs有哪些不同的值 def invser_transform(self, data): assert self.process_type in {"MultiLabelBinar", "MinMax", "Stand"} return self.processmodule.inverse_transform(data) def get_max(self): # 获取数组中所多有维度上的最大值与最小值 assert self.process_type in {"MinMax", "Stand"} return self.processmodule.data_max_ def get_min(self): assert self.process_type in {"MinMax", "Stand"} return self.processmodule.data_min_ def partial_fit(self): # 使用最后的一个缩放函数来在线计算最大值与最小值 assert self.process_type in {"MinMax", "Stand"} return self.processmodule.partial_fit()