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


之前介紹的StringIndexer是針對單個類別型特征進行轉換,倘若所有特征都已經被組織在一個向量中

,又想對其中某些單個分量進行處理時,Spark ML提供了VectorIndexer類來解決向量數據集中的類別

性特征轉換。通過為其提供maxCategories超參數,它可以自動識別哪些特征是類別型的,並且將原始

值轉換為類別索引。它基於不同特征值的數量來識別哪些特征需要被類別化,那些取值可能性最多不超

過maxCategories的特征需要會被認為是類別型的。在下面的例子中,我們讀入一個數據集,然后使用

VectorIndexer訓練出模型,來決定哪些特征需要被作為類別特征,將類別特征轉換為索引,這里設置

maxCategories為10,即只有種類小10的特征才被認為是類別型特征,否則被認為是連續型特征:

#導入相關的類庫

from pyspark.ml.feature import VectorIndexer

from pyspark.sql import SparkSession

#創建SparkSession對象,配置spark

spark = SparkSession.builder.master('local').appName('VectorIndexerDemo').getOrCreate()

#讀入數據集

data = spark.read.format('libsvm').load('file:///usr/local/spark/data/mllib/sample_libsvm_data.txt')

#創建VectorIndexer對象,

indexer = VectorIndexer(inputCol='features', outputCol='indexed',maxCategories=10)

#生成訓練模型,訓練數據

indexerModel = indexer.fit(data)

categoricalFeatures = indexerModel.categoryMaps

indexerData = indexerModel.transform(data)

indexerData.show()

 


免責聲明!

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



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