分类变量 哑变量矩阵 指标矩阵_不懂数据集重排序?分类变量转换苦难?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++读取请
- 下一篇: hbase中为何不能向表中插入数据_Hb