欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實現類別變量的獨熱編碼

 更新時間:2023年02月17日 15:27:14   作者:瘋狂學習GIS  
這篇文章主要為大家詳細介紹了基于Python下OneHotEncoder與pd.get_dummies兩種方法,實現機器學習中最優(yōu)的編碼方法——獨熱編碼的方法,需要的可以參考一下

在數據處理與分析領域,對數值型與字符型類別變量加以編碼是不可或缺的預處理操作;這里介紹兩種不同的方法。

1 OneHotEncoder

首先導入必要的模塊。

import pandas as pd
from sklearn.preprocessing import OneHotEncoder

其中,OneHotEncoder是我們實現獨熱編碼的關鍵模塊。

接下來,導入并顯示數據前五行。

test_data_1=pd.read_csv('G:/CropYield/03_DL/00_Data/onehot_test.csv',names=['EVI0610','EVI0626','SoilType'],header=0)
test_data_1.head(5)

關于這里導入數據代碼的解釋,大家可以查看多變量兩兩相互關系聯合分布圖的Python繪制Python TensorFlow深度學習回歸代碼:DNNRegressor這兩篇文章,這里就不再贅述啦~

數據前五行展示如下圖。其中,前兩列'EVI0610''EVI0626'為數值型連續(xù)變量,而'SoilType'為數值型類別變量。我們要做的,也就是將第三列'SoilType'進行獨熱編碼。

接下來,進行獨熱編碼的配置。

ohe=OneHotEncoder(handle_unknown='ignore')
ohe.fit(test_data_1)

在這里,第一行是對獨熱編碼的配置,第二行則是對我們剛剛導入的數據進行獨熱編碼處理。得到一個獨熱編碼配置的輸出結果。

接下來,看看獨熱編碼處理后,將我們的數據分成了哪些類別。

ohe.categories_

得到結果如下圖。

可以發(fā)現,一共有三個array,為什么呢?仔細看可以發(fā)現,獨熱編碼是將我們導入的三列數據全部都當作類別變量來處理了。之所以會這樣,是因為我們在一開始沒有表明哪一列是類別變量,需要進行獨熱編碼;而哪一列不是類別變量,從而不需要進行獨熱編碼。

那么,我們如何實現上述需求,告訴程序我們要對哪一行進行獨熱編碼呢?在老版本的sklearn中,我們可以借助categorical_features=[x]參數來實現這一功能,但是新版本sklearn取消了這一參數。那么此時,一方面,我們可以借助ColumnTransformer來實現這一過程,另一方面,我們可以直接對需要進行轉換的列加以處理。后者相對較為容易理解,因此本文對后者進行講解。

我們將test_data_1中的'SoilType'列作為索引,從而僅僅對該列數據加以獨熱編碼。

ohe_column=pd.DataFrame(ohe.fit_transform(test_data_1[['SoilType']]).toarray())
ohe_column.head(5)

其中,[['SoilType']]表示僅僅對這一列進行處理。得到結果如下圖。

可以看到,原來的'SoilType'列現在成為了63列的編碼列,那么這樣的話,說明我們原先的'SoilType'應該一共是有63個不同的數值。是不是這個樣子呢?我們來檢查一下。

count=pd.DataFrame(test_data_1['SoilType'].value_counts())
print(count)

得到結果如下。

好的,沒有問題:可以看到此結果共有63行,也就是'SoilType'列原本是有63個不同的值的,證明我們的獨熱編碼沒有出錯。

此時看一下我們的test_data_1數據目前長什么樣子。

test_data_1.head(5)

是的,我們僅僅對'SoilType'列做了處理,沒有影響到整個初始數據。那么先將原本的'SoilType'列剔除掉。

test_data_1=test_data_1.drop(['SoilType'],axis=1)
test_data_1.head(5)

再將經過獨熱編碼處理后的63列加上。

test_data_1.join(ohe_column)

大功告成!

但是這里還有一個問題,我們經過獨熱編碼所得的列名稱是以數字來命名的,非常不方便。因此,有沒有什么辦法可以在獨熱編碼進行的同時,自動對新生成的列加以重命名呢?

