要使用“pickle”模塊在 Python 中 pickle 經過訓練的分類器,我們可以遵循幾個簡單的步驟。 Pickling 允許我們序列化一個對象並將其保存到一個文件中,以便稍後加載和使用。 當我們想要保存經過訓練的機器學習模型(例如回歸分類器)以供將來使用而無需每次都重新訓練時,這特別有用。
首先,我們需要在 Python 腳本中導入“pickle”模塊:
python import pickle
接下來,我們需要訓練分類器並獲得訓練後的模型。 假設我們已經訓練了一個回歸分類器並將其存儲在名為“regression_model”的變量中。
要醃製訓練後的模型,我們可以使用“pickle.dump()”函數。 該函數採用兩個參數:我們要醃製的對象(在本例中是經過訓練的分類器),以及我們要保存醃製對象的文件對象。 我們可以使用“open()”函數以寫入二進制模式打開文件。
python with open('regression_model.pkl', 'wb') as file: pickle.dump(regression_model, file)
在上面的代碼中,我們以寫入二進制模式(“wb”)打開一個名為“regression_model.pkl”的文件,並將其作為第二個參數傳遞給“pickle.dump()”。 存儲在“regression_model”變量中的經過訓練的分類器被醃製並保存到文件中。
現在,我們已經成功醃製了訓練有素的分類器。 每當需要時,我們可以使用“pickle.load()”函數將其加載回內存。
python with open('regression_model.pkl', 'rb') as file: loaded_model = pickle.load(file)
在上面的代碼中,我們以讀取二進制模式('rb')打開pickled文件並將其作為參數傳遞給'pickle.load()'。 pickled 對像被加載到“loaded_model”變量中,該變量可用於預測或任何其他操作。
這是一個完整的示例,演示了經過訓練的回歸分類器的酸洗和加載:
python import pickle from sklearn.linear_model import LinearRegression # Training the regression model X_train = [[1], [2], [3], [4], [5]] y_train = [2, 4, 6, 8, 10] regression_model = LinearRegression() regression_model.fit(X_train, y_train) # Pickling the trained model with open('regression_model.pkl', 'wb') as file: pickle.dump(regression_model, file) # Loading the pickled model with open('regression_model.pkl', 'rb') as file: loaded_model = pickle.load(file) # Using the loaded model for prediction X_test = [[6]] predicted_value = loaded_model.predict(X_test) print(predicted_value)
在上面的示例中,我們首先使用“sklearn.linear_model”模塊中的“LinearRegression”類訓練一個簡單的線性回歸模型。 然後,我們將訓練好的模型pickle到名為“regression_model.pkl”的文件中。 稍後,我們從文件加載 pickle 模型並使用它來預測測試輸入“X_test”的值。
通過醃製和加載訓練好的分類器,我們可以重用模型,而無需重新訓練它,這可以節省大量的時間和計算資源。
最近的其他問題和解答 使用Python的EITC/AI/MLP機器學習:
- 什麼是支持向量機(SVM)?
- K 最近鄰算法是否非常適合構建可訓練的機器學習模型?
- SVM訓練算法常用作二元線性分類器嗎?
- 回歸算法可以處理連續數據嗎?
- 線性回歸特別適合縮放嗎?
- 均值平移動態帶寬如何根據數據點的密度自適應調整帶寬參數?
- 在均值平移動態帶寬實現中為特徵集分配權重的目的是什麼?
- 均值平移動態帶寬方法中如何確定新的半徑值?
- 均值平移動態帶寬方法如何在不對半徑進行硬編碼的情況下正確找到質心?
- 在均值平移算法中使用固定半徑有什麼限制?
查看 EITC/AI/MLP Machine Learning with Python 中的更多問題和解答