1
バイナリデータを持つデータフレームがあり、列間の依存関係があることがわかりました。私は依存する列を削除したいだけで、独立した列を残したいと思っています。例えば以下のように入力は次のとおりです。バイナリデータの次元を減らす方法は?
Test ,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P
test1,0,0,0,0,0,0,0,1,1,1,1,1,0,1,1,1
test2,1,1,1,0,1,1,1,1,1,1,1,1,1,0,0,1
test3,1,1,1,0,1,1,1,1,1,1,1,1,1,0,0,1
test4,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1
test5,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1
ここでは、(A,B,C,G,M), (D), (E,F), (H,I,J,K,L,P) and (N, O)
は、グループが同じ値または依存列の列です、ご覧ください。最後に、私は、次の列を取得したい:私はPythonでPCAを使用しようとしているが、それを達成することができないのです
Test,A,D,E,H,N test1,0,0,0,1,1 test2,1,0,1,1,0 test3,1,0,1,1,0 test4,1,1,0,1,0 test5,1,1,0,1,0
。誰かがこれを達成する方法について私を導くことができますか?
EDIT:ここに私は
import pandas as pd
import numpy as np
from sklearn.decomposition import PCA
df = pd.read_csv("TestInput.csv")
print(df)
pca = PCA()
#Remote the header and the row names
numDf = df.iloc[:,1:]
print(pca.fit(numDf))
T=pca.transform(numDf)
print("Number of unique columns are:", T.shape[1])
print(np.cumsum(pca.explained_variance_ratio_))
感謝を使用していますサンプルコードです。
列には非常に類似していることが明示的に示されているので、PCAを使用する必要はありません。列の値を比較して重複する列を削除してみませんか? –
@AnandCUこの例では、列の数は制限されていますが、私の元の問題では100000列と100000行です。このような大きなデータフレームで類似性テストを行うには時間がかかります。 –
PCAを試しましたか?あなたはどこにいるのですか?また、この回答をhttps://stackoverflow.com/a/14985695/5026636で確認してください。試してみる。 –