Rで何かをしたり、読書をするブログ

政府統計の総合窓口のデータや、OECDやUCIやのデータを使って、Rの練習をしています。ときどき、読書記録も載せています。

UCI Machine Learning Repository の Credit Approval のデータの分析2 - R でデータフレームを分析しやすいように前処理する。

Bing Image Creator で生成: Close up of White Hawthorn Blossoms, background is great river and blue sky, photo

 

www.crosshyou.info

の続きです。前回に引き続き、変数を分析しやすいように処理していきます。

X7 からはじめます。X7 は文字列のデータなので、比率を計算します。

v が 58% と一番多いので、v ならば 1, そうでないなら 0 のダミー変数に変換してしまいます。

X8 は数値データですので、A8 に変数名を変えるだけにします。

X9 は TRUE か FALSE のロジカル変数なので、TRUE なら 1, FALSE なら 0 のダミー変数に変換してしまいます。

X10 も同様です。

X11 は元のデータの説明を見ると、数値データなのですが、文字列型として読み込まれています。parse_number() 関数で数値型に変換します。

X12 は TRUE / FALSE の論理型です。これは、1 / 0 のダミー変数に変換してしまいます。

X13 は g や s の文字列ですね。比率を確認します。

g が 90% の比率です。g ならば 1, そうでないなら 0 のダミー変数に変換してしまいます。

X14 は数値型の変数なのですが、文字列型の値で読み込まれています。これも parse_number() 関数で数値型にします。

13 個の観測値が数値に変換できなかったようです。これらは後で除外するので、ここでは気にしません。

X15 は A14に変数名を変えるだけです。

X16 は 私が予測したい変数です。+ と - の比率を確認します。

- が 55.5%, + が44.5% です。+ なら 1, - なら 0 のダミー変数に変換してしまいます。
そして、変数の名前を approved に変更します。

NA の観測値を削除します。na.omit() 関数を使います。

approved を一番左に移動させます。relocate() 関数を使います。

666 個の観測データがあることがわかります。

A2, A3, A8, A11, A14, A15 は 値の範囲が大きいので、すべてを最小値が 0, 最大値が 1 に標準化します。

そのためにまず、自作関数を作ります。

この自作関数で、処理します。

summary() 関数で各変数の最小値、最大値、平均値を確認します。

すべて変数が、最小値は 0, 最大値は 1 になっていることが確認できます。

これで、分析しやすいようにデータフレームを整えることができました。

今回は以上です。

次回は、

www.crosshyou.info

です。

 

初めから読むには、

www.crosshyou.info

です。

今回のコードは以下になります。

#
# X7 の比率
df |> 
  count(X7) |> 
  mutate(prop = n / sum(n)) |> 
  arrange(desc(n))
#
# X7 の変換
df <- df |> 
  rename(A7 = X7) |> 
  mutate(A7 = if_else(A7 == "v", 1, 0))
glimpse(df)
#
# X8 の変換
df <- df |> 
  rename(A8 = X8)
glimpse(df)
#
# X9 の変換
df <- df |> 
  rename(A9 = X9) |> 
  mutate(A9 = if_else(A9 == TRUE, 1, 0))
glimpse(df)
#
# X10 の変換
df <- df |> 
  rename(A10 = X10) |> 
  mutate(A10 = if_else(A10 == TRUE, 1, 0))
glimpse(df)
#
# X11 の変換
df <- df |> 
  rename(A11 = X11) |> 
  mutate(A11 = parse_number(A11))
glimpse(df)
#
# X12 の変換
df <- df |> 
  rename(A12 = X12) |> 
  mutate(A12 = if_else(A12 == TRUE, 1, 0))
glimpse(df)
#
# X13 の比率
df |> 
  count(X13) |> 
  mutate(prop = n / sum(n)) |> 
  arrange(desc(n))
#
# X13 の変換
df <- df |> 
  rename(A13 = X13) |> 
  mutate(A13 = if_else(A13 == "g", 1, 0))
glimpse(df)
#
# X14 の変換
df <- df |> 
  rename(A14 = X14) |> 
  mutate(A14 = parse_number(A14))
glimpse(df)
#
# X15 の変換
df <- df |> 
  rename(A15 = X15)
glimpse(df)
#
# X16 の比率
df |> 
  count(X16) |> 
  mutate(prop = n / sum(n)) |> 
  arrange(desc(n))
#
# X16 の変換
df <- df |> 
  rename(approved = X16) |> 
  mutate(approved = if_else(approved == "+", 1, 0))
glimpse(df)
#
# NA 行を削除
df <- na.omit(df)
colSums(is.na(df))
#
# approved を一番左にもってくる
df <- df |> 
  relocate(approved)
glimpse(df)
#
# min-max法の関数を作る
minmax <- function(x) {
  (x - min(x)) / (max(x) - min(x))
}
#
# A2, A3, A8, A11, A14, A15 をminmax()で処理する
df <- df |> 
  mutate(
    A2 = minmax(A2),
    A3 = minmax(A3),
    A8 = minmax(A8),
    A11 = minmax(A11),
    A14 = minmax(A14),
    A15 = minmax(A15)
  )
#
# df のサマリー
summary(df)
#