Menu
CoddyTech

Trọng số là bằng chứng

Thuộc phần Học có giám sát trong hành trình Machine Learning của Coddy. Bài học 18 trên 58.

Điều gì khiến khách ghé thăm cửa hàng quyết định mua hàng? Chuẩn hóa các đặc trưng để mỗi trọng số tính theo độ lệch chuẩn, rồi đọc các trọng số như bằng chứng:

Biểu đồ thanh ngang gồm bốn trọng số đã chuẩn hóa. Hướng đến việc mua hàng, màu xanh dương: pages_viewed 0.87, minutes 0.12. Hướng xa việc mua hàng, màu cam: from_ad -0.30, price_seen -0.72

X_scaled = StandardScaler().fit_transform(visits)
model = LogisticRegression(max_iter=1000)
model.fit(X_scaled, bought)
print(np.round(model.coef_[0], 2))  # một hàng trọng số

Lệnh này in các trọng số theo thứ tự của các cột:

[ 0.87  0.12 -0.3  -0.72]

Dấu cho biết hướng: số dương đẩy về phía lớp 1, tức là mua; số âm đẩy ra xa. Độ lớn cho biết cường độ.

Việc chuẩn hóa giúp so sánh các độ lớn: nếu không chuẩn hóa, giá tính bằng xu sẽ có trọng số nhỏ hơn 100 lần so với giá tính bằng đô la.

challenge icon

Thử thách

Trung bình

Một ứng dụng học ngôn ngữ muốn biết những thói quen nào gắn liền với việc duy trì streak 30 ngày hoặc hoàn thành một khóa học. learners.csv chứa sáu đặc trưng và cả hai nhãn; chương trình đọc nhãn cần nghiên cứu. Phần code ban đầu chia và chuẩn hóa dữ liệu.

  1. Huấn luyện một mô hình LogisticRegression trên các hàng huấn luyện đã chuẩn hóa.
  2. In ra từng trọng số, từ lớn nhất đến nhỏ nhất (2 chữ số thập phân), kèm theo chiều tác động.
  3. In ra bằng chứng mạnh nhất, dù theo hướng nào.

Với một ứng dụng khác:

friends: 1.02, pushes toward yes
reminder_on: 0.42, pushes toward yes
age: 0.06, pushes toward yes
daily_goal_min: -0.11, pushes toward no
lessons_week1: -0.2, pushes toward no
night_owl: -0.64, pushes toward no
Strongest evidence: friends

Tự làm thử

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression

learners = pd.read_csv("learners.csv")
features = ["daily_goal_min", "friends", "reminder_on", "lessons_week1", "night_owl", "age"]
label = input()  # kept_streak hoặc finished_course
X_train, X_test, y_train, y_test = train_test_split(learners[features], learners[label], test_size=0.25, random_state=0)
scaler = StandardScaler()
X_train_s = scaler.fit_transform(X_train)

# Viết code của bạn bên dưới
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Học có giám sát

Tự luyện tập: Trình biên dịch Python online