分类变量 哑变量矩阵 指标矩阵_不懂数据集重排序?分类变量转换苦难?4种python方法,不再难!...
前言
数据排序、分类变量转换是数据处理与分析中常常遇到对场景,且需要有准确的判断以及准确的处理方式,否则会影响数据质量,产生脏数据,进而影响数据呈现效果或预测效果等,更别提机器学习与深度学习准确性等系列问题。小编接下来会针对python方法在该场景的应用做具体介绍。
排列和随机采样
利用numpy.random.permutation函数可以轻松实现对Series和DataFrame的列的排列工作(permuting,随机重排序)。通过需要排列的轴的长度调用permutation,可产生一个表示新顺序的整数数组:
1.使用permutation()进行排列
我们先使用DataFrame创建一个5行4列的数据集,然后使用numpy.random.permutation函数进行重新排序,具体如下:
2.使用take函数对数据集进行重排序
通过下面对例子可以清楚理解take函数对作用。sampler是np.random.permutation()生成对随机数组,然后将这个对象传入到take函数中,作用于对象数据集,具体如下所示:
In [8]: df Out[8]: 0 1 2 3 0 0 1 2 3 1 4 5 6 7 2 8 9 10 11 3 12 13 14 15 4 16 17 18 19In [9]: df.take(sampler) Out[9]: 0 1 2 3 0 0 1 2 3 1 4 5 6 7 4 16 17 18 19 3 12 13 14 15 2 8 9 10 11如果不想用替换的方式选取随机子集,则可以使用permutation:从permutation返回的数组中切下前k个元素,其中k为期望的子集大小。
In [10]: df.take(np.random.permutation(len(df))[:3]) Out[10]: 0 1 2 3 3 12 13 14 15 2 8 9 10 11 0 0 1 2 33.获取随机整数:np.random.randint
要通过替换的方式产生样本,最快的方式通过np.random.randint得到一组随机整数:
In [11]: ba=np.array([5,7,-1,6,4]) In [12]: ba Out[12]: array([ 5, 7, -1, 6, 4]) In [13]: sampler=np.random.randint(0,len(ba),size=10) In [14]: sampler Out[14]: array([1, 3, 1, 3, 1, 2, 3, 4, 2, 0]) In [15]: draws=ba.take(sampler) In [16]: draws Out[16]: array([ 7, 6, 7, 6, 7, -1, 6, 4, -1, 5])计算指标/哑变量
另一种常用于统计建模或机器学习的转换方式是:将分类变量转换为“哑变量矩阵”或“指标矩阵”。如果DataFrame的某一列中含有k个不同的值,则可以派生出一个k列矩阵或DataFrame(其值权威1和0).pandas有一个get_dummies函数可以实现该功能。
In [17]: df=DataFrame({'key':['b','b','a','c','a','b'],'data1':range(6)}) In [18]: df Out[18]: key data1 0 b 0 1 b 1 2 a 2 3 c 3 4 a 4 5 b 5 In [19]: df['key'] Out[19]: 0 b 1 b 2 a 3 c 4 a 5 b Name: key, dtype: object使用get_dummies()将分类变量转换为“哑变量矩阵”
In [20]: pd.get_dummies(df['key']) Out[20]: a b c 0 0 1 0 1 0 1 0 2 1 0 0 3 0 0 1 4 1 0 0 5 0 1 0总结
数据处理与分析的方法丰富且场景复杂,针对不同的应用情况,选择适合的方法是最恰当且能解决实际问题的。希望大家从中有所收益,实践中多体会和沉淀,感谢大家支持!记得关注哦!
总结
以上是生活随笔为你收集整理的分类变量 哑变量矩阵 指标矩阵_不懂数据集重排序?分类变量转换苦难?4种python方法,不再难!...的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: windows nginx c++读取请
- 下一篇: python程序运行时间计时软件_pyt