2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

『アート・オブ・機械学習』で扱われる外部のサンプルデータの取り込み方

2
Last updated at Posted at 2026-05-31

2026年5月28日に共立出版より『アートオブ・機械・学習』が出版されました。
2023年に統計数理研究所で開催されたR研究集会(「データ解析環境Rの整備と利用」)で同書の著者が開発したqeMLパッケージの紹介をした縁で同書をご恵贈いただきましたので、noteの方でレビューを書かせていただきました。

本書では様々なサンプルデータを用いて各機械学習手法を解説しています。
パッケージに含まれるデータセットはdata()関数で簡単に呼び出せるのですが、一部のデータは外部から取り込む必要があり、特にRの初心者にはやや煩雑です。

そこでこの記事では紹介されている各データを簡単に取り込めるコードを紹介します。
どれもコピペして実行するだけでデータを取り込めます。

なお、本書の方針に合わせてTidyverseは使わずにBase Rで書いています。

Telco Churn データセット(P50)

書籍の中ではKaggleで公開されているデータセットが紹介されています。
Kaggleで公開されているデータセットはRKaggleパッケージで簡単に取り込むことができます。

if (!require("RKaggle", quietly = TRUE)) install.packages("RKaggle")
library(RKaggle)
telco <- get_dataset("blastchar/telco-customer-churn") |>
  as.data.frame()

脊椎データ(P56)

こちらのデータセットはUCI機械学習レポジトリで公開されています。
UCI機械学習レポジトリで公開されているデータセットはucimlrepoパッケージで簡単に取り込めます。
データセットの名前かid番号で指定します。
そのままだと様々なメタデータが含まれるので、必要なデータフレームのみを取り出します。
また、書籍に合わせて変数名をV1~V7に置き換え、V7は因子型に変換しています。

if (!require("ucimlrepo", quietly = TRUE)) install.packages("ucimlrepo")
library(ucimlrepo)
vert_raw <- fetch_ucirepo(name = "Vertebral Column") #データセット名で指定する場合
# vert_raw <- fetch_ucirepo(id = 212) #id番号で指定する場合
vert <- vert_raw$data$original
rm(vert_raw)
names(vert) <- paste0("V", 1:7)
vert$V7 <- as.factor(vert$V7)

予約データセット(P62)

こちらもKaggleで公開されているのでRKaggleパッケージで取り込みましょう。
変数名を書籍に合わせ、文字列型を因子型に変換する処理も行っています。

if (!require("RKaggle", quietly = TRUE)) install.packages("RKaggle")
library(RKaggle)
ma <- get_dataset("joniarroba/noshowappointments") |>
  as.data.frame()
names(ma) <- make.names(names(ma), unique = TRUE)
char_cols <- sapply(ma, is.character)
ma[char_cols] <- lapply(ma[char_cols], as.factor)

Million Songs データセット(P87)

こちらのデータセットはUCI機械学習レポジトリで公開されています。
しかし、このデータセットではucimlrepoパッケージに対応したファイルが用意されていません。
また、サイズが約200MBと大きいため通常の方法では読み込みに非常に時間がかかります。
ここでは大規模データに対応したarrowパッケージを用いて、大きなデータを高速に読み込むこととします。

if (!require("arrow", quietly = TRUE)) install.packages("arrow")
library(arrow)
temp_zip <- tempfile(fileext = ".zip")
url <- "https://archive.ics.uci.edu/static/public/203/yearpredictionmsd.zip"
download.file(url, temp_zip, mode = "wb")
yr <- as.data.frame(read_csv_arrow(unz(temp_zip, "YearPredictionMSD.txt")))
unlink(temp_zip)

Forest Cover データセット(P120)

こちらのデータセットはUCI機械学習レポジトリで公開されています。
UCI機械学習レポジトリで公開されているデータセットはucimlrepoパッケージで簡単に取り込めます。

if (!require("ucimlrepo", quietly = TRUE)) install.packages("ucimlrepo")
library(ucimlrepo)
cvr_raw <- fetch_ucirepo(id = 31) #id番号で指定する場合
cvr <- cvr_raw$data$original
rm(cvr_raw)
names(cvr) <- paste0("V", 1:55)

アフリカ土壌データ(P133)

こちらもKaggleで公開されているのですが、コンペ用のデータなのでRKaggleパッケージでは取り込みができません。
これだけはKagggleにログインしてダウンロードしてくるしかないようです。

ネットワーク監視(P139)

このデータはエクセル(xlsx)形式なので、rioパッケージを使って読み込みます。

if (!require("rio", quietly = TRUE)) install.packages("rio")
library(rio)
ds <- import("https://github.com/val-luciani/qoe-ml-prediction/raw/refs/heads/master/qoe-prediction/dataset.xlsx")
char_cols <- sapply(ds, is.character)
ds[char_cols] <- lapply(ds[char_cols], as.factor)
names(ds) <- make.names(names(ds), unique = TRUE)

Airbnbデータ(P169)

このデータはKaggle上で公開されているのでRKaggleで取得できる。
前処理されていない生データである。

if (!require("RKaggle", quietly = TRUE)) install.packages("RKaggle")
library(RKaggle)
Abb <- get_dataset("jeploretizo/san-francisco-airbnb-listings") |>
  as.data.frame()

また、訳注にあるように、前処理済みのデータが原著者によって公開されている。

temp_Rdata <- tempfile(fileext = ".Rdata")
url <- "https://github.com/matloff/ArtOfML/raw/refs/heads/main/Data/Abb.Rdata"
download.file(url, temp_Rdata, mode = "wb")
load("Abb.Rdata")
unlink(temp_Rdata)

PART V に関しては訳者の方が訳注で丁寧にデータの取り込み方を記載されているので割愛します。

以上です!

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?