【Python】データマイニング分析とクリーニング - 離散化手法のまとめ


序文

離散化はデータ クリーニングの非常に重要な部分であり、その後の標準化、外れ値の処理、モデルなどはすべて、一部のテキスト データを離散化する必要があります。ここでは、離散化を数値データの離散化と文字データの離散化の 2 つのカテゴリに分けます。


1. 文字データの離散化

文字を離散化する目的は、文字を含むデータは多くのデータ クリーニング操作に使用できないため、その後のデータ クリーニングを正常に実行できるようにすることです。ここでは、「レポート タイプ」、「会計基準」、および「通貨コード」のデータを扱います。を例として説明します。

1.1 一人で熱い

処理にはワンホットエンコーディングを使用し、多次元化した文字に対してワンホット処理を施します。

import pandas as pd
emb_dummies_df = pd.get_dummies(data['会计准则'],prefix=data[['会计准则']].columns[0])
#prefix表示列名在值的前面要添加的字符串
emb_dummies_df

ここに画像の説明を挿入

ここに画像の説明を挿入

ワンホット エンコーディングを使用して列の値を多次元のデジタル表現に変換できますが、次元が増加し、計算量が増加します。K-means を使用して、最初にデータをクラスタリングしてからエンコードすることもできます。

1.2 離散コーディングの因数分解

ここでは、単一の列を多次元データに変更し、そのような数値が存在するかどうかを 1 と 0 で示します。ファクタリングは、クラスの数に応じて、この列の数値を 1、2...n に変換することです。コードと例を以下に示します。

data['会计准则'] = pd.factorize(data['会计准则'])[0]
data[['会计准则']]

ここに画像の説明を挿入
ここに画像の説明を挿入

段階的要約: ここではすべての単一列の離散化処理が示されています。これらに加えて、テキスト分析によく使用される TF-IDF などのエンコーディングもあります。後で時間があれば、引き続き Wave を更新する可能性があります。

2. 数値データの離散化

2.1 ビニング(データビニング)

データを 1 ~ 30、30 ~ 100、100 ~ 1000 などの地域ごとに分割し、異なる地域クラスを取得し、それに応じて分析することです。

 #与区间的数学符号一致, 小括号表示开放,中括号表示封闭, 可以通过right参数改变
print(pd.cut(ages, bins, right=False))#qcut函数是根据均等距离划分

#单个列进行划分
train_data['Fare_bin'] = pd.qcut(train_data['Fare'],5) #5是指分成五份

#自定义范围划分
bins = [0,59,70,80,100]
df['Categories'] = pd.cut(df['score'],bins) #bins的各值作为区间的边

# 可以通过labels自定义箱名或者区间名 用于多个列进行划分
group_names = ['Youth', 'YonngAdult', 'MiddleAged', 'Senior']
data = pd.cut(ages, bins, labels=group_names)
print(data)
print(pd.value_counts(data))

# 如果将箱子的边替代为箱子的个数,pandas将根据数据中的最小值和最大值计算出等长的箱子
data2 = np.random.rand(20)
print(pd.cut(data2, 4, precision=2))   # precision=2 将十进制精度限制在2位

# qcut是另一个分箱相关的函数, 基于样本分位数进行分箱。取决于数据的分布,使用cut不会使每个箱子具有相同数据数量的数据点,而qcut,使用
# 样本的分位数,可以获得等长的箱
data3 = np.random.randn(1000)   # 正太分布
cats = pd.qcut(data3, 4)
print(pd.value_counts(cats))

データ ビニングは、連続変数を離散化する方法であり、連続データ範囲をいくつかの順序付けされた重複しない間隔に分割し、データを対応する間隔にマッピングします。

データビニングの重要性は次のとおりです。

複雑さの軽減: 一部の機械学習アルゴリズムでは、連続変数の処理により計算の複雑さが増加する可能性があります。ビニングにより連続変数を離散変数に変換できるため、計算の複雑さが軽減され、欠損値や外れ値の処理が容易になります。

予測精度の向上: 一部のシナリオでは、離散化データにより変数間の関係がより明確になり、モデルの予測精度が向上します。たとえば、信用スコアリング モデルでは、収入を階層に分割することで、収入とデフォルト率の間の非線形関係をより適切に把握できます。

解釈と視覚化の容易さ: 離散化されたデータは、解釈と視覚化が容易です。たとえば、マーケティング分析では、年齢をいくつかのグループに分けることで、さまざまな年齢グループの人口分布と消費習慣をより明確に示すことができます。

要約する

連続変数の離散化: 連続変数の離散化では、
連続データ範囲をいくつかの順序付けされた重複しない間隔に分割し、データを対応する間隔にマップします。離散化されたデータにより、変数間の関係がより明確になり、モデルの予測精度が向上します。さらに、連続変数の離散化により計算の複雑さが軽減され、欠損値や外れ値の処理が容易になり、解釈と視覚化が容易になります。

文字の離散化:
文字の離散化は、文字データを離散データに変換します。離散化されたデータは、分類、クラスタリング、相関ルール マイニングなどのアルゴリズムにさらに適切に適用できます。たとえば、テキスト分類では、テキストをバッグオブワードモデルに変換した後、離散化によって各単語を特徴量に変換し、テキストをベクトルに変換できます。さらに、文字の離散化により、データ重複排除やデータ圧縮などのデータ処理も容易になります。

おすすめ

転載: blog.csdn.net/weixin_47058355/article/details/128894091