Python之sklearn:LabelEncoder函数简介(编码与编码还原)、使用方法、具体案例之详细攻略


愉快踢楼房
愉快踢楼房 2022-09-19 12:03:03 67769
分类专栏: 资讯

Python之sklearn:LabelEncoder函数简介(编码与编码还原)、使用方法、具体案例之详细攻略

目录

LabelEncoder函数的简介(编码与编码还原)

Methods

LabelEncoder函数的使用方法

LabelEncoder函数的具体案例

1、基础案例

2、在数据缺失和test数据内存在新值(train数据未出现过)环境下的数据LabelEncoder化


LabelEncoder函数的简介(编码与编码还原)

class LabelEncoder Found at: sklearn.preprocessing._labelclass LabelEncoder(TransformerMixin, BaseEstimator):
    """Encode target labels with value between 0 and n_classes-1.
    This transformer should be used to encode target values, *i.e.* `y`, and not the input `X`.
    Read more in the :ref:`User Guide <preprocessing_targets>`.

""对目标标签进行编码,值在0到n_class -1之间

这个转换器应该用于编码目标值,*即' y ',而不是输入' X '。

更多内容见:ref: ' User Guide '。

    .. versionadded:: 0.12
    
    Attributes
    ----------
    classes_ : array of shape (n_class,)
    Holds the label for each class.
    
    Examples
    --------
    `LabelEncoder` can be used to normalize labels.
    
    >>> from sklearn import preprocessing
    >>> le = preprocessing.LabelEncoder()
    >>> le.fit([1, 2, 2, 6])
    LabelEncoder()
    >>> le.classes_
    array([1, 2, 6])
    >>> le.transform([1, 1, 2, 6])
    array([0, 0, 1, 2]...)
    >>> le.inverse_transform([0, 0, 1, 2])
    array([1, 1, 2, 6])
    
    It can also be used to transform non-numerical labels (as long as they are hashable and comparable) to numerical labels.
    
    >>> le = preprocessing.LabelEncoder()
    >>> le.fit(["paris", "paris", "tokyo", "amsterdam"])
    LabelEncoder()
    >>> list(le.classes_)
    ['amsterdam', 'paris', 'tokyo']
    >>> le.transform(["tokyo", "tokyo", "paris"])
    array([2, 2, 1]...)
    >>> list(le.inverse_transform([2, 2, 1]))
    ['tokyo', 'tokyo', 'paris']
    
    See also
    --------
    sklearn.preprocessing.OrdinalEncoder : Encode categorical features using an ordinal encoding scheme.
    sklearn.preprocessing.OneHotEncoder : Encode categorical features as a one-hot numeric array.

. .versionadded:: 0.12

属性
----------
classes_:形状数组(n_class,)
保存每个类的标签。

例子
--------
“LabelEncoder”可用于规范化标签。

    >>> from sklearn import preprocessing
    >>> le = preprocessing.LabelEncoder()
    >>> le.fit([1, 2, 2, 6])
    LabelEncoder()
    >>> le.classes_
    array([1, 2, 6])
    >>> le.transform([1, 1, 2, 6])
    array([0, 0, 1, 2]...)
    >>> le.inverse_transform([0, 0, 1, 2])
    array([1, 1, 2, 6])


它还可以用于将非数字标签(只要它们是可hashable和可比的)转换为数字标签

    >>> le = preprocessing.LabelEncoder()
    >>> le.fit(["paris", "paris", "tokyo", "amsterdam"])
    LabelEncoder()
    >>> list(le.classes_)
    ['amsterdam', 'paris', 'tokyo']
    >>> le.transform(["tokyo", "tokyo", "paris"])
    array([2, 2, 1]...)
    >>> list(le.inverse_transform([2, 2, 1]))
    ['tokyo', 'tokyo', 'paris']


另请参阅
--------
sklearn.preprocessing.OrdinalEncoder :序号编码器:使用序号编码方案编码分类特征
sklearn.preprocessing.OneHotEncoder :  将分类特性编码为一个热的数字数组

    """
    def fit(self, y):
        """Fit label encoder

        Parameters
        ----------
        y : array-like of shape (n_samples,)
            Target values.

        Returns
        -------
        self : returns an instance of self.
        """
        y = column_or_1d(y, warn=True)
        self.classes_ = _encode(y)
        return self
    
    def fit_transform(self, y):
        """Fit label encoder and return encoded labels

        Parameters
        ----------
        y : array-like of shape [n_samples]
            Target values.

        Returns
        -------
        y : array-like of shape [n_samples]
        """
        y = column_or_1d(y, warn=True)
        self.classes_, y = _encode(y, encode=True)
        return y
    
    def transform(self, y):
        """Transform labels to normalized encoding.

        Parameters
        ----------
        y : array-like of shape [n_samples]
            Target values.

        Returns
        -------
        y : array-like of shape [n_samples]
        """
        check_is_fitted(self)
        y = column_or_1d(y, warn=True)
        transform of empty array is empty array
        if _num_samples(y) == 0:
            return np.array([])
        _, y = _encode(y, uniques=self.classes_, encode=True)
        return y
    
    def inverse_transform(self, y):
        """Transform labels back to original encoding.

        Parameters
        ----------
        y : numpy array of shape [n_samples]
            Target values.

        Returns
        -------
        y : numpy array of shape [n_samples]
        """
        check_is_fitted(self)
        y = column_or_1d(y, warn=True)
        inverse transform of empty array is empty array
        if _num_samples(y) == 0:
            return np.array([])
        diff = np.setdiff1d(y, np.arange(len(self.classes_)))
        if len(diff):
            raise ValueError(
                "y contains previously unseen labels: %s" % str(diff))
        y = np.asarray(y)
        return self.classes_[y]
    
    def _more_tags(self):
        return {'X_types':['1dlabels']}

 

