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

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

UCI Machine Learning Repository の Credit Approval のデータの分析1 - R にデータを読み込む。

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 のダミー変数に変換してしまいます。

とここまでで、少し疲れてしまいました。

今回はここまでとします。

次回は

www.crosshyou.info

です。

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

#

# 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)
#