机器学习/ Python Noob在这里。有人可以向我解释下面的代码吗?我不明白以下行是如何运作的。
# This line in the code below, what does it do?
label_encoder.append(preprocessing.LabelEncoder())
label_encoder = []
X_encoded = np.empty(X.shape)
for i,item in enumerate(X[0]):
if item.isdigit():
X_encoded[:, i] = X[:, i]
else:
label_encoder.append(preprocessing.LabelEncoder())
X_encoded[:, i] = label_encoder[-1].fit_transform(X[:, i])
谢谢!
答案 0 :(得分:3)
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
方法对功能进行编码。