データの分割

データの分割

学習を始める前にデータを学習・テスト用に分割します。

学習時にはリークを避けるためにテスト用のファイルは一切ふれないようにすることが大切です。

データのロード

import pandas as pd

data = pd.read_csv("input/pn.csv")

学習・テストセットに分割

train_test_split を使います。

from sklearn.model_selection import train_test_split

train, test = train_test_split(data, test_size=0.2, random_state=0)
def check_label_distribution(splits, labels):
    res = []
    for s in splits:
        percs = [
            (s.query('label == @label').size * 100 / s.size).round(2)
            for label in labels
        ]
        res.append(percs)
    return res
check_label_distribution([train, test], ["positive", "neutral", "negative"])
[[61.32, 24.02, 14.66], [61.39, 23.58, 15.03]]

ラベルの分布を保つにはstratify引数にラベルを使います。

train, test = train_test_split(data, test_size=0.2, stratify=data["label"], random_state=0)
check_label_distribution([train, test], ["positive", "neutral", "negative"])
[[61.35, 23.93, 14.72], [61.3, 23.94, 14.76]]