亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用spark-ml處理分類功能?

如何使用spark-ml處理分類功能?

弒天下 2019-11-28 13:42:59
如何使用 spark-ml 和不 處理分類數據spark-mllib?如果文檔不是很清楚,似乎分類器(例如RandomForestClassifier)LogisticRegression具有一個featuresCol參數,該參數指定中的要素列的名稱DataFrame,一個labelCol參數,其指定中的標記類的列的名稱DataFrame。顯然,我要在預測中使用多個特征,因此我嘗試使用VectorAssembler將所有特征放在下的單個向量中featuresCol。但是,VectorAssembler僅接受數字類型,布爾類型和向量類型(根據Spark網站),因此我無法將字符串放入特征向量中。我應該如何進行?
查看完整描述

3 回答

?
守候你守候我

TA貢獻1802條經驗 獲得超10個贊

我將從另一個角度提供答案,因為我還想知道Spark ML(不是MLlib)中基于樹的模型的分類功能,并且文檔尚不清楚一切如何工作。

當您使用pyspark.ml.feature.StringIndexer額外的元數據轉換數據框中的列時,該數據框中會存儲額外的元數據,這些元數據專門將轉換后的功能標記為分類功能。

當您打印數據框時,您將看到一個數字值(這是一個與類別值之一相對應的索引),如果您查看模式,您將看到新的轉換列是type double。但是,您pyspark.ml.feature.StringIndexer.transform用來創建的新列不僅是普通的雙列,而且還具有與之相關的額外元數據,這非常重要。您可以通過查看metadata數據框的架構中適當字段的屬性來檢查此元數據(可以通過查看yourdataframe.schema來訪問數據框的架構對象)

這些額外的元數據有兩個重要含義:

  1. 當您.fit()使用基于樹的模型進行調用時,它將掃描數據幀的元數據,并識別您使用諸如轉換器(例如,pyspark.ml.feature.StringIndexer如上所述)分類編碼的字段(如上所述,還有其他轉換器也將具有此效果,例如pyspark.ml.feature.VectorIndexer)。因此,在Spark ML中使用基于樹的模型時,在用StringIndxer轉換特征后,不必對特征進行一鍵熱編碼(但是,在使用其他不使用特征的模型時,仍必須進行一鍵熱編碼)自然地處理線性回歸等類別。)

  2. 因為此元數據存儲在數據幀中,所以您可以隨時使用pyspark.ml.feature.IndexToString將數字索引恢復為原始分類值(通常是字符串)的方法。


查看完整回答
反對 回復 2019-11-28
  • 3 回答
  • 0 關注
  • 820 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號