データ前処理

カテゴリ変数のエンコーディングのまとめ

目次 1.数字変数のエンコーディング 1.1 OrdinalEncoder 1.2 CountEncoder 2. ダミー値エンコーディング 2.1 OneHotEncoder 2.2 SumEncoder 2.3 BinaryEncoder 2.4 BaseNEncoder 2.5 HashingEncoder 3. 別のレベルの比較エンコーディング 3.1 HelmertEncoder 3.2 BackwardDifferenceEncoder 3.3 PolynomialEncoder 4. ターゲットありエンコーダー 4.1 TargetEncoder 4.2 LeaveOneOutEncoder 4.3 MEstimateEncoder 4.4 CatBoostEncoder 4.5 GLMMEncoder 4.6 JamesSteinEncoder 4.7 WOEEncoder   ライブラリのインストール !pip install category_encoders   ライブラリのインポート import category_encoders as ce   1.数字変数のエンコーディング 1.1 OrdinalEncoder サンプルデータ作成 import pandas as pd   …

カテゴリ変数のエンコーディングのまとめ Read More »

正規化と標準化などの特徴量のスケーリング(Feature Scaling)

  目次 1. 特徴量のスケーリングの概要 1.1 特徴量のスケーリングとは 1.2 特徴量のスケーリングのライブラリ 2. 特徴量のスケーリングの手法: 2.1 MinMaxScaler 正規化(normalization) 2.2 MaxAbsScaler 2.3 StandardScaler 標準化(standardization) 2.4 RobustScaler 2.5 PowerTransformer 2.6 QuantileTransformer 2.7 Normalizer 2.8 Log Transformation (対数変換) 2.9 Square Root Transformation (平方根変換) 2.10まとめ   1.特徴量のスケーリングの概要 1.1 特徴量のスケーリングとは 特徴量のスケーリング(Feature Scaling)とはモデルの学習する前処理の一つの手法で、特徴量間のスケールを変換することです。データセットの特徴量間でスケールが異なることは多々あります。特徴量間で異なるスケールのデータセットをモデルで学習させた場合、うまく学習できないということがおこります。そのため、学習前の前処理で、特徴量間のスケールを揃えるなど必要があります。   1.2 特徴量のスケーリングのライブラリ scikit-learnでsklearn.preprocessingのモジュールは複数特徴量のスケーリングの手法があります。scikit-learnとnumpyのライブラリで特徴量のスケーリングを実験します。 詳細:https://scikit-learn.org/stable/auto_examples/preprocessing/plot_all_scaling.html   ライブラリのインポート import numpy as np import pandas as pd   from matplotlib import pyplot as plt plt.style.use(‘seaborn’)   …

正規化と標準化などの特徴量のスケーリング(Feature Scaling) Read More »

pandas tips データフレームのループを倍高速化する

  目次 Pandasのデータ処理の概要 Pandasのループ処理改善 一般的なループ(Loop) iterrows() apply() Pandas ベクトル化(Pandas Vectorization) Numpy ベクトル化(Numpy Vectorization) Pandasのループ処理改善の比較   Pandasのデータ処理の概要 pandasで大量データを扱う場合、処理速度が遅く困る事があります。公式ドキュメントではパフォーマンス向上のために Cython や Numba を使う方法を記載しています。今回の記事はデータフレームのループを倍高速化する方法を解説と実験したいと思います。 最初はベンチマークとして一般的ループを実行します。   Pandasのループ処理改善 実験の環境: 環境:Colab(Webブラウザからプログラミング言語Python) データセット:2019年シーズンのサッカープレミアリーグの試合データ データ処理:特定のチームの試合が引き分けかどうか新しい列作成 評価:データ処理の速さ   data.worldからデータを読み込みます。 サッカーの結果かなら、特定のチームの試合で引き分けかどうか計算します。 import pandas as pd df = pd.read_csv(‘https://query.data.world/s/dz7yh6j26rhswrdlbx23eyebqpisvn’) team = ‘Tottenham’ df   1. Ilocを用いた一般的なループ(Loop) ループを使用する場合は、オブジェクト全体を反復処理します。 Pythonはメリットをいかせず非常に遅いです。 def soc_loop(df, TEAM): df[‘Draws’] = 99999 for row in range(0, len(df)): if ((df[‘HomeTeam’].iloc[row] == TEAM) & (df[‘FTR’].iloc[row] == ‘D’)) | \ ((df[‘AwayTeam’].iloc[row] == TEAM) & (df[‘FTR’].iloc[row] == ‘D’)): df[‘Draws’].iloc[row] = ‘Draw’ elif ((df[‘HomeTeam’].iloc[row] == TEAM) & (df[‘FTR’].iloc[row] != ‘D’)) | \ ((df[‘AwayTeam’].iloc[row] == TEAM) & (df[‘FTR’].iloc[row] != ‘D’)): df[‘Draws’].iloc[row] = ‘No_Draw’ else: df[‘Draws’].iloc[row] = ‘No_Game’   DataFrameでプレミアリーグからすべての試合を確認する必要があり、if文の分岐で彼らがホームチームかアウェイチームかを確認する必要があります。Loopは86.5 ミリ秒かかりました。 …

pandas tips データフレームのループを倍高速化する Read More »

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 »