Om een getrainde classifier in Python te pekelen met behulp van de 'pickle'-module, kunnen we een paar eenvoudige stappen volgen. Met beitsen kunnen we een object serialiseren en opslaan in een bestand, dat vervolgens kan worden geladen en later kan worden gebruikt. Dit is met name handig wanneer we een getraind machine learning-model, zoals een regressieclassificatie, willen opslaan voor toekomstig gebruik zonder dat we het elke keer opnieuw hoeven te trainen.
Eerst moeten we de 'pickle'-module importeren in ons Python-script:
python import pickle
Vervolgens moeten we onze classifier trainen en het getrainde model verkrijgen. Laten we aannemen dat we al een regressieclassificatie hebben getraind en deze hebben opgeslagen in een variabele genaamd 'regression_model'.
Om het getrainde model te pekelen, kunnen we de functie 'pickle.dump()' gebruiken. Deze functie heeft twee parameters nodig: het object dat we willen inmaken (in dit geval de getrainde classifier) en het bestandsobject waarin we het ingelegde object willen opslaan. We kunnen een bestand openen in binaire schrijfmodus met behulp van de functie 'open()'.
python with open('regression_model.pkl', 'wb') as file: pickle.dump(regression_model, file)
In de bovenstaande code openen we een bestand met de naam 'regression_model.pkl' in binaire schrijfmodus ('wb') en geven het als tweede parameter door aan 'pickle.dump()'. De getrainde classifier, opgeslagen in de variabele 'regression_model', wordt gebeitst en in het bestand opgeslagen.
Nu hebben we met succes onze getrainde classifier gebeitst. We kunnen het terug in het geheugen laden wanneer we het nodig hebben met behulp van de functie 'pickle.load()'.
python with open('regression_model.pkl', 'rb') as file: loaded_model = pickle.load(file)
In de bovenstaande code openen we het gebeitste bestand in binaire leesmodus ('rb') en geven het als parameter door aan 'pickle.load()'. Het gebeitste object wordt geladen in de variabele 'loaded_model', die kan worden gebruikt voor voorspelling of andere bewerkingen.
Hier is een compleet voorbeeld dat het beitsen en laden van een getrainde regressieclassificator demonstreert:
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)
In het bovenstaande voorbeeld trainen we eerst een eenvoudig lineair regressiemodel met behulp van de klasse 'LinearRegression' uit de module 'sklearn.linear_model'. Vervolgens zetten we het getrainde model in een bestand met de naam 'regression_model.pkl'. Later laden we het gebeitste model uit het bestand en gebruiken we het om de waarde voor een testinvoer 'X_test' te voorspellen.
Door de getrainde classificator te beitsen en te laden, kunnen we het model hergebruiken zonder het opnieuw te hoeven trainen, wat een aanzienlijke hoeveelheid tijd en rekenkracht kan besparen.
Andere recente vragen en antwoorden over EITC/AI/MLP Machine Learning met Python:
- Wat is de ondersteuningsvectormachine (SVM)?
- Is het K naaste buren-algoritme zeer geschikt voor het bouwen van trainbare machine learning-modellen?
- Wordt het SVM-trainingsalgoritme vaak gebruikt als een binaire lineaire classificator?
- Kunnen regressie-algoritmen werken met continue gegevens?
- Is lineaire regressie bijzonder geschikt voor schaalvergroting?
- Hoe past mean shift dynamische bandbreedte adaptief de bandbreedteparameter aan op basis van de dichtheid van de datapunten?
- Wat is het doel van het toekennen van gewichten aan feature sets in de mean shift dynamische bandbreedte-implementatie?
- Hoe wordt de nieuwe radiuswaarde bepaald in de dynamische bandbreedtebenadering met gemiddelde verschuiving?
- Hoe gaat de dynamische bandbreedtebenadering met gemiddelde verschuiving om met het correct vinden van zwaartepunten zonder de straal hard te coderen?
- Wat is de beperking van het gebruik van een vaste straal in het gemiddelde verschuivingsalgoritme?
Bekijk meer vragen en antwoorden in EITC/AI/MLP Machine Learning met Python