2016-10-28 12 views
1

Я не понимаю, как использовать LDA только для уменьшения размерности.Должен ли я выполнять линейный дискриминантный анализ по всему набору данных для уменьшения размерности?

У меня есть матрица 75x65 с 64 функциями и 1 столбец для индекса класса. Эта матрица может быть найдена here.

Я пытаюсь использовать LDA для уменьшения размерности, используя this function из sklearn.

def classify(featureMatrix): 
    X, y = featureMatrix[:, :63], featureMatrix[: ,64] 
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20) 
    lda = LinearDiscriminantAnalysis(n_components=2) 
    rf = RandomForestClassifier(n_estimators=10, criterion="gini", max_depth=20) 

    X_train = lda.fit_transform(X_train, y_train) 
    X_test = lda.transform(X_test) 

    rf.fit(X_train, y_train) 
    print rf.score(X_test, y_test) 

Однако мой классификационный балл обычно низкий (20-30%). Кажется, что проблема заключается в преобразовании тестовых данных.

Например, когда я сюжет X_train после снижения размерности у меня есть:

enter image description here

Который имеет хорошее разделение класса.

Но когда я преобразовать тестовый набор и сюжет X_test, у меня есть это:

enter image description here

Который не имеет видимый образца и далеко от того, что мы могли видеть в нашем учебном наборе данных.

Я полагаю, что это может быть результатом небольшого набора данных (всего 75 образцов, равномерно распределенных в 5 классах), но этих данных действительно сложно собрать, к сожалению.

Я читал из разных мест людей, использующих LDA по всему набору данных, прежде чем пытаться отделить набор данных на обучающих/тестовых наборах и классифицировать его с помощью другого классификатора (таким образом, я мог бы достичь менее 10% ошибки), но Я также слышал, как многие люди говорили, что я должен использовать то, как я упоминал в коде. Если я использую только LDA для уменьшения размерности, какой путь правильный?

ответ

0

Основываясь на этом впечатляющем repository/book, вы должны поместить LDA в учебный набор данных, а затем преобразовать как учебные, так и тестовые наборы данных с использованием меньшего размера, установленного ранее.