Python Academy · Lektion

scikit-learn-API:t: fit, transform, predict

Förstå estimatorgränssnittet och arbetsflödet för uppdelning i tränings- och testdata.

Lektion 1 av 413 steg

scikit-learn-API:t: fit, transform, predict är en gratis lektion i Python Academy på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Python Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Python Academy innehåller totalt 4 lektioner.

Vad är scikit-learn?

scikit-learn är det självklara Python-biblioteket för klassisk maskininlärning. Det tillhandahåller ett enhetligt API: varje estimator har fit(), och de flesta har predict() eller transform().

from sklearn.linear_model import LinearRegression
import numpy as np

X = np.array([[1],[2],[3],[4],[5]])
y = np.array([2, 4, 6, 8, 10])

model = LinearRegression().fit(X, y)
print(model.predict([[6]]))   # [12.]

Uppdelning i tränings- och testdata

Dela alltid upp data före träningen för att utvärdera hur väl modellen generaliserar till data den inte har sett.

from sklearn.model_selection import train_test_split
import numpy as np

X = np.random.rand(100, 5)
y = (X[:,0] > 0.5).astype(int)

X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)
print(X_train.shape, X_test.shape)   # (80,5) (20,5)

fit() – träning

estimator.fit(X, y) tränar modellen på X (features) och y (labels). För oövervakade metoder skickas endast X.

from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification

X, y = make_classification(n_samples=200, random_state=0)
model = LogisticRegression()
model.fit(X, y)
print("Trained:", model.classes_)

predict() och predict_proba()

predict(X) returnerar klasslabels och predict_proba(X) returnerar klasssannolikheter för klassificerare.

from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification

X, y = make_classification(random_state=0)
model = LogisticRegression().fit(X, y)

print(model.predict(X[:5]))          # [0 1 0 ...]
print(model.predict_proba(X[:2]))    # [[0.7 0.3] ...]

Transformers: fit och transform

Transformers (skalare, encoders) har fit(X) + transform(X). Anpassa alltid endast till träningsdata och transformera sedan både tränings- och testdata.

from sklearn.preprocessing import StandardScaler
import numpy as np

X_train = np.array([[1,2],[3,4],[5,6]])
X_test  = np.array([[2,3],[4,5]])

scaler = StandardScaler()
X_train_s = scaler.fit_transform(X_train)   # fit + transform
X_test_s  = scaler.transform(X_test)        # transform only (using train stats)

Pipeline

En Pipeline kedjar samman transformers och en estimator till ett enda objekt. Den förhindrar dataläckage genom att tillämpa transformationer korrekt inom korsvalideringen.

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC

pipe = Pipeline([
    ("scaler", StandardScaler()),
    ("clf", SVC())
])
pipe.fit(X_train, y_train)
print(pipe.score(X_test, y_test))

Noggrannhet och andra mått

Använd accuracy_score, f1_score och classification_report för att utvärdera klassificerare.

from sklearn.metrics import accuracy_score, classification_report

y_pred = model.predict(X_test)
print(accuracy_score(y_test, y_pred))
print(classification_report(y_test, y_pred))

Korsvalidering

cross_val_score utvärderar en modell med k-faldig korsvalidering utan att du behöver dela upp data manuellt.

from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification

X, y = make_classification(random_state=0)
scores = cross_val_score(LogisticRegression(), X, y, cv=5)
print(f"CV scores: {scores.mean():.3f} ± {scores.std():.3f}")

Justera hyperparametrar med GridSearchCV

GridSearchCV söker uttömmande igenom ett parameterrutnät med korsvalidering för att hitta de bästa hyperparametrarna.

from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC
from sklearn.datasets import make_classification

X, y = make_classification(random_state=0)
param_grid = {"C": [0.1, 1, 10], "kernel": ["rbf", "linear"]}
gs = GridSearchCV(SVC(), param_grid, cv=5)
gs.fit(X, y)
print(gs.best_params_, gs.best_score_)

Förbehandling: LabelEncoder och OneHotEncoder

Koda kategoriska labels med LabelEncoder och kategoriska features med OneHotEncoder eller ColumnTransformer.

from sklearn.preprocessing import LabelEncoder, OneHotEncoder
import numpy as np

le = LabelEncoder()
print(le.fit_transform(["cat","dog","cat","fish"]))   # [0 1 0 2]

ohe = OneHotEncoder(sparse_output=False)
print(ohe.fit_transform([["red"],["green"],["blue"]]))

Spara och läsa in modeller

Spara tränade modeller med joblib (snabbare än pickle för NumPy-arrayer).

import joblib
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification

X, y = make_classification(random_state=0)
model = LogisticRegression().fit(X, y)

joblib.dump(model, "model.joblib")
loaded = joblib.load("model.joblib")
print(loaded.predict(X[:3]))

Snabbtest

Varför bör du anropa scaler.fit() endast på träningsdata och inte på testdata?

Sammanfattning

scikit-learns enhetliga API: fit() tränar, predict() gör prediktioner och transform() förbehandlar. Använd Pipeline för att kedja steg. Dela upp data med train_test_split, utvärdera med cross_val_score och justera med GridSearchCV.

Gratis att börja

Lär dig Python med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
76
Lektioner
320

Vanliga frågor

Är lektionen ”scikit-learn-API:t: fit, transform, predict” gratis?

Ja – hela texten till ”scikit-learn-API:t: fit, transform, predict” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Python Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Python Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”scikit-learn-API:t: fit, transform, predict”?

Förstå estimatorgränssnittet och arbetsflödet för uppdelning i tränings- och testdata. Ni övar på Python Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Python Academy?

Du behöver inga förkunskaper. Utbildningen i Python Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.

Hur lång tid tar lektionen ”scikit-learn-API:t: fit, transform, predict”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Python Academy-lektionen?

Ja. Varje Python Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. scikit-learn-API:t: fit, transform, predict
  2. Linjärmodeller: regression och klassificering
  3. Trädbaserade modeller: beslutsträd och random forests
  4. Modelutvärdering och korsvalidering
← Tillbaka till Python Academy