2024年6月2日 星期日

[文章轉貼] 通透! !特徵和標籤處理全總結! !

文章轉自微信公眾號:機器學習與人工智慧AI 

文章原始連結:https://mp.weixin.qq.com/s/qLPG2YJHNgA0oDn19Ex6NA

大家好!咱們今兒來聊聊特徵和標籤處理

大家都知道,在整體的演算法專案中,資料處理占到龐大的工程量。

特徵工程的重要性不言而喻的,從原始資料中提取關鍵資訊、降維去噪,提高模型效能。

良好的特徵選擇和建構有助於提高模型泛化能力和解釋性。標籤處理確保目標變數格式正確,影響模型學習的準確性。

下面,從特徵工程、特徵、標籤處理的細節及重要性做一個詳細的介紹:

特徵工程

特徵工程是機器學習中非常關鍵的一步,它包括對原始資料進行轉換、組合、選擇等操作,以提取對模型建模更有意義的特徵。

好的特徵工程能夠幫助模型更好地捕捉資料的模式,並提高模型效能。

  1. 特徵提取: 從原始資料中抽取出有用的信息。例如,從文字中提取關鍵字,從圖像中提取紋理特徵等。

  2. 特徵轉換: 對原始特徵進行變換,使其更適合模型。例如,對數轉換、標準化、歸一化等。

  3. 特徵選擇: 選擇對模型建模最有影響的特徵,去除冗餘資訊。可以使用統計方法、模型權重、遞歸特徵消除等來選擇。

特徵

特徵是輸入模型的變數或屬性,用來描述樣本的特性。在機器學習中,特徵是模型學習的關鍵。特徵的選擇和建構需要根據特定問題和資料集來進行,以確保模型具有足夠的表達能力。

標籤處理

標籤是我們要預測的目標變數。在標籤處理中,通常需要進行編碼或轉換,使其適合模型的訓練。對於分類問題,通常使用獨熱編碼(One-Hot Encoding)等方式處理標籤。

一個完整案例

使用開源資料集Iris(鳶尾花)進行分類,預測花的種類(setosa、versicolor、virginica)。

導入庫:

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler, LabelEncoder
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, confusion_matrix
import seaborn as sns
import matplotlib.pyplot as plt

載入資料集:

from sklearn.datasets import load_iris
iris = load_iris()
X = pd.DataFrame(iris.data, columns=iris.feature_names)
y = pd.DataFrame(iris.target, columns=['species'])

特徵處理:

# 特征选择
selected_features = ['sepal length (cm)''sepal width (cm)']
X = X[selected_features]

# 特征转换
scaler = StandardScaler()
X = scaler.fit_transform(X)

標籤處理:

label_encoder = LabelEncoder()
y = label_encoder.fit_transform(y)

拆分資料集:

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

建立模型:

model = RandomForestClassifier(random_state=42)
model.fit(X_train, y_train)

模型評估:

y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
confusion_mat = confusion_matrix(y_test, y_pred)

畫圖:

plt.figure(figsize=(86))
sns.heatmap(confusion_mat, annot=True, fmt='d', cmap='Blues', xticklabels=iris.target_names, yticklabels=iris.target_names)
plt.xlabel('Predicted')
plt.ylabel('True')
plt.title('Confusion Matrix')
plt.show()

在整個的案例中,特徵工程包括了特徵選擇和特徵轉換,標籤處理使用了標籤編碼。

透過拆分資料集、建立模型和模型評估,最終畫出了混淆矩陣圖。