我有以下数组(实际上是具有类似数组数据结构的Panda数据框),其类似于以下内容:
[
['M', 4, 15]
['M', 3, 7]
['F', 5, 9]
['I', 4, 15]
]
我希望对此数据进行预处理,以便可以在线性回归中使用它。我相信这样做的方法是使用一种热编码器:http : //scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html#sklearn.preprocessing.OneHotEncoder。
但是,仅当类别为整数时才有效。
我相信您可以使用以下代码来做到这一点DictVectorizer
:http : //scikit-learn.org/stable/modules/genic/sklearn.feature_extraction.DictVectorizer.html#sklearn.feature_extraction.DictVectorizer
但是,这似乎仅适用于字典,而不适用于数组。
使用类似于以下代码的代码将类别映射为整数:
def tokenize(data, col_of_category):
str_to_int, int_to_str = {}, {}
for row in data:
cat = row[col_of_category]
if cat in str_to_int.keys(): token = str_to_int[cat]
else:
token = len(str_to_int.keys())
str_to_int[cat] = token
int_to_str[token] = cat
row[col_of_category] = token # assuming your rows are mutable
return str_to_int, int_to_str
然后,您可以使用返回的字典来将来管理映射和取消映射。然后,您可以使用OneHotEncoder
。您的算法不在乎是否涉及字符串。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句