2 pd.get_dummies

pd.get_dummies是一個最好的辦法!其具體用法與上述OneHotEncoder類似,因此具體過程就不再贅述啦,大家看代碼就可以明白。

首先還是導入與上述內容中一致的初始數據。

test_data_2=pd.read_csv('G:/CropYield/03_DL/00_Data/onehot_test.csv',names=['EVI0610','EVI0626','SoilType'],header=0)
test_data_2.head(5)

進行獨熱編碼并看看結果。

test_data_2_ohe=pd.get_dummies(test_data_2,columns=['SoilType'])
test_data_2_ohe.head(5)

最終結果中,列名稱可以說是非常醒目,同時,共有65列數據,自動刪除了原本的'SoilType'列,實現了“獨熱編碼”“新列重命名”與“原始列刪除”,可謂一舉三得,簡直是太方便啦~

到此這篇關于Python實現類別變量的獨熱編碼的文章就介紹到這了,更多相關Python獨熱編碼內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python編寫微信公眾號首圖思路詳解

    python編寫微信公眾號首圖思路詳解

    這篇文章主要介紹了python編寫微信公眾號首圖的思路,根據微信公眾號首圖要求,可以上傳一個不超過5M的圖片,且圖片尺寸要是2.35:1的尺寸,具體實現思路及代碼感興趣的朋友跟隨小編一起看看吧
    2019-12-12
  • Python?爬取微博熱搜頁面

    Python?爬取微博熱搜頁面

    這篇文章主要介紹了Python?爬取微博熱搜頁面,關于Python?爬蟲,爬取網頁等相關內容一般可作為小練習,下面文章Python?爬取微博熱搜頁面也如此,需要的小伙伴可以參考一下
    2022-01-01
  • python如何調用java類

    python如何調用java類

    在本篇文章里小編給大家分享了關于python調用java類的方法,需要的朋友們可以參考下。
    2020-07-07
  • Python中index()函數與find()函數的區(qū)別詳解

    Python中index()函數與find()函數的區(qū)別詳解

    這篇文章主要介紹了Python中index()函數與find()函數的區(qū)別詳解,Python index()方法檢測字符串中是否包含子字符串 str ,如果指定beg開始和end結束范圍,則檢查是否包含在指定范圍內,需要的朋友可以參考下
    2023-08-08
  • Python制作春聯的示例代碼

    Python制作春聯的示例代碼

    春聯是中國傳統(tǒng)文化中最具內涵的元素之一,它以對仗工整、簡潔精巧的文字描繪美好形象,抒發(fā)美好愿望,是中國特有的文學形式,是華人們過年的重要習俗。本文將通過Python制作春聯,需要的可以參考一下
    2022-01-01
  • 在python3中使用Supervisor的詳細教程

    在python3中使用Supervisor的詳細教程

    Supervisor是用Python開發(fā)的一個client/server服務,是Linux/Unix系統(tǒng)下的一個進程管理工具,不支持Windows系統(tǒng),本文給大家介紹在python3中使用Supervisor的方法,感興趣的朋友一起看看吧
    2022-01-01
  • vue常用指令代碼實例總結

    vue常用指令代碼實例總結

    這篇文章主要介紹了vue常用指令代碼實例,需要的朋友可以參考下
    2020-03-03
  • 淺談Python中的可迭代對象、迭代器、For循環(huán)工作機制、生成器

    淺談Python中的可迭代對象、迭代器、For循環(huán)工作機制、生成器

    這篇文章主要介紹了Python中的可迭代對象、迭代器、For循環(huán)工作機制、生成器,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • TensorFlow搭建神經網絡最佳實踐

    TensorFlow搭建神經網絡最佳實踐

    這篇文章主要為大家詳細介紹了TensorFlow搭建神經網絡最佳實踐,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Python中的SOLID原則實例詳解

    Python中的SOLID原則實例詳解

    SOLID原則是由Robert C. Martin提出的以首字母縮寫命名的編碼準則,它代表了五種不同的編碼習慣,下面這篇文章主要給大家介紹了關于Python中SOLID原則的相關資料,需要的朋友可以參考下
    2023-02-02

最新評論