Om 'n opgeleide klassifiseerder in Python te piekel deur die 'piekel'-module te gebruik, kan ons 'n paar eenvoudige stappe volg. Pickling stel ons in staat om 'n voorwerp te serialiseer en dit in 'n lêer te stoor, wat dan gelaai en later gebruik kan word. Dit is veral nuttig wanneer ons 'n opgeleide masjienleermodel, soos 'n regressieklassifiseerder, wil stoor vir toekomstige gebruik sonder dat dit nodig is om dit elke keer weer op te lei.
Eerstens moet ons die 'piekel'-module in ons Python-skrif invoer:
python import pickle
Vervolgens moet ons ons klassifiseerder oplei en die opgeleide model verkry. Kom ons neem aan ons het reeds 'n regressieklassifiseerder opgelei en gestoor in 'n veranderlike genaamd 'regressie_model'.
Om die opgeleide model te piekel, kan ons die 'pickle.dump()'-funksie gebruik. Hierdie funksie neem twee parameters: die voorwerp wat ons wil piekel (in hierdie geval, die opgeleide klassifiseerder), en die lêervoorwerp waar ons die gepekelde voorwerp wil stoor. Ons kan 'n lêer in skryf-binêre modus oopmaak deur die 'open()'-funksie te gebruik.
python with open('regression_model.pkl', 'wb') as file: pickle.dump(regression_model, file)
In die bogenoemde kode maak ons 'n lêer met die naam 'regression_model.pkl' oop in skryf-binêre modus ('wb') en gee dit as die tweede parameter na 'pickle.dump()'. Die opgeleide klassifiseerder, gestoor in die 'regression_model' veranderlike, word gepekel en in die lêer gestoor.
Nou het ons ons opgeleide klassifiseerder suksesvol gepekel. Ons kan dit terug in die geheue laai wanneer ons dit nodig het deur die 'pickle.load()'-funksie te gebruik.
python with open('regression_model.pkl', 'rb') as file: loaded_model = pickle.load(file)
In die bogenoemde kode maak ons die gepekelde lêer oop in lees binêre modus ('rb') en gee dit as die parameter na 'pickle.load()'. Die gepekelde voorwerp word in die 'loaded_model' veranderlike gelaai, wat gebruik kan word vir voorspelling of enige ander bewerkings.
Hier is 'n volledige voorbeeld wat die beits en laai van 'n opgeleide regressieklassifiseerder demonstreer:
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 die bostaande voorbeeld oefen ons eers 'n eenvoudige lineêre regressiemodel op deur die 'LinearRegression'-klas van die 'sklearn.linear_model'-module te gebruik. Ons piekel dan die opgeleide model na 'n lêer genaamd 'regression_model.pkl'. Later laai ons die gepekelde model vanaf die lêer en gebruik dit om die waarde vir 'n toetsinvoer 'X_test' te voorspel.
Deur die opgeleide klassifiseerder te beits en te laai, kan ons die model hergebruik sonder dat dit nodig is om dit weer op te lei, wat 'n aansienlike hoeveelheid tyd en berekeningshulpbronne kan bespaar.
Ander onlangse vrae en antwoorde t.o.v EITC/AI/MLP masjienleer met Python:
- Wat is die ondersteuningsvektormasjien (SVM)?
- Is die K naaste bure-algoritme goed geskik vir die bou van opleibare masjienleermodelle?
- Word SVM-opleidingsalgoritme algemeen gebruik as 'n binêre lineêre klassifiseerder?
- Kan regressie-algoritmes met deurlopende data werk?
- Is lineêre regressie veral geskik vir skaal?
- Hoe beteken verskuiwing dinamiese bandwydte pas die bandwydte-parameter aanpasbaar aan op grond van die digtheid van die datapunte?
- Wat is die doel daarvan om gewigte aan kenmerkstelle toe te ken in die implementering van die gemiddelde verskuiwing van dinamiese bandwydte?
- Hoe word die nuwe radiuswaarde bepaal in die gemiddelde verskuiwing dinamiese bandwydte benadering?
- Hoe hanteer die gemiddelde verskuiwing-dinamiese bandwydte-benadering om sentroïede korrek te vind sonder om die radius hard te kodeer?
- Wat is die beperking om 'n vaste radius in die gemiddelde skuifalgoritme te gebruik?
Bekyk meer vrae en antwoorde in EITC/AI/MLP Machine Learning with Python