前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过sklearn 实现LabelEnconder 编码,之后进行xgboost预测。

通过sklearn 实现LabelEnconder 编码,之后进行xgboost预测。

作者头像
学到老
发布2019-01-25 11:08:37
1.2K0
发布2019-01-25 11:08:37
举报

通过sklearn 实现babel 编码,之后进行xgboost预测。 LabelEncoder() 更多编码操作可以参考:链接直通车

代码语言:javascript
复制
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split
import xgboost as xgb
import pandas as pd

def GitdataCate():
    df=pd.read_csv("Training.csv")
    one_hot_feature=["prognosis"]
    lbc = LabelEncoder()
    for feature in one_hot_feature:
        try:
            df[feature] = lbc.fit_transform(df[feature].apply(int))
        except:
            df[feature] = lbc.fit_transform(df[feature])
    # X=df.as_matrix(),此方法后面回去删除,可以使用df.values
    X=df.values
    print(X)
    #返回映射后的classes_的编码
    terminal_type1 = {index: label for index, label in enumerate( lbc.classes_)}
    print(terminal_type1)
这里写图片描述
这里写图片描述

注意:上面的代码只能返回最后的一列的特征编码字典,通过过下下方式可以打印出每一个特征的特征编码。

代码语言:javascript
复制
 for feature in one_hot_feature:
        try:
            df[feature] = lbc.fit_transform(df[feature].apply(int))
        except:
            df[feature] = lbc.fit_transform(df[feature])
    # X=df.as_matrix(),此方法后面回去删除,可以使用df.values
        terminal_type1 = {index: label for index, label in enumerate( lbc.classes_)}

        print(terminal_type1)

两个特征的特征编码:

这里写图片描述
这里写图片描述

把文件json,写入:

代码语言:javascript
复制
with open('terminal_type', 'w') as json_file:
        json_file.write(json.dumps(terminal_type1))

更多操作:

代码语言:javascript
复制
from sklearn.preprocessing import LabelEncoder 
包初始化 
gle = LabelEncoder() 
建立映射 
terminal_type= gle.fit_transform(data1[‘terminal_type’]) 
映射后的对应值 
terminal_type1 = {index: label for index, label in enumerate(gle.classes_)} 
添加映射后的列 
data1[‘terminal_type1’] = terminal_type 
删除映射前对的列 
data1 = data1.drop([‘terminal_type’],axis=1) 
data1.head()

klearn.preprocessing.LabelEncoder():标准化标签,将标签值统一转换成range(标签值个数-1)范围内

以数字标签为例:

代码语言:javascript
复制
In [1]: from sklearn import preprocessing
   ...: le = preprocessing.LabelEncoder()
   ...: le.fit([1,2,2,6,3])
   ...:
Out[1]: LabelEncoder()

获取标签值

代码语言:javascript
复制
In [2]: le.classes_
Out[2]: array([1, 2, 3, 6])

将标签值标准化

代码语言:javascript
复制
In [3]: le.transform([1,1,3,6,2])
Out[3]: array([0, 0, 2, 3, 1], dtype=int64)

将标准化的标签值反转

代码语言:javascript
复制
In [4]: le.inverse_transform([0, 0, 2, 3, 1])
Out[4]: array([1, 1, 3, 6, 2])

非数字型标签值标准化:

代码语言:javascript
复制
In [5]: from sklearn import preprocessing
   ...: le =preprocessing.LabelEncoder()
   ...: le.fit(["paris", "paris", "tokyo", "amsterdam"])
   ...: print('标签个数:%s'% le.classes_)
   ...: print('标签值标准化:%s' % le.transform(["tokyo", "tokyo", "paris"]))
   ...: print('标准化标签值反转:%s' % le.inverse_transform([2, 2, 1]))
   ...:

标签个数:[‘amsterdam’ ‘paris’ ‘tokyo’] 标签值标准化:[2 2 1] 标准化标签值反转:[‘tokyo’ ‘tokyo’ ‘paris’]

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年08月18日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档