필자는 sklearn을 사용하여 다차원 스케일링 분석을 수행하려고 시도하고있는 16,000x16,000 대칭 행렬을 가지고 있습니다. 고유 한 비평가 계산을 작성했기 때문에 자체 행렬을 사용해야합니다. 계산은 df.pivot을 사용하기 전에 수행되었으며 모든 계산은 np.float64 유형을 사용하여 수행되었습니다. 내가 분석을 실행하면df.pivot에 의해 생성 된 근사 대칭 행렬에서 파이썬 오류를 찾습니다.
, 나는 대칭 오류가 아래 얻을 :
C:\Users\name\AppData\Local\Continuum\Anaconda2\lib\site-packages\sklearn\utils\validation.py in check_symmetric(array=memmap([[ 0. , 0.0364484 , 0.02794817, ... 0.33687222,
1. , 0. ]]), tol=1e-10, raise_warning=True, raise_exception=True)
633 else:
634 symmetric = np.allclose(array, array.T, atol=tol)
635
636 if not symmetric:
637 if raise_exception:
--> 638 raise ValueError("Array must be symmetric")
639 if raise_warning:
640 warnings.warn("Array is not symmetric, and will be converted "
641 "to symmetric by average with its transpose.")
642 if sp.issparse(array):
ValueError: Array must be symmetric
데이터를 통해보고 수동으로는 완벽하지만, 너무 많은 행과 열 주어진 보인다 나는 놀라지 않을 것이다 경우가 는받은 초기 데이터에서 처음으로 pairwise 열/행 그룹에서 생성 된 오류 또는 두 개이며 df.pivot 명령에 혼동이있었습니다.
질문은 따라서 np.allclose 오류를 지울 수 있도록이 비대칭 행렬에서 하나 또는 두 개의 비대칭 값을 어떻게 찾을 수 있습니까? 비교가 실패 할 경우
그건 놀라운 일이되었습니다. 나는 반올림을 시도했지만, 필요한 1e-10에 비해 tol 1e-6으로 돌아왔다. check_symmetric은 거의 모든 데이터를 변경하지 않고 완벽하게 작동했다. 엄청 고마워! – WolVes