EnsekiTT Blog

EnsekiTTが書くブログです。

scikit-learnのdatasetsにはどんなのが入っているのか調べてみた話【Newsgroup編】

つまりなにしたの?

Blogでサンプルを使いつつ、処理方法を紹介する時に便利なscikit-learnのdatasetsにはどんなのが入っているのか
まとめておこうと思ってまとめ始めた。今回はNewsgroupのテキストデータ。
f:id:ensekitt:20181126214928j:plain
*1

やりたいこと

  • datasetsの種類リスト
  • 各説明変数の内容を簡単に示す
  • それぞれ読み出してみる
  • 目的変数のサンプルなどを示す

今回は中でもNewsgroupのテキストデータについて紹介する。

環境

 % python
Python 3.6.4 (default, Mar  2 2018, 00:45:54)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> import pandas
>>> import sklearn
>>> numpy.__version__
'1.15.3'
>>> pandas.__version__
'0.23.4'
>>> sklearn.__version__
'0.20.0'

datasetsの種類とリスト

5. Dataset loading utilities — scikit-learn 0.20.1 documentation

  • Toy datasets
  • Real datasets

リアルデータセットと呼ばれる実際に研究のベンチマークに使われてる(てた)データセットを紹介していく。

  • Generated datasets

今回は各種データセットについて、読み込みの上Pandas DataFrameの説明変数と目的変数を作成することを目的とする。
importするもの

import pandas as pd
from sklearn import datasets
テキストデータセット

20 newsgroups text datasetは、学習用とテスト用の2つのサブセットに分割された20のトピックに関する約18000のニュースグループの投稿で構成されている。
学習用とテスト用の間の分割は、特定の日付を境にされていて、混ざっているわけではない。
5. Dataset loading utilities — scikit-learn 0.20.1 documentation

また、このデータセットはもともとはもちろん投稿されたデータなのだが、そのままでは扱いにくいので、
単語の出現回数に直したベクトルのデータを取得することもできる。
sklearn.datasets.fetch_20newsgroups は直接テキストデータを読み出す方法。
sklearn.datasets.fetch_20newsgroups_vectorized はベクトル化されたデータを読み出す方法。

説明変数
sklearn.datasets.fetch_20newsgroupsの場合

  • テキストデータ

sklearn.datasets.fetch_20newsgroups_vectorized

  • 単語ごとの出現回数
学習データの読み込み(Raw Text)
data = datasets.fetch_20newsgroups()
df = pd.DataFrame(data.data)
df.head()

f:id:ensekitt:20181126212625p:plain
序盤だけしか表示されていないけど、投稿者情報とかが見えている。
直接読みに行くとこんな感じ

df[0][0]

f:id:ensekitt:20181126212740p:plain

学習データの読み込み(Vectorized)
data = datasets.fetch_20newsgroups_vectorized()
data.data

f:id:ensekitt:20181126214106p:plain
単語ごとの出現回数のベクトルなのでスパースなマトリクスができていた。

対象データの読み込み
df_tgt = pd.DataFrame(data.target, columns=['target'])
df_tgt.head()

f:id:ensekitt:20181126212954p:plain
カテゴリに数字が与えられている。

クリエイティブ・コモンズ・ライセンス
この 作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。