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

โมเดลเชิงเส้น: การถดถอยและการจำแนกประเภท

ฝึกโมเดลการถดถอยเชิงเส้นและการถดถอยโลจิสติก

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

การถดถอยเชิงเส้น

LinearRegression ปรับเส้นตรง (หรือไฮเปอร์เพลน) ให้เข้ากับข้อมูลโดยลดความคลาดเคลื่อนกำลังสองน้อยที่สุด

from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

X, y = make_regression(n_samples=200, n_features=5, noise=10, random_state=0)
X_tr, X_te, y_tr, y_te = train_test_split(X, y, random_state=0)

model = LinearRegression().fit(X_tr, y_tr)
print("RMSE:", mean_squared_error(y_te, model.predict(X_te))**0.5)

สัมประสิทธิ์ของแบบจำลอง

หลังจากปรับแบบจำลองแล้ว ให้ตรวจสอบ coef_ (น้ำหนักของคุณลักษณะ) และ intercept_

from sklearn.linear_model import LinearRegression
import numpy as np

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

model = LinearRegression().fit(X, y)
print("Coef:", model.coef_)       # [2.]
print("Intercept:", model.intercept_)  # ~0

การถดถอยแบบริดจ์และลาสโซ

ริดจ์ (L2) และลาสโซ (L1) เพิ่มการทำให้เป็นระเบียบเพื่อป้องกันการปรับเข้ากับข้อมูลมากเกินไป โดย alpha จะควบคุมความเข้มของการทำให้เป็นระเบียบ

from sklearn.linear_model import Ridge, Lasso
from sklearn.datasets import make_regression

X, y = make_regression(n_features=20, noise=15, random_state=0)

ridge = Ridge(alpha=1.0).fit(X, y)
lasso = Lasso(alpha=0.1).fit(X, y)
print("Ridge coef[:5]:", ridge.coef_[:5])
print("Lasso coef[:5]:", lasso.coef_[:5])  # some are 0 (sparse)

การถดถอยโลจิสติก

LogisticRegression เป็นตัวจำแนกเชิงเส้นสำหรับปัญหาแบบทวิภาคหรือหลายคลาส แม้ชื่อจะสื่อว่าเป็นการถดถอย แต่แบบจำลองนี้ทำนายความน่าจะเป็นของแต่ละคลาส

from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

X, y = make_classification(random_state=0)
X_tr, X_te, y_tr, y_te = train_test_split(X, y, random_state=0)
model = LogisticRegression().fit(X_tr, y_tr)
print("Accuracy:", accuracy_score(y_te, model.predict(X_te)))

การถดถอยโลจิสติกหลายคลาส

กำหนด multi_class="multinomial" หรือใช้ค่าเริ่มต้นแบบหนึ่งเทียบกับส่วนที่เหลือสำหรับปัญหาที่มีตั้งแต่ 3 คลาสขึ้นไป

from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris

X, y = load_iris(return_X_y=True)
model = LogisticRegression(max_iter=200).fit(X, y)
print("Classes:", model.classes_)   # [0 1 2]
print("Accuracy:", model.score(X, y))

การปรับสเกลคุณลักษณะสำหรับแบบจำลองเชิงเส้น

ควรปรับสเกลคุณลักษณะสำหรับแบบจำลองเชิงเส้นเสมอ โดยเฉพาะเมื่อมีการทำให้เป็นระเบียบ คุณลักษณะที่ไม่ได้ปรับสเกลจะได้รับค่าปรับที่แตกต่างกันจนทำให้เข้าใจผิด

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression

pipe = Pipeline([
    ("scale", StandardScaler()),
    ("clf",   LogisticRegression())
])
pipe.fit(X_tr, y_tr)
print(pipe.score(X_te, y_te))

เส้นโค้งการเรียนรู้

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

from sklearn.model_selection import learning_curve
import numpy as np

train_sizes, train_scores, val_scores = learning_curve(
    LogisticRegression(), X, y, cv=5,
    train_sizes=np.linspace(0.1, 1.0, 5)
)
print("Val mean:", val_scores.mean(axis=1))

คะแนน R² สำหรับการถดถอย

r2_score วัดสัดส่วนของความแปรปรวนที่แบบจำลองอธิบายได้ ค่า 1.0 หมายถึงสมบูรณ์แบบ ส่วนค่า 0 หมายถึงแบบจำลองไม่ได้ดีไปกว่าการทำนายด้วยค่าเฉลี่ย

from sklearn.metrics import r2_score
from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression

X, y = make_regression(noise=20, random_state=0)
model = LinearRegression().fit(X, y)
print("R²:", r2_score(y, model.predict(X)))

คุณลักษณะพหุนาม

ใช้ PolynomialFeatures เพื่อปรับความสัมพันธ์แบบไม่เชิงเส้นด้วยแบบจำลองเชิงเส้น

from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import Pipeline
from sklearn.linear_model import LinearRegression
import numpy as np

X = np.array([[1],[2],[3],[4],[5]])
y = np.array([1, 4, 9, 16, 25])  # y = x^2

pipe = Pipeline([
    ("poly", PolynomialFeatures(degree=2)),
    ("lr",   LinearRegression())
])
pipe.fit(X, y)
print(pipe.predict([[6]]))   # ~36

SGDClassifier และ SGDRegressor

การไล่ระดับแบบสุ่มสามารถรองรับชุดข้อมูลขนาดใหญ่มาก ซึ่งตัวแก้ปัญหามาตรฐานใช้เวลานานเกินไป

from sklearn.linear_model import SGDClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.datasets import make_classification

X, y = make_classification(n_samples=100_000, random_state=0)
pipe = Pipeline([("sc", StandardScaler()), ("sgd", SGDClassifier())])
pipe.fit(X, y)
print(pipe.score(X, y))

เส้นทางการทำให้เป็นระเบียบ

เปลี่ยนค่า alpha ไปตามตารางค่าด้วย RidgeCV/LassoCV ซึ่งจะเลือกค่า alpha ที่ดีที่สุดโดยอัตโนมัติผ่านการตรวจสอบไขว้

from sklearn.linear_model import RidgeCV, LassoCV
from sklearn.datasets import make_regression

X, y = make_regression(n_features=20, noise=10, random_state=0)
ridge = RidgeCV(alphas=[0.1, 1, 10]).fit(X, y)
print("Best alpha:", ridge.alpha_)

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

ความแตกต่างสำคัญระหว่างการถดถอยแบบริดจ์และลาสโซคืออะไร

สรุปทบทวน

ใช้ LinearRegression สำหรับการถดถอย และใช้ LogisticRegression สำหรับการจำแนกประเภท เพิ่ม Ridge/Lasso เพื่อทำให้เป็นระเบียบ ปรับสเกลคุณลักษณะเสมอ ใช้ PolynomialFeatures สำหรับปัญหาแบบไม่เชิงเส้น และประเมินผลด้วย r2_score (การถดถอย) หรือ accuracy_score (การจำแนกประเภท)

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

บทเรียน “โมเดลเชิงเส้น: การถดถอยและการจำแนกประเภท” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “โมเดลเชิงเส้น: การถดถอยและการจำแนกประเภท”

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

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

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

บทเรียน “โมเดลเชิงเส้น: การถดถอยและการจำแนกประเภท” ใช้เวลานานแค่ไหน

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

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

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

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

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