2017-11-01 2 views
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) 그룹은 동일한 값 또는 종속 columns의 열이다. 마지막으로 나는 다음과 같은 열 싶어 : 나는 파이썬에서 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

. 누군가가 이것을 달성하는 방법에 대해 안내 할 수 있습니까?

편집

: 여기 내가

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_)) 

감사를 사용하고있는 예제 코드입니다.

+0

값이 분명히 열이 비슷하다는 것을 나타 내기 때문에 PCA를 사용할 필요가 없습니다. 열의 값을 비교하고 중복 된 값을 비교하지 않는 이유는 무엇입니까? –

+0

@AnandCU이 예제에서는 열 수는 제한되어 있지만 원래 문제는 100000 열과 100000 행입니다. 그런 큰 데이터 프레임에서 유사성 테스트를 수행하는 데는 시간이 걸립니다. –

+0

PCA를 사용해 보셨습니까? 어디서 붙어 있니? 또한이 답변을 https://stackoverflow.com/a/14985695/5026636에서 확인하십시오. 시도 해봐. –

답변

0

this comment을 대답으로 변환하려면 중복 열을 찾아서 drop_duplicates으로 삭제하십시오.

df = df.set_index('Test') 
df.T.drop_duplicates(keep='first').T 

     A D E H N 
Test     
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 
관련 문제