1
我不知道如何使用LDA只是降維。我應該比降維整個數據集進行線性判別分析?
我有64層的功能和爲類索引1列中的75x65矩陣。這個矩陣可以找到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我:
具有良好的類分離。
但是,當我轉換測試集和情節X_test,我有這樣的:
它沒有明顯的模式,遠不是我們可以在我們的訓練數據集看。
我推測,這可能是一個小的數據集(僅75個樣本均勻分佈在5類)的結果,但這個數據是真的很難不幸聚集。
我已經從不同的地方讀過使用LDA在所有數據集上試圖在訓練/測試集中分離數據集並將它與另一個分類器分類之前(這種方法我可以實現小於10%的誤差),但我也聽到很多人說我應該用我在代碼中提到的方式。如果我只使用LDA進行降維,哪種方法是正確的?在此基礎上壯觀的repository/book