Результат стандартизации отличается у Patsy и Pandas - Python

Я нашел интересный вопрос и хотел бы услышать вашу интерпретацию.

from patsy import dmatrix,demo_data
df = pd.DataFrame(demo_data("a", "b", "x1", "x2", "y", "z column"))

Patsy_Standarlize_Output = dmatrix("standardize(x2) + 0",df).ravel()
output = (df['x2'] - df['x2'].mean()) / df['x2'].std()
Pandas_Standarlize_Output = output.ravel()

если вы распечатаете результаты для стандартизованных столбцов x2, вы обнаружите, что результат совсем другой. Результат следующий:

Patsy_Standarlize_Output = [-1.21701061, -0.07791372, -0.66884723, 2.23584028, 0.69898536, -0.71843674, -0.00416815, -0.2484492]

Pandas_Standarlize_Output = [-1.13840918, -0.07288161, -0.62564929, 2.09143707, 0.65384094, -0.67203603, -0.00389895, -0.23240294]

У меня вопрос, поскольку я проводил стандартизацию для одного и того же столбца, почему результаты разные?

Я с нетерпением жду вашей прекрасной интерпретации! и большое спасибо за ваше время и помощь!

1 ответ

Решение

Панды std()выполняет коррекцию Бесселя, в то время как большинство других библиотек этого не делают. Практически не имеет значения, если у вас есть несколько десятков точек, но для небольших выборок это очень разумный поступок.

Доказательство: если вы замените df['x2'].std() с версией numpy (df['x2'].values.std()) результаты будут совпадать

Другие вопросы по тегам