文章轉自微信公眾號:機器學習與人工智慧AI
文章原始連結:https://mp.weixin.qq.com/s/qLPG2YJHNgA0oDn19Ex6NA大家好!咱們今兒來聊聊特徵和標籤處理。
大家都知道,在整體的演算法專案中,資料處理占到龐大的工程量。
特徵工程的重要性不言而喻的,從原始資料中提取關鍵資訊、降維去噪,提高模型效能。
良好的特徵選擇和建構有助於提高模型泛化能力和解釋性。標籤處理確保目標變數格式正確,影響模型學習的準確性。
下面,從特徵工程、特徵、標籤處理的細節及重要性做一個詳細的介紹:
特徵工程
特徵工程是機器學習中非常關鍵的一步,它包括對原始資料進行轉換、組合、選擇等操作,以提取對模型建模更有意義的特徵。
好的特徵工程能夠幫助模型更好地捕捉資料的模式,並提高模型效能。
特徵提取: 從原始資料中抽取出有用的信息。例如,從文字中提取關鍵字,從圖像中提取紋理特徵等。
特徵轉換: 對原始特徵進行變換,使其更適合模型。例如,對數轉換、標準化、歸一化等。
特徵選擇: 選擇對模型建模最有影響的特徵,去除冗餘資訊。可以使用統計方法、模型權重、遞歸特徵消除等來選擇。
特徵
特徵是輸入模型的變數或屬性,用來描述樣本的特性。在機器學習中,特徵是模型學習的關鍵。特徵的選擇和建構需要根據特定問題和資料集來進行,以確保模型具有足夠的表達能力。
標籤處理
標籤是我們要預測的目標變數。在標籤處理中,通常需要進行編碼或轉換,使其適合模型的訓練。對於分類問題,通常使用獨熱編碼(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=(8, 6))
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()
在整個的案例中,特徵工程包括了特徵選擇和特徵轉換,標籤處理使用了標籤編碼。
透過拆分資料集、建立模型和模型評估,最終畫出了混淆矩陣圖。