Среднее значение данных, масштабированных с помощью sklearn StandardScaler, не равно нулю

У меня есть следующий код

import pandas as pd
from sklearn.preprocessing import StandardScaler
import numpy as np

df.columns=['sepal_len', 'sepal_wid', 'petal_len', 'petal_wid', 'class']
df.dropna(how="all", inplace=True) # drops the empty line at file-end 

X = df.ix[:,0:4].values
y = df.ix[:,4].values

Затем я масштабирую данные и получаю средние значения:

X_std = StandardScaler().fit_transform(X)
mean_vec = np.mean(X_std, axis=0)

Что я не понимаю, так это то, что мой вывод такой:

[ -4.73695157e-16  -6.63173220e-16   3.31586610e-16  -2.84217094e-16]

Я действительно понимаю, как эти значения могут быть чем-то отличным от 0. Если я масштабирую это, это должно быть 0 ноль, верно?

Может ли кто-нибудь объяснить мне, что здесь происходит?

1 ответ

Решение

На практике эти значения настолько близки к 0, что вы можете считать их равными 0.

Масштабирующее устройство пытается установить среднее значение равным нулю, но из-за ограничений с числовым представлением оно может получить только среднее значение, близкое к 0.

Проверьте этот вопрос на точность арифметики с плавающей точкой.

Также интересна концепция машины Epsilon и что для поплавка 64 это что-то вроде 2.22e-16

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