取消
顯示的結果
而不是尋找
你的意思是:

排除沒有查找鍵dataframes由create_training_set ()

mrcity
新的貢獻者二世

我有數據存儲在特性表,加上在數據湖。功能表將滯後湖的數據至少一點。我想過濾數據的特性存儲通過查詢數據查找湖鑰匙從我的索引過濾通過一個或多個屬性(如時間、地點、成本中心,等等)。這樣做很容易通過提供我查詢的結果作為一個dataframe傳遞到“FeatureStoreClient.create_training_set ()”。

然而,我遇到一些麻煩,如果我想火車模型,確定查找鍵功能表中不存在。例如,如果我有鑰匙1 - 4在湖裏,並編寫一個查詢,返回3和5,然後“create_training_set()的返回3旁邊特性和5旁邊一堆空值。這導致SKLearn窒息,因為不符合()的函數過濾掉錯誤數據前培訓。至少我可以減輕這種通過運行的輸出“create_training_set()”通過“dropna()的運行符合()的前擺脫任何行NULL值。

這就變成了真正的問題在哪裏運行批處理推理MLFlow模型。當提供一組查找鍵FeatureStoreClient.score_batch()”沒有辦法攔截的關鍵在被評估,因此不能用“ValueError:輸入包含NaN,無窮或值太大,dtype (float64)”。我沒有看到一個選項來力”score_batch()的未知特性存儲刪除鍵,也我可以想出的解決方法看起來非常幹淨。第一就是直接從湖數據查詢模型推理和忘記特性存儲。第二種是使用“create_training_set()的返回隻列為因變量,但因為它不會過濾掉鑰匙不知道提前特性存儲,我最終不得不拿整個行存儲的功能,運行“dropna()”,然後通過隻查找鍵列到“score_batch ()”。還有其他的清潔方式,我沒有想到什麼?

也許這一切都是毫無意義,因為人們不會從特性存儲在實踐中運行批推論(我自己就對原始數據進行分類,個人),但是我認為它的測試人員將很高興提供途徑讓人們不要無意中破壞提供了方法。不管怎樣,謝謝你的考慮,希望不久我們可以至少有一個選項來防止功能存儲api處理功能表鍵缺席。

2回答2

匿名
不適用

@Stephen Wylie:

在批處理丟失的鑰匙推理的一種方法是使用一個連接之間查找鍵和功能表。這將允許你過濾掉之前未知的密鑰傳遞給score_batch(),並避免問題和nan dropna ()。這裏有一個例子使用PySpark如何實現這個:

從pyspark.sql。功能導入坳#定義查找鍵你想得分lookup_keys = [“key1”、“key2”,“key3”、“key4”、“key5”】#創建一個DataFrame查找鍵lookup_df = spark.createDataFrame(((鍵)鍵lookup_keys], [" lookup_key "]) #功能表讀入DataFrame feature_df = spark.read.format .load(“δ”)(“路徑/ /功能/表”)#加入與功能表查找鍵,並過濾掉score_df = lookup_df未知密鑰。加入(feature_df (“lookup_key”),“left_outer”) .filter(坳(lookup_key) .isNotNull()) #通過結果DataFrame score_batch()預測=客戶。score_df score_batch (“model_name”)

這應該允許你過濾掉之前未知的密鑰傳遞給score_batch(),而不需要從功能獲取整個行存儲和運行dropna ()。

匿名
不適用

嗨@Stephen威利

希望一切都好!隻是想檢查如果你能解決你的問題,你會很高興分享解決方案或答案標記為最佳?其他的請讓我們知道如果你需要更多的幫助。

我們很想聽到你的聲音。

謝謝!

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map