我一直在研究线性判别分析和SVD,并且正在使用sklearn实现。我深入研究了sklearn代码,并在df_test_hourly['prediction']
Datetime
2014-09-26 00:00:00 X1
2014-09-26 01:00:00 X2
2014-09-26 02:00:00 X3
2014-09-26 03:00:00 X4
2014-09-26 04:00:00 X5
...
2014-09-26 23:00:00 X23
中找到了这些缩放比例线:
_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)
。
例如,如果我有1000个具有900个类的要素,并且将min(n_components,n_samples-n_classes)
设置为300,则我的输出尺寸为100。
谢谢!