やましなぶろぐ

kaggle_study: Kaggleでお勉強

kaggleを触ってお勉強します

🕒 Last mod: 2020-08-19


Kaggleを触ってお勉強します。
勉強したことや試したことをつれづれに淡々と書いていきます。

1. kaggle api のセットアップ

まずはじめにkaggle-apiをセットアップ。

Readmeにしたがってセットアップすれば迷うことはありません。

手順
  1. KaggleのMyAccountで”API Token”を作成

    • "Create New API Token"ボタンを押すことで"kaggle.json"をダウンロードできます

  2. ~/.kaggle/kaggle.json に配置

  3. chmod 600 ~/.kaggle/kaggle.json で権限を変更

  4. pip install kaggle

Terminal
mkdir ~/.kaggle
mv kaggle.json ~/.kaggle/kaggle.json
chmod 600 ~/.kaggle/kaggle.json
pip install kaggle

2. データセットをダウンロードする

データセットをダウンロードしてみます。

データ・セットのページにダウンロードコマンドが記載されているのでそのまま試してみると…

Terminal
kaggle competitions download -c springleaf-marketing-response

403エラーが発生してしまいました…

Result
(work) $ kaggle competitions download -c springleaf-marketing-response
403 - Forbidden

Rulesページでアクセプトボタンを押す必要があるようです。 .Rules

You must accept this competition’s rules before you can continue

”I Understand and Accept”を押してもう一度コマンドを実行してみると無事ダウンロードすることができました。

3. Kaggle Notebook を使用してみる

Kaggle Notebookを試してみます。

使用方法は簡単。

下記ページで "New notebook" ボタンを押すだけ

Notebookが作成されます。

はじめから下記の様なコードが書かれているので実行することでデータの配置場所を確認できます。

Sample.py
# This Python 3 environment comes with many helpful analytics libraries installed
# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python
# For example, here's several helpful packages to load

import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)

# Input data files are available in the read-only "../input/" directory
# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory

import os
for dirname, _, filenames in os.walk('/kaggle/input'):
    for filename in filenames:
        print(os.path.join(dirname, filename))

# You can write up to 5GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using "Save & Run All"
# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session
Result
/kaggle/input/springleaf-marketing-response/test.csv.zip
/kaggle/input/springleaf-marketing-response/train.csv.zip
/kaggle/input/springleaf-marketing-response/sample_submission.csv.zip

3.1. データをインポートしてみる

Notebookからデータを参照するには"../input/"を参照します。

またpandas.read_csvはzipファイルを読み込むことが可能です。

ですので下記のコードでデータをインポートできます。

Sample.py
import pandas as pd

PATH = "../input/springleaf-marketing-response/"
train = pd.read_csv(PATH + "train.csv.zip", nrows=200)
train

shapeを確認してみると1934変数。変数の数が多いデータ・セットを探していたのでぴったりです。

Sample.ipynb

4. 目的変数の対数変換

回帰問題の常套手段、対数変換。

4.1. np.log1p

対数変換します。0値を対数変換することができないので1を足してから変換します。

4.2. np.expm1

対数変換した結果を元に戻すときに使用します。

4.3. 使用例

処理内容
  1. データ作成: boston: X, y作成

  2. 対数変換: y_log1p

  3. モデル構築:lightgbm

  4. 評価:クロスバリデーションでMSE

  5. 対数変換しない場合とした場合のスコアを比較

    • 目的変数を対数変換している場合には予測値をexpm1で元のスケールに戻しています

対数変換後にモデルを構築したほうが良いスコアが出ていることを確認できます。

log1p.ipynb