문서의 텍스트 분류를하고 있는데, 약 4,000 개의 카테고리와 110 만 개의 데이터 샘플이 있습니다.텍스트 분류를 위해 PCA를 사용한 치수 감소
나는 각 문서에서 단어의 주파수를 포함하는 행렬을 구성하고있다. 들은 모든 행에서 동일한 값을 가지고 있기 때문에 시료의 매트릭스는 상기 매트릭스에서
X1 X2 X3 X4
D1 1 1 0 1
D2 1 1 1 0
D3 1 1 0 0
D4 1 1 1 1
D5 0 0 1 0
D6 0 0 1 1
아래로 보이는 X1 및 X2는 이중 기능한다. 내가 110 만 개 데이터에서 매트릭스를 구성 할 때
첫째, 90K 기능과 함께 거대한 행렬을 얻을 것이다.
매트릭스 크기를 줄이기 위해 치수 감소 기술을 사용합니다 PCA 저는 희소 매트릭스를 사용하면서 PCA를 계산하기 위해 TruncatedSVD를 사용했습니다. 내가 Sckit 코드 아래 사용 PCA의 구현을 배우고 사용하고
는
from sklearn.decomposition import TruncatedSVD
X = [[1,1,0,1], [1,1,1,0], [1,1,0,0],[1,1,1,1],[0,0,1,0],[0,0,1,1]]
svd = TruncatedSVD(n_components=3)
svd.fit(X)
X_new=svd.fit_transform(X)
X_new의 출력은
array([[ 1.53489494, -0.49612748, -0.63083679],
[ 1.57928583, -0.04762643, 0.70963934],
[ 1.13759356, -0.80736818, 0.2324597 ],
[ 1.97658721, 0.26361427, -0.15365716],
[ 0.44169227, 0.75974175, 0.47717963],
[ 0.83899365, 1.07098246, -0.38611686]])
이
내가 있어 감소 차원 내가 나이브 입력으로 X_new을주고있다이다 베이 즈 분류 자. 내가 아래에있어 110 만 샘플에 대한clf = GaussianNB()
model=clf.fit(X_new, Y)
는 출력 : 위의 단계가 올바른지
No_of_components
(“n_components” parameter) accuracy
1000 6.57%
500 7.25%
100 5.72%
나는 매우 낮은 정확성을 얻고,
여부?
추가로 포함해야 할 사항은 무엇입니까? 당신이 차원의 rediction 동안 대부분의 정보가 손실 때문에
데이터의 카테고리 분포를 알고 있습니까? – doctorlove
배포 빈도를 범주로 이해합니다. 그것에 따르면, 4k 카테고리 중 약 400 카테고리는 500 개 이상의 데이터를 가지고 있으며, 약 750 카테고리는 100-400 데이터를 가지고 나머지 카테고리는 10보다 아래의 데이터를 가지고 있습니다. –
분산이 심하게 왜곡되면 위험이 더 자주 발생합니다 풍모. 예를 들면, 데이터에 대한 추가 변환을 고려하십시오. Z 점수. – QHarr