0Pricing
Python Academy · บทเรียน

API ของ scikit-learn: fit, transform, predict

ทำความเข้าใจอินเทอร์เฟซของตัวประมาณค่าและกระบวนการแบ่งข้อมูลฝึก/ทดสอบ

API ของ scikit-learn: fit, transform, predict เป็นบทเรียน Python Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Python Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน

scikit-learn คืออะไร

scikit-learn เป็นไลบรารี Python ยอดนิยมสำหรับการเรียนรู้ของเครื่องแบบดั้งเดิม โดยมี API ที่สอดคล้องกัน: ตัวประมาณค่าทุกตัวมี fit() และส่วนใหญ่มี predict() หรือ 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.]

การแบ่งข้อมูลฝึกและทดสอบ

แบ่งข้อมูลก่อนฝึกโมเดลเสมอ เพื่อประเมินว่าโมเดลสามารถใช้งานกับข้อมูลที่ไม่เคยเห็นมาก่อนได้ดีเพียงใด

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() — การฝึกโมเดล

estimator.fit(X, y) ฝึกโมเดลด้วย X (ฟีเจอร์) และ y (ป้ายกำกับ) สำหรับวิธีการแบบไม่มีผู้สอน จะส่งเฉพาะ 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() และ predict_proba()

predict(X) ส่งคืนป้ายกำกับคลาส ส่วน predict_proba(X) ส่งคืนความน่าจะเป็นของคลาสสำหรับตัวจำแนก

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] ...]

ตัวแปลง: fit และ transform

ตัวแปลง (ตัวปรับสเกลและตัวเข้ารหัส) มี fit(X) + transform(X) เรียกใช้ fit กับข้อมูลฝึกเท่านั้น แล้วจึง transform ทั้งข้อมูลฝึกและข้อมูลทดสอบเสมอ

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 เชื่อมตัวแปลงและตัวประมาณค่าให้เป็นออบเจ็กต์เดียว ป้องกันข้อมูลรั่วไหลด้วยการใช้การแปลงภายในกระบวนการตรวจสอบไขว้อย่างถูกต้อง

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))

ความแม่นยำและตัวชี้วัดอื่น ๆ

ใช้ accuracy_score, f1_score และ 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))

การตรวจสอบไขว้

cross_val_score ประเมินโมเดลด้วยการตรวจสอบไขว้แบบ k-fold โดยไม่ต้องแบ่งข้อมูลด้วยตนเอง

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}")

การปรับไฮเปอร์พารามิเตอร์ด้วย GridSearchCV

GridSearchCV ค้นหาทุกค่าที่เป็นไปได้ในตารางพารามิเตอร์ด้วยการตรวจสอบไขว้ เพื่อหาไฮเปอร์พารามิเตอร์ที่ดีที่สุด

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_)

การเตรียมข้อมูล: LabelEncoder และ OneHotEncoder

เข้ารหัสป้ายกำกับประเภทข้อมูลด้วย LabelEncoder และเข้ารหัสฟีเจอร์ประเภทข้อมูลด้วย OneHotEncoder หรือ 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"]]))

การบันทึกและโหลดโมเดล

จัดเก็บโมเดลที่ฝึกแล้วด้วย joblib (ทำงานกับอาร์เรย์ NumPy ได้เร็วกว่า pickle)

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]))

ตรวจสอบความเข้าใจ

เหตุใดจึงควรเรียกใช้ scaler.fit() กับข้อมูลฝึกเท่านั้น ไม่ใช่ข้อมูลทดสอบ

สรุปทบทวน

API ที่สอดคล้องกันของ scikit-learn: fit() ใช้ฝึกโมเดล predict() ใช้ทำนาย และ transform() ใช้เตรียมข้อมูลล่วงหน้า ใช้ Pipeline เพื่อเชื่อมขั้นตอนต่าง ๆ แบ่งข้อมูลด้วย train_test_split ประเมินด้วย cross_val_score และปรับค่าด้วย GridSearchCV

คำถามที่พบบ่อย

บทเรียน “API ของ scikit-learn: fit, transform, predict” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “API ของ scikit-learn: fit, transform, predict” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Python Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “API ของ scikit-learn: fit, transform, predict”

ทำความเข้าใจอินเทอร์เฟซของตัวประมาณค่าและกระบวนการแบ่งข้อมูลฝึก/ทดสอบ คุณปฏิบัติ Python Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Python Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Python Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “API ของ scikit-learn: fit, transform, predict” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Python Academy นี้ได้ไหม

ได้ บทเรียน Python Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. API ของ scikit-learn: fit, transform, predict
  2. โมเดลเชิงเส้น: การถดถอยและการจำแนกประเภท
  3. โมเดลที่ใช้ต้นไม้: ต้นไม้ตัดสินใจและป่าสุ่ม
  4. การประเมินโมเดลและการตรวจสอบไขว้
← กลับไปที่ Python Academy