Я пытаюсь уменьшить набор данных с помощью LDA. Я ожидаю, что по сокращенному набору данных у меня будет меньше точности. Однако, в зависимости от случайного семени, я иногда получаю уменьшенную версию, которая дает мне более высокую точность.Точность LDA выше для уменьшенного набора данных, чем для оригинала
X, y = make_classification(1000, 50, n_informative=10, n_classes=20)
X1, X2, y1, y2 = train_test_split(X, y)
lda = LDA()
lda.fit(X1, y1)
predicted = lda.predict(X2)
full_accuracy = accuracy_score(y2, predicted)
reduction = LDA(n_components=5)
X1red = reduction.fit_transform(X1, y1)
X2red = reduction.transform(X2)
lda.fit(X1red, y1)
predicted = lda.predict(X2red)
reduced_accuracy = accuracy_score(predicted, y2)
print full_accuracy, reduced_accuracy, reduced_accuracy/full_accuracy
# prints 0.132 0.16 1.21212121212
Знаете ли вы, почему после уменьшения размерности у меня есть более высокая точность?