データ前処理

SciPyでの疎行列(sparse matrix)の膨大な量のデータ前処理

目次 1. 疎行列(sparse matrix)の概要 2. 密行列(dense matrix) 3. 疎行列の処理 ―3.1 COO方式 ―3.2 CSR方式 ―3.3 CSC方式 4. まとめ 1. 疎行列(sparse matrix)の概要 疎行列とは、ほとんど行列の要素がゼロであるような行列です。行列内のほとんどが0という特徴から、0を無視する工夫をすれば、メモリや計算速度を節約が可能になります。疎行列ではない、よくある行列を「密行列」(dense matrix)と呼ぶこともあります。数値計算や機械学習や自然言語処理など幅広い分野で扱われています。 以下の図は10×10の密行列と10×10の疎行列になります。8割近くが0の疎行列で非ゼロ部分だけ用いて計算すれば、計算時間が約2/10になり計算が早く終わらせることが可能になります。 PythonのSciPyライブラリには、疎行列を作成、保存、操作するための多くのオプションがあります。PythonのScipyを用いて、疎行列計算について解説していきます。 密行列(dense matrix) 85、90、99ゼロ率の10,000 x 10,000密行列のデータを作成します。 # Create Sparse Data import numpy as np from scipy import sparse from scipy.stats import uniform from sys import getsizeof np.random.seed(seed=42) array = uniform.rvs(size=100000000, loc = …

SciPyでの疎行列(sparse matrix)の膨大な量のデータ前処理 Read More »

MCAR、MAR、MNARの欠損値+欠損値処理

目次 1. 欠損値とは 2. MCARとは 3. MARとは 4. MNARとは 5. 欠損値の削除 5.1リストワイズ除去法 (listwise deletion) 5.2 ペアワイズ除去法 (pairwise deletion) 6. 代入法(imputation) _6.1 一変量代入法(Univariate feature Imputation) _6.2 多変量代入法(Multivariate feature imputation) 1. 欠損値とは 場合によっては全てのデータが得られていない場合があります。実際の集計には使われないような,データがないことを示す特別な値(欠損値)になります。よいモデル作成、良い分析するときに、欠損値処理が必要です。欠損値原因により、処理方法が異なります。たとえば、欠損値が50%を超える場はデータを削除するはずです。 欠損値が含まれるデータを扱う上で複数問題があります。まず、統計計算ができなくなります。また、分析の結果はバイアスが生じます。モデル作成する場合は欠損値を処理しないといけません。 欠損値のタイプ 欠損値が生じる要因として,大きく分けて3つが考えられています。 2. MCAR (Missing Completely At Random) MCAR とは,いわゆる欠損値が完全にランダムに生じているようなケースである。データになんにも依存していなくて,ほんと気まぐれ,という感じ。これは一番わかりやすい欠損のタイプです。 3. MAR (Missing At Random) MARとは,データが,測定されている値に依存して欠損する。MCAR と聞いた感じが似ているかもしれないが,MCAR よりもずっと制約が弱まっています。MCAR と違うのは,他の変数と欠損値の有無とが関係することを許容しています。 4. MNAR (Missing Not …

MCAR、MAR、MNARの欠損値+欠損値処理 Read More »