1

私はPythonが初めてで、各属性の相関係数とターゲット値との間のグラフをプロットする必要があります。膨大な数の値を持つ入力データセットがあります。以下に、サンプル データセットの値を示します。特定の消費者が会社を離れるかどうかを予測する必要があるため、結果列がターゲット変数です。

SALARY  DUE RENT    CALLSPERDAY CALL DURATION   RESULT
238790  7   109354  0                     6     YES
56004   0   204611  28                    15    NO
671672  27  371953  0                      4    NO
786035  1   421999  19                    11    YES
89684   2   503335  25                     8    NO
904285  3   522554  0                     13    YES
12072   4   307649  4                     11    NO
23621   19  389157  0                      4    YES
34769   11  291214  1                      13   YES
945835  23  515777  0                      5    NO

ここで、ご覧のとおり、結果列は文字列で、残りの列は整数です。結果と同様に、文字列値を持つ他の列 (サンプルには記載されていません) もいくつかあります。ここでは、文字列値と整数値の両方を持つ列の値を計算する必要があります。辞書を使用して、文字列値を持つ各列に値を割り当てました。例: 結果列には「はい」または「いいえ」があります。したがって、以下のように値が割り当てられます。

D = {'NO': 0, 'YES': 1}

ラムダ関数を使用して、データセットの各列をループし、NO を 0 に、YES を 1 に置き換えました。式を使用して相関係数を計算しようとしました。

pearsonr(S.SALARY,targetVarible)

ここで、S はすべての値を保持するデータフレームです。同様に、データセットのすべての列をループして、各列の相関係数をターゲット変数に対して計算します。

これは相関係数を計算する効率的な方法ですか? 以下のように値を取得しているため (0.088327739664096655, 1.1787456108540725e-25) e^-25 が小さすぎるようです。

他に計算する方法はありますか?整数値を持つ他の列と比較したときに整数として扱うことができるように、文字列値を入力する他の方法を提案しますか(私が使用した辞書とラムダ以外?)

また、同じコードを使用して棒グラフをプロットする必要があります。from matplotlib import pyplot を plt ライブラリとして使用する予定です。

棒グラフをプロットする他の関数を提案しますか。ほとんどの場合、sklearnライブラリ、numpy、およびpandasを使用して、それらから既存の関数を使用しています。誰かが私を助けてくれれば、それは素晴らしいことです。ありがとう。

4

1 に答える 1

1

コメントで述べたように、 df.corr() を使用してデータの相関行列を取得できます。DataFrame の名前が df であると仮定すると、次の相関関係をプロットできます。

df_corr = df.corr()
df_corr[['RESULT']].plot(kind='hist')

Pandas DataFrames には、matplotlib を使用するプロット関数があります。詳細については、http: //pandas.pydata.org/pandas-docs/stable/visualization.htmlをご覧ください。

于 2016-05-01T15:46:50.023 に答える