python连续数据离散化,python怎么对数据进行预处理

  python连续数据离散化,python怎么对数据进行预处理

  关于特征值离散化的相关内容可以看机器学习面试题之机器学习基础(一)1.pandas进行特征离散处理

  导入熊猫为pddf=pd .DataFrame([绿色, M ,10.1, class1],[红色, L ,13.5, class2],[蓝色, XL ,15.3, 1级])df。columns=[ color , size , prize , class label]df标签处理

  通常会把字符型的标签转换成数值型的

  class_mapping={label:idx for idx,label in enumerate(set(df[ class label ])} print(class _ mapping)# { class 1 :0, class 2 :1 } df[ class label ]=df[ class label ].地图(类别映射)df特征处理

  对于特征来说,一般可以做一个映射的字典

  size_mapping={ XL: 3, L: 2, M: 1}df[size]=df[size].地图(大小映射)测向

  还可以转换成编码

  color_mapping={ green: (0,0,1), red: (0,1,0), blue: (1,0,0)}df[color]=df[color].地图(颜色映射)测向

  还原数据初始状态

  inv_color_mapping={v: k for k,v in color _ mapping。items()} inv _ size _ mapping={ v:k for k,v in size _ mapping。items()} inv _ class _ mapping={ v:k for k,v in class _ mapping。items()} df[ color ]=df[ color ].map(inv _ color _ mapping)df[ size ]=df[ size ].map(inv_size_mapping)df[类标签]=df[类标签]。地图(库存_分类_映射)df2.使用sklearn进行离散值处理的方式如下:

  来自sklearn。预处理导入LabelEncoderclass _ le=LabelEncoder()df[ class label ]=class _ le。fit _ transform(df[ class label ])df

  数据还原回去可以用逆变换:

  class _ le。inverse _ transform(df[ class label ]).标签编码(LabelEncoder)

  使用字典矢量器将得到特征的字典

  df.transpose().to_dict().values()dict _ values([{ color : green , size: M , class label: 0, prize: 10.1},{color: red , size: L , class label: 1, prize: 13.5},{color: blue , size: XL , class label: 0, prize: 15.3}]) feature=df.iloc[:-1]feature

  对所有的数据都做了映射

  从sk学习。feature _ extraction import dictectorizerdvec=dict vector(sparse=False)X=dvec。拟合_变换(特征。转置().to_dict().values())X#输出结果数组([[ 0。 1. 0. 10.1, 0. 1. 0.], [ 0. 0. 1. 13.5, 1. 0. 0.], [ 1. 0. 0. 15.3, 0. 0. 1.]]) 可以调用获取_功能_名称来返回新的列的名字,其中0和一就代表是不是这个属性。

  警察DataFrame(X,columns=dvec。get _ feature _ name()).特征向量化(DictVectorizer)

  OneHotEncoder必须使用整数作为输入,所以得先预处理一下

  color _ le=标签编码器()df[ color ]=color _ le。拟合变换(df[颜色])df

  从sklearn。预处理导入OneHotEncoderohe=OneHotEncoder(sparse=False)X=ohe。fit _ transform(df[[ color ]].值)X#输出结果数组([[ 0。 1. 0.], [ 0. 0. 1.], [ 1. 0. 0.]]).独热编码(OneHotEncoder)

  熊猫库中同样有类似的操作,使用获取_假人也可以得到相应的特征

  导入熊猫为pddf=pd .DataFrame([绿色, M ,10.1, class1],[红色, L ,13.5, class2],[蓝色, XL ,15.3, 1级])df。columns=[ color , size , prize , class label ]size _ mapping={ XL :3, L: 2, M: 1}df[size]=df[size].map(size _ mapping)class _ mapping={ label:idx for idx,label in enumerate(set(df[ class label ])} df[ class label ]=df[ class label ])。map(class_mapping)df

  对整个DF使用获取_假人将会得到新的列:

  pd.get_dummies(df)

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: