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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。