โมเดลเชิงเส้น: การถดถอยและการจำแนกประเภท
ฝึกโมเดลการถดถอยเชิงเส้นและการถดถอยโลจิสติก
โมเดลเชิงเส้น: การถดถอยและการจำแนกประเภท เป็นบทเรียน 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]])) # ~36SGDClassifier และ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- API ของ scikit-learn: fit, transform, predict
- โมเดลเชิงเส้น: การถดถอยและการจำแนกประเภท
- โมเดลที่ใช้ต้นไม้: ต้นไม้ตัดสินใจและป่าสุ่ม
- การประเมินโมเดลและการตรวจสอบไขว้