我正在做一個基于機器學習(Python)的專案,并在我的資料上嘗試所有模型。真的很迷茫
分類和回歸
- 如果我必須對整個資料集應用歸一化、Z 分數或標準差,然后設定特征(X)和輸出(y)的值。
def normalize(df):
from sklearn.preprocessing import MaxAbsScaler
scaler = MaxAbsScaler()
scaler.fit(df)
scaled = scaler.transform(df)
scaled_df = pd.DataFrame(scaled, columns=df.columns)
return scaled_df
data=normalize(data)
X=data.drop['col']
y=data['col']
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
- 或者只需要申請特征(X)
X=data.drop['col']
y=data['col']
def normalize(df):
from sklearn.preprocessing import MaxAbsScaler
scaler = MaxAbsScaler()
scaler.fit(df)
scaled = scaler.transform(df)
scaled_df = pd.DataFrame(scaled, columns=df.columns)
return scaled_df
X=normalize(X)
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
uj5u.com熱心網友回復:
TLDR;對輸入資料進行標準化,但不要對輸出進行標準化。
從邏輯上講,歸一化既取決于演算法,也取決于特征。
有些演算法不需要任何規范化(如決策樹)。
對資料集應用歸一化:如果資料集中有多個特征,則應該對每個特征執行歸一化,但對整個資料集中存在的所有示例進行歸一化。
例如,假設您有兩個特征 X 和 Y。特征 X 始終是 [0,10] 范圍內的小數。另一方面,您的 Y 在 [100K,1M] 范圍內。如果您對 X 和 Y 進行一次歸一化,對 X 和 Y 組合進行一次歸一化,您會看到特征 X 的值如何變得微不足道。
對于輸出(標簽):
通常,不需要對任何回歸或分類任務的輸出或標簽進行歸一化。但是,請確保在訓練時間和推理時間對訓練資料進行歸一化。
如果任務是分類,常見的方法就是對類別編號進行編碼(如果您有狗和貓類別。您將 0 分配給一個,將 1 分配給另一個)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/479917.html
標籤:Python 机器学习 jupyter-笔记本 数据科学 正常化