質的変数と量的変数について

自然言語処理

自然言語処理(NLP)における特徴量エンジニアリングは、テキストデータから有用な特徴(特徴量)を抽出し、機械学習モデルの性能を向上させるプロセスです。今回の記事では、よく使われるタイタニック号のデータをもとに説明します。

質的変数と量的変数について

質的変数と量的変数は、データの種類を区別するための基本的な概念です。それぞれの特徴を以下に説明します。

質的変数 (Qualitative Variables)

質的変数は、データをカテゴリやグループに分類するための変数です。これらの変数は数値ではなく、カテゴリやラベルとして機能します。例えば:

  • 性別: 男性、女性
  • 血液型: A型、B型、O型、AB型
  • 満足度: 非常に満足、満足、普通、不満、非常に不満

質的変数はさらに、名義尺度(単にカテゴリを区別するもの)と順序尺度(カテゴリ間に順序があるもの)に分類されます。

量的変数 (Quantitative Variables)

量的変数は、数値で表現され、その数値が実際の量や大きさを示す変数です。これらの変数は計算が可能で、連続的または離散的な値を取ります。例えば:

  • 年齢: 25歳、30歳、45歳
  • 身長: 160cm、175cm、180cm
  • 収入: 300万円、500万円、700万円

量的変数は、間隔尺度(数値の差に意味があるもの)と比例尺度(数値の差と比率に意味があるもの)に分類されます。

質的変数と量的変数の具体例

例えば、以下のようなデータセットを考えてみましょう:

ID性別年齢身長 (cm)血液型
1男性25175A型
2女性30160B型
3男性45180O型
  • 質的変数: 性別、血液型
  • 量的変数: 年齢、身長

このように、質的変数と量的変数を適切に区別することで、データ分析や機械学習モデルの構築がより効果的になります。

変数の種類尺度の種類説明
質的変数名義尺度単にカテゴリを区別するもの(例:性別、血液型)
順序尺度カテゴリ間に順序があるもの(例:教育レベル、満足度)
量的変数間隔尺度数値の差に意味があるもの(例:温度、日付)
比例尺度数値の差と比率に意味があるもの(例:身長、体重、収入)

機械で扱いやすいように変数の処理

1. 順序特徴量のマッピング

順序特徴量は、特定の順序を持つカテゴリデータです。例えば、教育レベル(高校、学士、修士、博士)などです。

import pandas as pd

# データフレームの作成
data = {'Education': ['High School', 'Bachelor', 'Master', 'PhD']}
df = pd.DataFrame(data)

# 順序特徴量のマッピング
education_mapping = {'High School': 1, 'Bachelor': 2, 'Master': 3, 'PhD': 4}
df['Education_mapped'] = df['Education'].map(education_mapping)

print(df)

2. 名義特徴量の変換

名義特徴量は、順序を持たないカテゴリデータです。例えば、色(赤、青、緑)などです。これをOne-Hot Encodingで変換します。

from sklearn.preprocessing import OneHotEncoder

# データフレームの作成
data = {'Color': ['Red', 'Blue', 'Green']}
df = pd.DataFrame(data)

# One-Hot Encoding
encoder = OneHotEncoder(sparse=False)
encoded_colors = encoder.fit_transform(df[['Color']])

# 結果をデータフレームに変換
encoded_df = pd.DataFrame(encoded_colors, columns=encoder.get_feature_names_out(['Color']))

print(encoded_df)

3. 2値化

連続値を2値に変換します。例えば、ある閾値を基準に0と1に変換します。

from sklearn.preprocessing import Binarizer

# データフレームの作成
data = {'Age': [15, 25, 35, 45]}
df = pd.DataFrame(data)

# 2値化
binarizer = Binarizer(threshold=30)
df['Age_binarized'] = binarizer.fit_transform(df[['Age']])

print(df)

4. 丸め

数値データを指定した小数点以下の桁数に丸めます。

import numpy as np

# データフレームの作成
data = {'Value': [1.123, 2.345, 3.678, 4.910]}
df = pd.DataFrame(data)

# 丸め
df['Value_rounded'] = df['Value'].round(2)

print(df)

※このシリーズは下記の書籍を参考に書いています。

コメント

タイトルとURLをコピーしました