scikit-learn-rajapinta: fit, transform, predict
Ymmärtäkää estimaattorirajapinta ja opetus- ja testijoukon jakamisen työnkulku.
scikit-learn-rajapinta: fit, transform, predict on ilmainen Python Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Python Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Python Academy-kurssilla on yhteensä 4 oppituntia.
Mikä scikit-learn on
scikit-learn on Pythonin vakiintunut kirjasto perinteiseen koneoppimiseen. Se tarjoaa yhdenmukaisen ohjelmointirajapinnan: jokaisella estimaattorilla on fit()-metodi, ja useimmilla on predict()- tai transform()-metodi.
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.]Opetus- ja testijako
Jakakaa data aina ennen opettamista, jotta voitte arvioida, kuinka hyvin malli yleistyy aiemmin näkemättömään dataan.
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() — opettaminen
estimator.fit(X, y) opettaa mallin X:n (piirteiden) ja y:n (luokkien) avulla. Ohjaamattomissa menetelmissä välitetään vain 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() ja predict_proba()
predict(X) palauttaa luokkien tunnisteet ja predict_proba(X) luokkien todennäköisyydet luokittelijoille.
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] ...]Muuntimet: fit ja transform
Muuntimilla (skaalaimilla ja koodaimilla) on metodit fit(X) ja transform(X). Sovittakaa malli aina vain opetusdataan ja muuntakaa sitten sekä opetus- että testidata.
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
Pipeline ketjuttaa muuntimet ja estimaattorin yhdeksi olioksi. Se estää tietovuodon soveltamalla muunnoksia ristiinvalidoinnin sisällä oikein.
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))Tarkkuus ja muut mittarit
Käyttäkää luokittelijoiden arviointiin mittareita accuracy_score, f1_score ja classification_report.
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))Ristiinvalidointi
cross_val_score arvioi mallin k-jakoisella ristiinvalidoinnilla ilman, että dataa tarvitsee jakaa itse.
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}")Hyperparametrien viritys GridSearchCV:llä
GridSearchCV käy parametriruudukon tyhjentävästi läpi ristiinvalidoinnin avulla löytääkseen parhaat hyperparametrit.
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_)Esikäsittely: LabelEncoder ja OneHotEncoder
Koodatkaa kategoriset luokat LabelEncoder-luokalla ja kategoriset piirteet OneHotEncoder- tai ColumnTransformer-luokalla.
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"]]))Mallien tallentaminen ja lataaminen
Säilyttäkää opetetut mallit joblib-kirjastolla (se on NumPy-taulukoille pickleä nopeampi).
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]))Pikatarkistus
Miksi scaler.fit() pitäisi kutsua vain opetusdatalla eikä testidatalla?
Kertaus
scikit-learnin yhdenmukaisessa ohjelmointirajapinnassa fit() opettaa, predict() tekee ennusteita ja transform() esikäsittelee dataa. Käyttäkää Pipeline-luokkaa vaiheiden ketjuttamiseen. Jakakaa data train_test_split-funktiolla, arvioikaa se cross_val_score-funktiolla ja virittäkää hyperparametrit GridSearchCV-luokalla.
Opi Python tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 76
- Oppitunnit
- 320
Usein kysytyt kysymykset
Onko oppitunti ”scikit-learn-rajapinta: fit, transform, predict” ilmainen?
Kyllä – oppitunnin ”scikit-learn-rajapinta: fit, transform, predict” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Python Academy-kurssin, päivitä CoddyKit PROhon. Python Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”scikit-learn-rajapinta: fit, transform, predict”?
Ymmärtäkää estimaattorirajapinta ja opetus- ja testijoukon jakamisen työnkulku. Harjoittelet Python Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Python Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Python Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.
Kuinka kauan ”scikit-learn-rajapinta: fit, transform, predict”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Python Academy-oppitunnilla?
Kyllä. Jokainen Python Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- scikit-learn-rajapinta: fit, transform, predict
- Lineaariset mallit: regressio ja luokittelu
- Puupohjaiset mallit: päätöspuut ja satunnaismetsät
- Mallien arviointi ja ristivalidointi