Methods

fit(y)

Fit label encoder

fit_transform(y)

Fit label encoder and return encoded labels

get_params([deep])

Get parameters for this estimator.

inverse_transform(y)

Transform labels back to original encoding.

set_params(**params)

Set the parameters of this estimator.

transform(y)

Transform labels to normalized encoding.

LabelEncoder函数的使用方法

  1. import pandas as pd
  2. from sklearn.preprocessing import LabelEncoder
  3. from DataScienceNYY.DataAnalysis import dataframe_fillAnyNull,Dataframe2LabelEncoder
  4. 构造数据
  5. train_data_dict={'Name':['张三','李四','王五','赵六','张七','李八','王十','un'],
  6. 'Age':[22,23,24,25,22,22,22,None],
  7. 'District':['北京','上海','广东','深圳','山东','河南','浙江',' '],
  8. 'Job':['CEO','CTO','CFO','COO','CEO','CTO','CEO','']}
  9. test_data_dict={'Name':['张三','李四','王十一',None],
  10. 'Age':[22,23,22,'un'],
  11. 'District':['北京','上海','广东',''],
  12. 'Job':['CEO','CTO','UFO',' ']}
  13. train_data_df = pd.DataFrame(train_data_dict)
  14. test_data_df = pd.DataFrame(test_data_dict)
  15. print(train_data_df,'\n',test_data_df)
  16. 缺失数据填充
  17. for col in train_data_df.columns:
  18. train_data_df[col]=dataframe_fillAnyNull(train_data_df,col)
  19. test_data_df[col]=dataframe_fillAnyNull(test_data_df,col)
  20. print(train_data_df,'\n',test_data_df)
  21. 数据LabelEncoder化
  22. train_data,test_data=Dataframe2LabelEncoder(train_data_df,test_data_df)
  23. print(train_data,'\n',test_data)

LabelEncoder函数的具体案例

1、基础案例

  1. LabelEncoder can be used to normalize labels.
  2. >>>
  3. -meta">>>> from sklearn import preprocessing
  4. -meta">>>> le = preprocessing.LabelEncoder()
  5. -meta">>>> le.fit([1, 2, 2, 6])
  6. LabelEncoder()
  7. -meta">>>> le.classes_
  8. array([1, 2, 6])
  9. -meta">>>> le.transform([1, 1, 2, 6])
  10. array([0, 0, 1, 2]...)
  11. -meta">>>> le.inverse_transform([0, 0, 1, 2])
  12. array([1, 1, 2, 6])
  13. It can also be used to transform non-numerical labels (as long as they are hashable and comparable) to numerical labels.
  14. >>>
  15. -meta">>>> le = preprocessing.LabelEncoder()
  16. -meta">>>> le.fit(["paris", "paris", "tokyo", "amsterdam"])
  17. LabelEncoder()
  18. -meta">>>> list(le.classes_)
  19. ['amsterdam', 'paris', 'tokyo']
  20. -meta">>>> le.transform(["tokyo", "tokyo", "paris"])
  21. array([2, 2, 1]...)
  22. -meta">>>> list(le.inverse_transform([2, 2, 1]))
  23. ['tokyo', 'tokyo', 'paris']

2、在数据缺失和test数据内存在新值(train数据未出现过)环境下的数据LabelEncoder化

参考文章Python之sklearn:LabelEncoder函数的使用方法之使用LabelEncoder之前的必要操作

  1. import numpy as np
  2. from sklearn.preprocessing import LabelEncoder
  3. 训练train数据
  4. LE= LabelEncoder()
  5. LE.fit(train_df[col])
  6. test数据中的新值添加到LE.classes_
  7. test_df[col] =test_df[col].map(lambda s:'Unknown' if s not in LE.classes_ else s)
  8. LE.classes_ = np.append(LE.classes_, 'Unknown')
  9. 分别转化train、test数据
  10. train_df[col] = LE.transform(train_df[col])
  11. test_df[col] = LE.transform(test_df[col])
文章知识点与官方知识档案匹配,可进一步学习相关知识
Python入门技能树预备知识Python简介123748 人正在系统学习中

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=2235
赞同 0
评论 0 条
愉快踢楼房L0
粉丝 0 发表 7 + 关注 私信
上周热门
Kingbase用户权限管理  2020
信刻全自动光盘摆渡系统  1749
信刻国产化智能光盘柜管理系统  1419
银河麒麟添加网络打印机时,出现“client-error-not-possible”错误提示  1013
银河麒麟打印带有图像的文档时出错  923
银河麒麟添加打印机时,出现“server-error-internal-error”  714
麒麟系统也能完整体验微信啦!  657
统信桌面专业版【如何查询系统安装时间】  632
统信操作系统各版本介绍  623
统信桌面专业版【全盘安装UOS系统】介绍  597
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
我有15积分有什么用? 13
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

添加我为好友,拉您入交流群!

请使用微信扫一扫!