• 技术文章 >后端开发 >Python教程

    【机器学习】数据预处理之将类别数据转换为数值

    PHP中文网PHP中文网2017-07-05 18:13:06原创1260
    在进行python数据分析的时候,首先要进行数据预处理。

    有时候不得不处理一些非数值类别的数据,嗯, 今天要说的就是面对这些数据该如何处理。

    目前了解到的大概有三种方法:

    1,通过LabelEncoder来进行快速的转换;

    2,通过mapping方式,将类别映射为数值。不过这种方法适用范围有限;

    3,通过get_dummies方法来转换。

     1 import pandas as pd
     2 from io import StringIO
     3 
     4 csv_data = '''A,B,C,D
     5 1,2,3,4
     6 5,6,,8
     7 0,11,12,'''
     8 
     9 df = pd.read_csv(StringIO(csv_data))
    10 print(df)
    11 #统计为空的数目
    12 print(df.isnull().sum())
    13 print(df.values)
    14 
    15 #丢弃空的
    16 print(df.dropna())
    17 print('after', df)
    18 from sklearn.preprocessing import Imputer
    19 # axis=0 列   axis = 1 行
    20 imr = Imputer(missing_values='NaN', strategy='mean', axis=0)
    21 imr.fit(df) # fit  构建得到数据
    22 imputed_data = imr.transform(df.values) #transform 将数据进行填充
    23 print(imputed_data)
    24 
    25 df = pd.DataFrame([['green', 'M', 10.1, 'class1'],
    26                    ['red', 'L', 13.5, 'class2'],
    27                    ['blue', 'XL', 15.3, 'class1']])
    28 df.columns =['color', 'size', 'price', 'classlabel']
    29 print(df)
    30 
    31 size_mapping = {'XL':3, 'L':2, 'M':1}
    32 df['size'] = df['size'].map(size_mapping)
    33 print(df)
    34 
    35 ## 遍历Series
    36 for idx, label in enumerate(df['classlabel']):
    37     print(idx, label)
    38 
    39 #1, 利用LabelEncoder类快速编码,但此时对color并不适合,
    40 #看起来,好像是有大小的
    41 from sklearn.preprocessing import LabelEncoder
    42 class_le = LabelEncoder()
    43 color_le = LabelEncoder()
    44 df['classlabel'] = class_le.fit_transform(df['classlabel'].values)
    45 #df['color'] = color_le.fit_transform(df['color'].values)
    46 print(df)
    47 
    48 #2, 映射字典将类标转换为整数
    49 import numpy as np
    50 class_mapping = {label: idx for idx, label in enumerate(np.unique(df['classlabel']))}
    51 df['classlabel'] = df['classlabel'].map(class_mapping)
    52 print('2,', df)
    53 
    54 
    55 #3,处理1不适用的
    56 #利用创建一个新的虚拟特征
    57 from sklearn.preprocessing import OneHotEncoder
    58 pf = pd.get_dummies(df[['color']])
    59 df = pd.concat([df, pf], axis=1)
    60 df.drop(['color'], axis=1, inplace=True)
    61 print(df)

     

    以上就是【机器学习】数据预处理之将类别数据转换为数值的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:预处理 类别 数据
    上一篇:python实现一个搜索引擎(Pylucene)实例教程 下一篇:人生苦短,学习Python
    PHP编程就业班

    相关文章推荐

    • Python使用丝般顺滑的经典技巧总结• 简单介绍一下Python(图文详解)• 详细解析Python之关键字• 一起聊聊Python的编码样式• 深入了解Python数据处理及可视化

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网