特征抽取--標簽與索引的轉化: StringIndexer


在機器學習處理過程中,為了方便相關算法的實現,經常需要把標簽數據(一般是字符串)轉化成整數
索引,或是在計算結束后將整數索引還原為相應的標簽。

​StringIndexer轉換器可以把一列類別型的特征(或標簽)進行編碼,使其數值化,索引的

范圍從0開始,該過程可以使得相應的特征索引化,使得某些無法接受類別型特征的算法可

以使用,並提高諸如決策樹等機器學習算法的效率。

索引構建的順序為標簽的頻率,優先編碼頻率較大的標簽,所以出現頻率最高的標簽為0號。
如果輸入的是數值型的,我們會把它轉化成字符型,然后再對其進行編碼。

首先,引入必要的包,並創建一個簡單的DataFrame,它只包含一個id列和一個標簽列category:

#導入相關的類庫

from pyspark.sql import SparkSession
from pyspark.ml.feature import StringIndexer
#配置spark,創建SparkSession對象
spark = SparkSession.builder.master('local').appName('StringIndexerDemo').getOrCreate()
#創建簡單的DataFrame
df = spark.createDataFrame([
(0, "a"), (1, "b"),
(2, "c"), (3, "a"),
(4, "a"), (5, "c")],
["id", "category"])
#創建StringIndexer對象,設定輸入輸出參數
indexer =StringIndexer(inputCol ='category', outputCol= 'categoryIndex')
#對這個DataFrame進行訓練
model = indexer.fit(df)
#利用生成的模型對DataFrame進行transform操作
indexed = model.transform(df)
indexed.show()
 
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM