利用sklearn的LabelEncoder对标签进行数字化编码

 

from sklearn.preprocessing import LabelEncoder

def gen_label_encoder():
    labels = ['BB', 'CC']  
    le = LabelEncoder()
    le.fit(labels)
    print 'le.classes_', le.classes_
    for label in le.classes_:
        print label, le.transform([label])[0]
    joblib.dump(le, 'data/label_encoder.h5')

 

LabelEncoder的说明:

 1 class LabelEncoder(BaseEstimator, TransformerMixin):
 2     """Encode labels with value between 0 and n_classes-1.
 3 
 4     Read more in the :ref:`User Guide <preprocessing_targets>`.
 5 
 6     Attributes
 7     ----------
 8     classes_ : array of shape (n_class,)
 9         Holds the label for each class.
10 
11     Examples
12     --------
13     `LabelEncoder` can be used to normalize labels.
14 
15     >>> from sklearn import preprocessing
16     >>> le = preprocessing.LabelEncoder()
17     >>> le.fit([1, 2, 2, 6])
18     LabelEncoder()
19     >>> le.classes_
20     array([1, 2, 6])
21     >>> le.transform([1, 1, 2, 6]) #doctest: +ELLIPSIS
22     array([0, 0, 1, 2]...)
23     >>> le.inverse_transform([0, 0, 1, 2])
24     array([1, 1, 2, 6])
25 
26     It can also be used to transform non-numerical labels (as long as they are
27     hashable and comparable) to numerical labels.
28 
29     >>> le = preprocessing.LabelEncoder()
30     >>> le.fit(["paris", "paris", "tokyo", "amsterdam"])
31     LabelEncoder()
32     >>> list(le.classes_)
33     ['amsterdam', 'paris', 'tokyo']
34     >>> le.transform(["tokyo", "tokyo", "paris"]) #doctest: +ELLIPSIS
35     array([2, 2, 1]...)
36     >>> list(le.inverse_transform([2, 2, 1]))
37     ['tokyo', 'tokyo', 'paris']
38 
39     See also
40     --------
41     sklearn.preprocessing.OneHotEncoder : encode categorical integer features
42         using a one-hot aka one-of-K scheme.
43     """

 

转载于:https://www.cnblogs.com/bymo/p/7404541.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用`sklearn.preprocessing`中的`LabelEncoder`来对分类数据进行编码。以下是一个例子: ```python from sklearn.preprocessing import LabelEncoder # 定义一个示例数据 data = ['cat', 'dog', 'bird', 'cat', 'bird'] # 实例化一个LabelEncoder对象 encoder = LabelEncoder() # 对数据进行编码 encoded_data = encoder.fit_transform(data) # 打印编码后的结果 print(encoded_data) ``` 输出结果为: ``` [0 1 2 0 2] ``` 可以看到,`cat`被编码为了`0`,`dog`被编码为了`1`,`bird`被编码为了`2`。 如果想要将编码后的结果映射回原始数据,可以使用`inverse_transform`方法,如下所示: ```python # 将编码后的结果映射回原始数据 decoded_data = encoder.inverse_transform(encoded_data) # 打印映射回原始数据后的结果 print(decoded_data) ``` 输出结果为: ``` ['cat' 'dog' 'bird' 'cat' 'bird'] ``` 可以看到,编码后的结果已经成功地映射回了原始数据。 ### 回答2: 在Python中,我们可以使用不同的方法对分类数据进行编码,其中最常用的方法是使用LabelEncoder和OneHotEncoder类。以下是对这两种方法进行说明的代码示例: 1. 使用LabelEncoder进行编码: ```python from sklearn.preprocessing import LabelEncoder import pandas as pd # 创建一个包含分类数据的DataFrame data = pd.DataFrame({'category': ['A', 'B', 'C', 'A', 'B', 'C']}) # 实例化LabelEncoder对象 encoder = LabelEncoder() # 对分类数据进行编码 data['category_encoded'] = encoder.fit_transform(data['category']) # 输出编码结果 print(data) ``` 输出: ``` category category_encoded 0 A 0 1 B 1 2 C 2 3 A 0 4 B 1 5 C 2 ``` 2. 使用OneHotEncoder进行编码: ```python from sklearn.preprocessing import OneHotEncoder import pandas as pd # 创建一个包含分类数据的DataFrame data = pd.DataFrame({'category': ['A', 'B', 'C', 'A', 'B', 'C']}) # 实例化OneHotEncoder对象 encoder = OneHotEncoder(sparse=False) # 对分类数据进行编码 encoded_data = encoder.fit_transform(data[['category']]) # 创建一个包含编码结果的DataFrame encoded_data = pd.DataFrame(encoded_data, columns=encoder.get_feature_names(['category'])) # 合并编码结果与原始数据 data_encoded = pd.concat([data, encoded_data], axis=1) # 输出编码结果 print(data_encoded) ``` 输出: ``` category category_A category_B category_C 0 A 1.0 0.0 0.0 1 B 0.0 1.0 0.0 2 C 0.0 0.0 1.0 3 A 1.0 0.0 0.0 4 B 0.0 1.0 0.0 5 C 0.0 0.0 1.0 ``` 以上就是使用Python对分类数据进行编码的方法。LabelEncoder适用于对单一分类特征进行编码,而OneHotEncoder适用于对多个分类特征进行编码。 ### 回答3: 在Python中,我们可以使用不同的方法来对分类数据进行编码。以下是其中几种常见的方法: 1. 有序编码(Ordinal Encoding):适用于具有明显顺序的分类数据。可以通过将每个类别映射到一个整数值来实现。例如,如果有一个“可能性”特征,可能值为“高”,“中”,“低”,我们可以将它们依次编码为1,2,3。 2. 独热编码(One-Hot Encoding):适用于没有明显顺序的分类数据,或者对于机器学习模型来说,类别之间没有大小关系的情况。可以通过创建二进制变量来表示每个类别的存在与否。例如,如果有一个“颜色”特征,可能的取值为“红”,“绿”,“蓝”,我们可以创建三个新的二进制变量:“红”,“绿”,“蓝”,并根据原始数据中的取值进行填充和编码。 3. 二进制编码(Binary Encoding):对具有大量分类级别的特征进行编码时,可以使用二进制编码。这种方法通过将每个类别映射到一个二进制数字来实现。例如,如果有一个特征具有8个可能的类别,我们可以使用三个二进制位进行编码。 4. 词袋(Bag of Words)编码:适用于文本数据的分类变量编码方法。该方法将每个类别视为一个独立的特征,使用计数向量或者TF-IDF向量来表示文本数据。 在Python中,我们可以使用pandas和sklearn库来进行分类数据的编码。pandas提供了许多内置的方法来进行常见的编码操作,而sklearn则提供了更多高级的编码和预处理技术。使用这些库可以方便地对数据集进行编码,并且可以与其他机器学习算法无缝衔接。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值