火車模型使用磚特性存儲
本文描述了如何使用功能你可以訓練模型工程統一目錄或本地工作區特性存儲。您必須首先創建一個訓練數據集,它定義了功能使用以及如何加入他們的行列。然後,當你訓練一個模型,該模型保留了引用特性。
當您使用推理的模型時,您可以選擇從功能存儲檢索特征值。你也可以服務模型模型服務和它會自動查找功能發布到網上商店。
創建一個訓練數據集
從功能表模型來選擇特定的功能訓練,您將創建一個訓練數據集使用FeatureStoreClient.create_training_set
API和稱為一個對象FeatureLookup
。一個FeatureLookup
指定每個特性使用訓練集,包括功能表的名稱,名稱(s)的特性,和關鍵(s)使用時加入DataFrame傳遞到功能表FeatureStoreClient.create_training_set
。
使用feature_names
當你創建一個參數FeatureLookup
。feature_names
單一特征的名字,名字的列表功能,或沒有查找所有功能(不含主鍵)功能表中的訓練集的時候被創建。
請注意
的類型和順序lookup_key
列DataFrame必須匹配的類型和順序主鍵(不包括時間戳鍵)的引用特性表。
本文包含兩個版本的示例代碼的語法。
在本例中,返回的DataFrametrainingSet.load_df
包含一個列的每個特性feature_lookups
。它保留DataFrame提供給的所有列FeatureStoreClient.create_training_set
除了那些排除使用exclude_columns
。
從databricks.feature_store進口FeatureLookup#模型訓練使用兩個“customer_features”功能表和功能#一個單一的功能從“product_features”feature_lookups=(FeatureLookup(table_name=“recommender_system.customer_features”,feature_names=(“total_purchases_30d”,“total_purchases_7d”),lookup_key=“customer_id”),FeatureLookup(table_name=“recommender_system.product_features”,feature_names=(“類別”),lookup_key=“product_id”)]fs=FeatureStoreClient()#使用培訓DataFrame創建一個訓練集和功能特性#培訓DataFrame必須包含所有查找鍵查找的功能,#在這種情況下“customer_id”和“product_id”。它還必須包含所有標簽使用#培訓,在這種情況下“評級”。training_set=fs。create_training_set(df=training_df,feature_lookups=feature_lookups,標簽=“評級”,exclude_columns=(“customer_id”,“product_id”])training_df=training_set。load_df()
創建一個TrainingSet當主鍵查找密鑰不匹配
使用參數lookup_key
在FeatureLookup
在訓練集列的名字。FeatureStoreClient.create_training_set
執行有序之間的連接的列中指定的訓練集lookup_key
參數使用主鍵的順序表創建時指定的特性。
在這個例子中,recommender_system.customer_features
有以下主鍵:customer_id
,dt
。
的recommender_system.product_features
功能表主鍵product_id
。
如果training_df
有以下列:
cid
transaction_dt
product_id
評級
下麵的代碼將創建正確的查找功能TrainingSet
:
feature_lookups=(FeatureLookup(table_name=“recommender_system.customer_features”,feature_names=(“total_purchases_30d”,“total_purchases_7d”),lookup_key=(cid的,“transaction_dt”]),FeatureLookup(table_name=“recommender_system.product_features”,feature_names=(“類別”),lookup_key=“product_id”)]
當FeatureStoreClient.create_training_set
被調用時,它會創建一個訓練數據集通過執行一個左加入,加入表recommender_system.customer_features
和training_df
使用鍵(customer_id
,dt
)對應於(cid
,transaction_dt
),如以下代碼所示:
customer_features_df=火花。sql(“從recommender_system.customer_features SELECT *”)product_features_df=火花。sql(“從recommender_system.product_features SELECT *”)training_df。加入(customer_features_df,在=(training_df。cid= =customer_features_df。customer_id,training_df。transaction_dt= =customer_features_df。dt),如何=“左”)。加入(product_features_df,在=“product_id”,如何=“左”)
創建一個TrainingSet包含兩個名稱相同的特性從不同特性表
使用可選參數output_name
在FeatureLookup
。的名稱是用於提供在返回的DataFrame特點的名字TrainingSet.load_df
。例如,下麵的代碼,返回的DataFrametraining_set.load_df
包括列customer_height
和product_height
。
feature_lookups=(FeatureLookup(table_name=“recommender_system.customer_features”,feature_names=(“高度”),lookup_key=“customer_id”,output_name=“customer_height”,),FeatureLookup(table_name=“recommender_system.product_features”,feature_names=(“高度”),lookup_key=“product_id”,output_name=“product_height”),]fs=FeatureStoreClient()與mlflow。start_run():training_set=fs。create_training_set(df,feature_lookups=feature_lookups,標簽=“評級”,exclude_columns=(“customer_id”])training_df=training_set。load_df()
創建一個TrainingSet多次使用相同的功能
創建一個TrainingSet使用相同的功能加入到不同的查找鍵,使用多個FeatureLookups。使用一個獨特的output_name
為每個FeatureLookup輸出。
feature_lookups=(FeatureLookup(table_name=“taxi_data.zip_features”,feature_names=(“溫度”),lookup_key=(“pickup_zip”),output_name=“pickup_temp”),FeatureLookup(table_name=“taxi_data.zip_features”,feature_names=(“溫度”),lookup_key=(“dropoff_zip”),output_name=“dropoff_temp”)]
創建一個TrainingSet無人監督的機器學習模型
集標簽=沒有
當創建一個TrainingSet無監督學習模型。例如,可以使用以下TrainingSet集群不同顧客群體根據他們的利益:beplay体育app下载地址
feature_lookups=(FeatureLookup(table_name=“recommender_system.customer_features”,feature_names=(“利益”),lookup_key=“customer_id”,),]fs=FeatureStoreClient()與mlflow。start_run():training_set=fs。create_training_set(df,feature_lookups=feature_lookups,標簽=沒有一個,exclude_columns=(“customer_id”])training_df=training_set。load_df()
火車模型和執行批處理推理與功能表
當你訓練一個模型使用特性存儲功能,保留引用特性模型。當您使用推理的模型時,您可以選擇從功能存儲檢索特征值。必須提供的主鍵(s)在模型中使用的特性。模型檢索功能需要從特征存儲在工作區中。然後根據需要加入特征值在得分。
在推理時支持特性查找:
你必須記錄模型使用
FeatureStoreClient.log_model
。您必須使用返回的DataFrame
TrainingSet.load_df
訓練模型。如果你在使用前以任何方式修改這個DataFrame訓練模型,修改不應用當您使用推理的模型。這降低了模型的性能。必須有一個相應的模型類型
python_flavor
在MLflow。MLflow支持大多數Python模型培訓框架,包括:scikit-learn
keras
PyTorch
SparkML
LightGBM
XGBoost
TensorFlow Keras(使用
python_flavor
mlflow.keras
)
自定義MLflow pyfunc模型
#火車模型進口mlflow從sklearn進口linear_modelfeature_lookups=(FeatureLookup(table_name=“recommender_system.customer_features”,feature_names=(“total_purchases_30d”),lookup_key=“customer_id”,),FeatureLookup(table_name=“recommender_system.product_features”,feature_names=(“類別”),lookup_key=“product_id”)]fs=FeatureStoreClient()與mlflow。start_run():# df已列(“customer_id”、“product_id”,“評級”)training_set=fs。create_training_set(df,feature_lookups=feature_lookups,標簽=“評級”,exclude_columns=(“customer_id”,“product_id”])training_df=training_set。load_df()。toPandas()#“training_df”列(“total_purchases_30d”、“類別”,“評級”)X_train=training_df。下降([“評級”),軸=1)y_train=training_df。評級模型=linear_model。LinearRegression()。適合(X_train,y_train)fs。log_model(模型,“recommendation_model”,味道=mlflow。sklearn,training_set=training_set,registered_model_name=“recommendation_model”)#批推理#如果模型在model_uri打包功能,FeatureStoreClient.score_batch的()#調用之前自動從功能存儲檢索所需的功能評分模型。#返回的DataFrame score_batch () batch_df增加了#列包含特征值和一個列包含模型的預測。fs=FeatureStoreClient()# batch_df已列“customer_id”和“product_id”預測=fs。score_batch(model_uri,batch_df)#“預測”DataFrame這些列:#“customer_id”、“product_id”,“total_purchases_30d”、“類別”,“預測”
使用自定義特性值評分模型打包時特性的元數據
默認情況下,一個模型打包功能推理從功能存儲元數據查找功能。使用自定義特性值評分,包括他們在DataFrame傳遞給FeatureStoreClient.score_batch ()。
例如,假設你包一個模型與這兩個特點:
feature_lookups=(FeatureLookup(table_name=“recommender_system.customer_features”,feature_names=(“account_creation_date”,“num_lifetime_purchases”),lookup_key=“customer_id”,),]
在推理,你可以提供自定義特性的值account_creation_date
通過調用FeatureStoreClient.score_batch
DataFrame,包含一個列命名account_creation_date
。在這種情況下,API隻查找num_lifetime_purchases
從功能存儲和使用提供的自定義特性account_creation_date
列值評分模型。
# batch_df已列(“customer_id”、“account_creation_date”)預測=fs。score_batch(“模型:/ ban_prediction_model / 1”,batch_df)
火車和評分模型使用的組合特性存儲特性和外特性存儲的數據存儲
你可以訓練一個模型使用的組合功能以外的功能和數據存儲功能。當你包特性的元數據模型,該模型從特性存儲推理檢索特征值。
訓練模型,包括額外的數據列DataFrame傳遞給FeatureStoreClient.create_training_set
。下麵的例子使用了功能total_purchases_30d
從特色商店和外部列瀏覽器
。
feature_lookups=(FeatureLookup(table_name=“recommender_system.customer_features”,feature_names=(“total_purchases_30d”),lookup_key=“customer_id”,),]fs=FeatureStoreClient()# df已列(“customer_id”、“瀏覽器”,“評級”)training_set=fs。create_training_set(df,feature_lookups=feature_lookups,標簽=“評級”,exclude_columns=(“customer_id”]#“瀏覽器”並不排除在外)
在推理,DataFrame中使用FeatureStoreClient.score_batch
必須包括瀏覽器
列。
#在推理,必須提供“瀏覽器”# batch_df已列(“customer_id”、“瀏覽器”)預測=fs。score_batch(model_uri,batch_df)