SVD решатель в линейном дискриминантном анализе sklearn - PullRequest
0 голосов
/ 24 октября 2019

Я углубился в линейный дискриминантный анализ и SVD и использую реализацию sklearn. Я погрузился в код sklearn и нашел эти строки масштабирования в _solve_svd():

# 1) within (univariate) scaling by with classes std-dev
std = Xc.std(axis=0)

# avoid division by zero in normalization
std[std == 0] = 1.
fac = 1. / (n_samples - n_classes)

# 2) Within variance scaling
X = np.sqrt(fac) * (Xc / std)

# SVD of centered (within)scaled data
U, S, V = linalg.svd(X, full_matrices=False)

Может кто-нибудь объяснить, что на самом деле делает это масштабирование? Причина, по которой я спрашиваю, состоит в том, что, поскольку я выяснил, что число выходных измерений равно min(n_components,n_samples-n_classes).

Например, если у меня 1000 объектов с 900 классами и я установил n_components в 300, мое выходное измерение100.

Спасибо!

...