#python #scaling
Вопрос:
Я определил два класса методов масштабирования. Верхний работает, однако, нижний не работает, я немного запутался. Не лучше ли не использовать методы, определенные ниже на этапе инициализации?
class Normalizer(): def __init__(self, dataframe): self.params = [] for col in dataframe.columns: self.params.append(x_min_max(dataframe[col])) def x_min_max(self,data): minimum = min(data) maximum = max(data) return minimum, maximum def normalize_data(self, x): normalized = [] for i,val in enumerate(x): x_max = self.params[i][0] x_min = self.params[i][1] normalized.append((x[i]-x_min)/(x_max-x_min)) return normalized
class Standardizer(): def __init__(self, dataframe): self.params = [] for col in dataframe.columns: self.params.append(x_avg_std(dataframe[col])) def x_avg_std(data): avg = sum(data) / len(data) std = (sum([((x - avg) ** 2) for x in data]) / (len(data) - 1)) ** 0.5 return avg, std def standardize_data(self, x): standardized = [] for i,val in enumerate(x): x_avg = self.params[i][0] x_std = self.params[i][1] standardized.append((x[i] - x_avg)/x_std) return standardized
«Нормализатор» выполнит масштабирование без сообщения об ошибке. Однако отображается «Стандартизатор» для того же фрейма данных, «Ошибка имени: имя ‘x_avg_std’ не определено»
Комментарии:
1. Можете ли вы более точно сформулировать, что вы подразумеваете под «дно не работает»?
2. Что именно не работает? Вы получаете ошибку во время выполнения, неожиданный результат, синтаксическую ошибку?
3. конечно, когда я применяю «Стандартизатор» к одному и тому же кадру данных, и появляется ошибка «Ошибка имени: имя» x_avg_std «не определено», однако нормализатор выполнит масштабирование без сообщения об ошибке.
4. Вы заметили, что в определении
x_avg_std
» вStandardizer
» нет призыва кself
?