Logistic-regression-in-python-preparing-data
Pythonでのロジスティック回帰-データの準備
分類子を作成するには、分類子構築モジュールが要求する形式でデータを準備する必要があります。 One Hot Encoding を実行してデータを準備します。
データのエンコード
データをエンコードすることの意味を簡単に説明します。 まず、コードを実行しましょう。 コードウィンドウで次のコマンドを実行します。
In [10]: # creating one hot encoding of the categorical columns.
data = pd.get_dummies(df, columns =['job', 'marital', 'default', 'housing', 'loan', 'poutcome'])
コメントが言うように、上記のステートメントはデータの1つのホットエンコーディングを作成します。 何が作成されたのか見てみましょう。 データベースのヘッドレコードを印刷して、*“ data” *という作成されたデータを調べます。
In [11]: data.head()
次の出力が表示されます-
上記のデータを理解するために、以下に示すように data.columns コマンドを実行して列名をリストします-
In [12]: data.columns
Out[12]: Index(['y', 'job_admin.', 'job_blue-collar', 'job_entrepreneur',
'job_housemaid', 'job_management', 'job_retired', 'job_self-employed',
'job_services', 'job_student', 'job_technician', 'job_unemployed',
'job_unknown', 'marital_divorced', 'marital_married', 'marital_single',
'marital_unknown', 'default_no', 'default_unknown', 'default_yes',
'housing_no', 'housing_unknown', 'housing_yes', 'loan_no',
'loan_unknown', 'loan_yes', 'poutcome_failure', 'poutcome_nonexistent',
'poutcome_success'], dtype='object')
ここで、 get_dummies コマンドによって1つのホットエンコードがどのように行われるかを説明します。 新しく生成されたデータベースの最初の列は「y」フィールドで、このクライアントがTDにサブスクライブしているかどうかを示します。 次に、エンコードされた列を見てみましょう。 最初のエンコードされた列は*「ジョブ」*です。 データベースの「job」列には、「admin」、「blue-collar」、「entrepreneur」など、考えられる多くの値があります。 可能な値ごとに、データベースに新しい列が作成され、列名がプレフィックスとして追加されます。
したがって、「job_admin」、「job_blue-collar」などの列があります。 元のデータベースのエンコードされたフィールドごとに、作成されたデータベースに追加された列のリストがあり、元のデータベースで列が使用できるすべての値が含まれています。 列のリストを注意深く調べて、データが新しいデータベースにマップされる方法を理解します。
データマッピングについて
生成されたデータを理解するために、dataコマンドを使用してデータ全体を印刷してみましょう。 コマンド実行後の部分的な出力を以下に示します。
In [13]: data
上記の画面は、最初の12行を示しています。 さらに下にスクロールすると、すべての行に対してマッピングが行われていることがわかります。
データベースのさらに下の部分的な画面出力は、クイックリファレンスとしてここに表示されます。
マッピングされたデータを理解するために、最初の行を調べてみましょう。
「y」フィールドの値で示されるように、この顧客はTDにサブスクライブしていないと言います。 また、この顧客が「ブルーカラー」の顧客であることも示しています。 水平方向に下にスクロールすると、彼には「住宅」があり、「融資」を受けていないことがわかります。
この1つのホットエンコーディングの後、モデルの構築を開始する前に、さらにデータ処理が必要になります。
「不明」の削除
マッピングされたデータベースの列を調べると、「不明」で終わる列がいくつかあることがわかります。 たとえば、スクリーンショットに示す次のコマンドを使用して、インデックス12の列を調べます-
In [14]: data.columns[12]
Out[14]: 'job_unknown'
これは、指定された顧客のジョブが不明であることを示します。 明らかに、このような列を分析とモデル構築に含めることは意味がありません。 したがって、「不明な」値を持つすべての列を削除する必要があります。 これは、次のコマンドで行われます-
In [15]: data.drop(data.columns[[axis=1, inplace=True)
必ず正しい列番号を指定してください。 疑わしい場合は、前述のようにcolumnsコマンドでインデックスを指定することで、いつでも列名を調べることができます。
不要な列を削除した後、以下の出力に示すように列の最終リストを調べることができます-
In [16]: data.columns
Out[16]: Index(['y', 'job_admin.', 'job_blue-collar', 'job_entrepreneur',
'job_housemaid', 'job_management', 'job_retired', 'job_self-employed',
'job_services', 'job_student', 'job_technician', 'job_unemployed',
'marital_divorced', 'marital_married', 'marital_single', 'default_no',
'default_yes', 'housing_no', 'housing_yes', 'loan_no', 'loan_yes',
'poutcome_failure', 'poutcome_nonexistent', 'poutcome_success'],
dtype='object')
この時点で、データはモデル構築の準備ができています。