機械学習を始めると最初に初心者がつまずくのがデータの加工、前処理ではないでしょうか?
データの形は頭にあるがうまく加工できない、手作業でやるには非効率的すぎる等など。
ここでは私が機械学習を始めた際に、データ加工・前処理をしたやり方をご紹介していきたいと思います。
ここで紹介すること
① 特徴量として使いたいカラムの抽出方法
② Null値の置換
環境
Google Colaboratory
加工データ
以下に簡単な加工用データを用意しました。ファイル名は適当に userinfo.csvとしておきます。
genderは 1:男性、2:女性 とします。
favorite_food_genreは、「好きな食べ物のジャンル」です。データが入っていないところは無回答としておきます。
ファイル名:userinfo.csv
no | user_id | name | age | gender | favorite_food |
1 | A00001 | Pochi | 12 | 1 | born |
2 | A00002 | Tama | 6 | 2 | fish |
3 | A00003 | Yota | 4 | 1 |
必要ライブラリの読み込み
データ加工に必要なライブラリを読み込みます。
1 2 3 4 5 6 7 |
############################## # ライブラリの読み込み ############################## # ライブラリ読み込み import numpy as np import pandas as pd |
ファイル読み込み
前段で用意したcsvデータをを読み込みます。
1 2 3 4 5 |
#################################### # userinfo.csvの読み込み #################################### df_userinfo = pd.read_csv('/content/drive/My Drive/csv/userinfo.csv', encoding='cp932') |
Excelから保存したcsvだと文字化けを起こしてしまうので encoding='cp932' を指定します。
① 特徴量として扱う特定カラムを抽出
機械学習をさせる際の特徴量として取り出したいカラムだけを抽出します。
ここでは年齢(age)、性別(gender)、好きな食べ物(favorite_food)を特徴量としてそのカラムだけを抽出します。
1 2 3 4 5 6 7 8 9 |
############################## # 特徴量に必要なカラムだけを抽出 ############################## df_userinfo_maeshori = df_userinfo[[ 'age', 'gender', ,favorite_food]] |
① 確認方法
必要なカラムだけ抽出できたか確認します。
1 2 3 4 5 6 7 8 9 10 11 |
############################## # 抽出できたか確認 ############################## df_userinfo_maeshori (出力結果) age gender favorite_food 12 1 born 6 2 fish 4 1 |
② データが入っていない(Nan値)のセルは 0 に置き換える
機械学習では空データ(Null)は読み込めないため、0に置き換えます。空データを置き換える際は fillnaを使います。
1 2 3 4 5 |
############################## # NULLデータを0に置き換える ############################## df_userinfo_maeshori = df_userinfo_maeshori.fillna(0) |
fillna(0)とすることで df_userinfo_maeshori 内の全からデータを 0 に置き換えます。
② 確認方法
必要なカラムだけ抽出できたか確認します。
1 2 3 4 5 6 7 8 9 10 11 |
############################## # Nullデータを置換できたか確認 ############################## df_userinfo_maeshori (出力結果) age gender favorite_food_genre 12 1 born 6 1 fish 4 2 <span style="color: #ff0000;">0</span> |
おわりに
いかがでしたでしょうか? 機械学習では、データの前処理で総時間の7割を使うと言われています。
データの制御に時間を費やさないこともデータサイエンティストにとって大事な技術と言えます。
その他にも前処理をするやりかたを紹介していますのでほかのページも見ていただければと思います。