Два различных метода масштабирования Нормализатор и стандартизатор сравнения

#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 ?