問題
您已經創建了一個Sklearn模型使用KNeighborsClassifier和使用pyfunc運行一個預測。
例如:
python導入mlflow %。pyfuncpyfunc_udf = mlflow.pyfunc.spark_udf(spark, model_uri=model_uri, result_type='string') predicted_df = merge.withColumn("prediction", pyfunc_udf(*merge.columns[1:])) predicted_df.collect()
預測返回一個ModuleNotFoundError:沒有模塊命名“sklearn.neighbors._classification”錯誤消息。
預測也可能返回FileNotFoundError: [Errno 2]沒有可用的臨時目錄中找到錯誤消息。
導致
登錄資訊模型時,所有的數據點保存泡菜的一部分用於培訓文件。
如果模型是訓練有素的數以百萬計的記錄,所有的數據添加到模型中,可以大大增加其大小。模型訓練總多個GBs數百萬條記錄很容易。
pyfunc試圖將整個模型加載到執行程序運行預測時的緩存。
如果模型適合內存太大了,它的結果在一個上麵的錯誤消息。
解決方案
您應該使用一個基於樹的算法,如隨機森林或XGBoost downsample資訊的數據模型。
如果你有不平衡數據,嚐試打這樣的抽樣方法,當訓練基於樹的算法。