私はsklearnを使って多次元スケーリング解析を実行しようとしている16,000x16,000の対称行列を持っています。私は独特の相違度の計算を作成したので私自身の行列を使う必要があります。計算はdf.pivotを使用する前に実行され、すべての計算はnp.float64タイプを使用して実行されました。Pythonは、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
手動でデータを見たとき、それは完璧に見えるが、非常に多くの列と行を考えると、私はもしそこに驚きませんdf.pivotコマンドに混乱をもたらした、受け取った初期データから最初のペアごとの列/行グループから作成されたエラーまたは2つでした。
このように、np.allcloseエラーをクリアできるように、この相違度行列の1つまたは2つの非対称値を見つけるにはどうすればよいですか?
それは不思議に思った。私は丸めを試みましたが、必要な1e-10と比較してtol 1e-6しか戻っていませんでした。check_symmetricはデータのほとんどを変更することなく完全に機能しました。ありがとう、トン! – WolVes