Sklearn de Python: Introducción a la función LabelEncoder (codificación y restauración de codificación), método de uso, guía detallada para casos específicos

Sklearn de Python: Introducción a la función LabelEncoder (codificación y restauración de codificación), método de uso, guía detallada para casos específicos

 

 

Tabla de contenido

Introducción a la función LabelEncoder (codificación y restauración de codificación)

Métodos

Cómo utilizar la función LabelEncoder

Caso específico de la función LabelEncoder

1. Caso básico

2. LabelEncoder de datos en el entorno de datos faltantes y nuevos valores en datos de prueba (los datos del tren no han aparecido)


 

Introducción a la función LabelEncoder (codificación y restauración de codificación)

class LabelEncoder Encontrado en: sklearn.preprocessing._labelclass LabelEncoder (TransformerMixin, BaseEstimator):
    "" "Codificar etiquetas de destino con valor entre 0 y n_classes-1.
    Este transformador debe usarse para codificar valores de destino, * es decir, *` y`, y no la entrada `x`.
    Lee más en la: ref:` Guía del usuario <> `preprocessing_targets.

 

"" Codifique la etiqueta de destino con un valor entre 0 y n_class -1 .

Este convertidor debe usarse para codificar el valor objetivo, * es decir, 'y', en lugar de ingresar 'X'.

Para obtener más información, consulte: ref: 'Guía del usuario'.

    .. versionadded :: 0.12
    
    Atributos
    ----------
    classes_ : matriz de forma (n_class,)
    Mantiene la etiqueta para cada clase.
    
    Ejemplos
    --------
    `LabelEncoder` se puede utilizar para normalizar etiquetas.
    
    >>> de 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])
    matriz ([0, 0, 1, 2] ...)
    >>> le.inverse_transform ([0, 0, 1, 2 ])
    matriz ([1, 1, 2, 6])
    
    También se puede utilizar para transformar etiquetas no numéricas (siempre que sean hash y comparables) en etiquetas numéricas.
    
    >>> le = preprocessing.LabelEncoder ()
    >>> le.fit (["parís", "parís", "tokio", "amsterdam"])
    LabelEncoder ()
    >>> list (le.classes_)
    ['amsterdam ',' paris ',' tokyo ']
    >>> le.transform (["tokyo", "tokyo", "paris"])
    array ([2, 2, 1] ...)
    >>> lista (le .inverse_transform ([2, 2, 1]))
    ['tokyo', 'tokyo', 'paris']
    
   Consulte también
    --------
    sklearn.preprocessing.OrdinalEncoder:
    sklearn.preprocessing.OneHotEncoder: codifica características categóricas como una matriz numérica de un solo uso.

.versionadded :: 0.12

atributo
----------
classes_: matriz de formas (n_class,) para
guardar la etiqueta de cada clase.

Ejemplo
-------
"LabelEncoder" se puede utilizar para normalizar etiquetas.

 

    >>> de 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])
    matriz ([0, 0, 1, 2] ...)
    >>> le.inverse_transform ([0, 0, 1, 2 ])
    matriz ([1, 1, 2, 6])


También se puede utilizar para convertir etiquetas no digitales (siempre que sean hash y comparables) en etiquetas digitales .

 

    >>> 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函数的使用方法

import pandas as pd
from sklearn.preprocessing import LabelEncoder
from DataScienceNYY.DataAnalysis import dataframe_fillAnyNull,Dataframe2LabelEncoder


#构造数据
train_data_dict={'Name':['张三','李四','王五','赵六','张七','李八','王十','un'],
                'Age':[22,23,24,25,22,22,22,None],
                'District':['北京','上海','广东','深圳','山东','河南','浙江',' '],
                'Job':['CEO','CTO','CFO','COO','CEO','CTO','CEO','']}
test_data_dict={'Name':['张三','李四','王十一',None],
                'Age':[22,23,22,'un'],
                'District':['北京','上海','广东',''],
                'Job':['CEO','CTO','UFO',' ']}
train_data_df = pd.DataFrame(train_data_dict)
test_data_df = pd.DataFrame(test_data_dict)
print(train_data_df,'\n',test_data_df)


#缺失数据填充
for col in train_data_df.columns:
        train_data_df[col]=dataframe_fillAnyNull(train_data_df,col)
        test_data_df[col]=dataframe_fillAnyNull(test_data_df,col)
print(train_data_df,'\n',test_data_df)


#数据LabelEncoder化
train_data,test_data=Dataframe2LabelEncoder(train_data_df,test_data_df)
print(train_data,'\n',test_data)

 

 

 

 

LabelEncoder函数的具体案例

1、基础案例

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']

 

 

 

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

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

import numpy as np
from sklearn.preprocessing import LabelEncoder

#训练train数据
LE= LabelEncoder()
LE.fit(train_df[col])

#test数据中的新值添加到LE.classes_
test_df[col] =test_df[col].map(lambda s:'Unknown' if s not in LE.classes_ else s) 
LE.classes_ = np.append(LE.classes_, 'Unknown') 
 
#分别转化train、test数据
train_df[col] = LE.transform(train_df[col]) 
test_df[col] = LE.transform(test_df[col]) 

 

 

 

 

 

 

 

 

 

 

 

 

 

Supongo que te gusta

Origin blog.csdn.net/qq_41185868/article/details/109408387
Recomendado
Clasificación