Machine-learning-with-python-understanding-data-with-statistics
ML-統計を使用したデータの理解
前書き
機械学習プロジェクトでの作業中、通常、 _ mathematics_ および data と呼ばれる2つの最も重要な部分を無視します。 MLはデータ駆動型のアプローチであり、MLモデルが提供するデータと同じくらい良い結果か悪い結果しか生成しないためです。
前の章では、CSVデータをMLプロジェクトにアップロードする方法について説明しましたが、アップロードする前にデータを理解しておくとよいでしょう。 統計と視覚化の2つの方法でデータを理解できます。
この章では、Pythonのレシピに従うことで、MLデータと統計を理解します。
生データを見る
最初のレシピは、生データを見るためのものです。 生データを見ることで得られる洞察は、MLプロジェクトのデータの処理だけでなく、前処理を改善する可能性を高めるため、生データを見ることが重要です。
以下は、Pima Indians糖尿病データセットでPandas DataFrameのhead()関数を使用して実装されたPythonスクリプトで、最初の50行を見て理解を深めます-
例
出力
上記の出力から、最初の列が行番号を示していることがわかります。これは特定の観測を参照するのに非常に役立ちます。
データの次元の確認
MLプロジェクトで使用している行と列のデータ量を知ることは常に良い習慣です。 背後にある理由は-
- 行と列が多すぎる場合、アルゴリズムの実行とモデルのトレーニングに時間がかかると仮定します。
- 行と列が少なすぎると、モデルを適切にトレーニングするのに十分なデータがないと仮定します。
以下は、Pandas Data Frameのshapeプロパティを印刷することによって実装されたPythonスクリプトです。 その中の行と列の総数を取得するために、虹彩データセットに実装します。
例
出力
出力から、使用するアヤメのデータセットが150行4列であることが簡単にわかります。
各属性のデータ型の取得
各属性のデータ型を知ることは、別の良い習慣です。 その理由は、要件に従って、あるデータ型を別のデータ型に変換する必要がある場合があるためです。 たとえば、カテゴリ値または順序値を表すために、文字列を浮動小数点または整数に変換する必要がある場合があります。 生データを見ると、属性のデータ型について知ることができますが、別の方法は、Pandas DataFrameの_dtypes_プロパティを使用することです _dtypes_プロパティの助けを借りて、各属性のデータ型を分類できます。 それは、次のPythonスクリプトの助けを借りて理解することができます-
例
出力
上記の出力から、各属性のデータ型を簡単に取得できます。
データの統計的要約
形状を取得するためのPythonレシピについて説明しました。 データの行と列の数ですが、そのデータの形状から概要を確認する必要がある場合が多くあります。 それは、Pandas DataFrameの_describe()_関数の助けを借りて行うことができます。これは、各データ属性のすべての次の8つの統計プロパティを提供します-
- カウント
- Mean
- 標準偏差
- 最小値
- 最大値
- 25%
- 中央値、つまり 50%
- 75%
例
出力
上記の出力から、Pima Indian Diabetesデータセットのデータの統計的要約をデータの形状とともに観察できます。
クラス分布の確認
クラス分布統計は、クラス値のバランスを知る必要がある分類問題で役立ちます。 クラス値の分布を知ることは重要です。なぜなら、クラス分布が非常に不均衡な場合、つまり 1つのクラスが他のクラスよりも多くの観測値を持っている場合、MLプロジェクトのデータ準備段階で特別な処理が必要になる場合があります。 Pandas DataFrameの助けを借りて、Pythonでクラス分布を簡単に取得できます。
例
出力
上記の出力から、クラス0の観測値の数はクラス1の観測値の数のほぼ2倍であることが明確にわかります。
属性間の相関の確認
2つの変数間の関係は相関と呼ばれます。 統計では、相関を計算するための最も一般的な方法は、ピアソンの相関係数です。 次のように3つの値を持つことができます-
- *係数値= 1 *-変数間の完全な*正の*相関を表します。
- *係数値= -1 *-変数間の完全な*負*相関を表します。
- *係数値= 0 *-変数間の相関がまったくないことを表します。
高度に相関する属性がある場合、線形回帰やロジスティック回帰などの一部の機械学習アルゴリズムのパフォーマンスが低下するため、データセットの属性のペアワイズ相関をMLプロジェクトに使用する前に確認することは常に有効です。 Pythonでは、Pandas DataFrameの_corr()_関数を使用して、データセット属性の相関行列を簡単に計算できます。
例
出力
上記の出力のマトリックスは、データセット内の属性のすべてのペア間の相関関係を示しています。
属性分布のスキューの確認
歪度は、ガウス分布であると想定されるが、ある方向または別の方向、または左または右のいずれかに歪んだりシフトしたように見える分布として定義できます。 属性の歪度を確認することは、次の理由により重要なタスクの1つです-
- モデルの精度を高めるために、データに歪みが存在する場合は、データ準備段階での修正が必要です。
- ほとんどのMLアルゴリズムは、データがガウス分布を持っていることを前提としています。 通常のベル曲線データ。
Pythonでは、Pandas DataFrameで* skew()*関数を使用して、各属性のスキューを簡単に計算できます。
例
出力
上記の出力から、正または負のスキューが観察できます。 値がゼロに近い場合、スキューは少なくなります。