Bing Image Creator で生成: Close up of Cyclamen persicum flowers, background is green grass field, photo
今回は、UCI Machine Learning Repository の Credit Approval のデータを分析してみたいと思います。クレジットカードの申し込みが承認されるかされないかを調べるクラシフィケーションのデータです。
Quinlan, J. (1987). Credit Approval [Dataset]. UCI Machine Learning Repository. https://doi.org/10.24432/C5FS30.
データは、
このようなテキストファイルのデータで、カンマ( , ) で区切りです。
このデータの一番最後の + , - がクレジットカードが承認されたか( + ), 承認されなかったか( - ) を表しています。
まずは、tidyverse パッケージを読み込みます。
read_csv() 関数で読み込みます。ヘッダーが無いので、
col_names = FALSE にします。
glimpse() 関数でデータの様子を見てみます。
690 個の観測データがあります。X16 がターゲットの変数です。
データの説明書によりますと、
A1: b, a.
A2: continuous.
A3: continuous.
A4: u, y, l, t.
A5: g, p, gg.
A6: c, d, cc, i, j, k, m, r, q, w, x, e, aa, ff.
A7: v, h, bb, j, n, z, dd, ff, o.
A8: continuous.
A9: t, f.
A10: t, f.
A11: continuous.
A12: t, f.
A13: g, p, s.
A14: continuous.
A15: continuous.
A16: +,- (class attribute)
ということです。
A1 = X1, A2 = X2, ... A15 = X15, A16 = X16 ということです。
X1 を A1 という名前に変更して、さらに a ならば 1, b ならば 0 のダミー変数に変換します。
X2 は数値データとのことなので、parse_number() 関数で数値にして、変数名を A2 にします。
X3 は A3に名前を変えるだけでいいですね。
X4 は u, y, l, t の4つの文字のどれかです。比率を見てみましょう。
75% が u です。なので、u ならば 1, そうでないなら 0 のダミー変数に変換してしまいます。
X5(A5) は g, p, gg の3つの値を取る変数です。比率を確認します。
g が 75% ですね。X5 を g ならば 1, そうでないなら 0 のダミー変数にします。
X6(A6) はたくさんの文字の変数です。比率を確認します。
かなり雑になりますが、X6 は c なら 1, そうでないなら 0 のダミー変数に変換してしまいます。
とここまでで、少し疲れてしまいました。
今回はここまでとします。
次回は
です。
今回のコードは以下になります。
#
# tidyverse の読み込み
library(tidyverse)
#
# データの読み込み
df_raw <- read_csv("credit_approval.csv",
col_names = FALSE)
#
# データの確認
glimpse(df_raw)
#
# X1 を変更
df <- df_raw |>
rename(A1 = X1) |>
mutate(A1 = if_else(A1 == "a", 1, 0))
glimpse(df)
#
# X2 を変更
df <- df |>
rename(A2 = X2) |>
mutate(A2 = parse_number(A2))
glimpse(df)
#
# X3 を変更
df <- df |>
rename(A3 = X3)
glimpse(df)
#
# X4 の比率
df |>
count(X4) |>
mutate(prop = n / sum(n))
#
# X4 の変換
df <- df |>
rename(A4 = X4) |>
mutate(A4 = if_else(A4 == "u", 1, 0))
glimpse(df)
#
# X5 の比率
df |>
count(X5) |>
mutate(prop = n / sum(n))
#
# X5 の変換
df <- df |>
rename(A5 = X5) |>
mutate(A5 = if_else(A5 == "g", 1, 0))
glimpse(df)
#
# X6 の比率
df |>
count(X6) |>
mutate(prop = n / sum(n)) |>
arrange(desc(n))
#
# X6 の変換
df <- df |>
rename(A6 = X6) |>
mutate(A6 = if_else(A6 == "c", 1, 0))
glimpse(df)
#