label_encoder
是一個列表,它在python中是一個有序集合,您可以使用它來存儲任何類型的對象。它被錯誤地命名,它應該是label_encoders
,plurl。
我們首先創建一個空的:
label_encoders = []
然後,當我們遇到需要編碼列
if item.isdigit():
# Don't need to endcode.
else:
# Do need to encode.
我們創建了一個新的preprocessing.LabelEncoder()
對象,並將其保存以備後用
label_encoders.append(preprocessing.LabelEncoder())
最後,我們使用最近創建的LabelEncoder
對象實際編碼列
X_encoded[:, i] = label_encoders[-1].fit_transform(X[:, i])
我們需要存儲新LabelEncoder
對象地方,因爲我們幾乎肯定會遇到在未來的測試集或新的生產數據,並且將需要編碼數據就像我們編碼我們的訓練數據一樣。
我可能會寫這樣的代碼,這是稍微更清晰
label_encoders = []
X_encoded = np.empty(X.shape)
for i, item in enumerate(X[0]):
if item.isdigit():
X_encoded[:, i] = X[:, i]
else:
label_encoder = preprocessing.LabelEncoder()
X_encoded[:, i] = label_encoder.fit_transform(X[:, i])
label_encoders.append(label_encoder)
謝謝!我沒有意識到preprocessing.LabelEncoder()返回一個列表。
它不!列表來自行
label_encoders = []
的preprocessing.LabelEncoder()
調用返回一個LabelEncoder
類型的對象。這實現了sklearn transformation interface,它允許您使用fit_transform
和transform
方法對您的要素進行編碼。
它將'LabelEncoder'的一個實例添加到列表中;該實例適用於後續行。 (投票遷移。) –