You are on page 1of 16

Người thực hiện : NGUYỄN THỊ HỒNG NHUNG_MSSV: 522202111217

Chapter 41 (1 – 16): In Depth: Naive Bayes Classification


Ý nghĩa lệnh Chạy lệnh Giải thích lệnh
[1] Thiết lập  %matplotlib inline: lệnh này được
Notebook để vẽ sử dụng để hiển thị biểu đồ
biểu đồ (plot) và Matplotlib.
nhập các gói  import numpy as np: Import thư
(packages) cần viện NumPy với tên viết tắt là np.
thiết.  import matplotlib.pyplot as plt:
nhập mô-đun pyplot từ thư viện
Matplotlib và đặt tên viết tắt là plt.
 import seaborn as sns: Nhập thư
viện Seaborn và đặt tên viết tắt là
sns.
 plt.style.use('seaborn-whitegrid'):
thiết lập kiểu trang trí cho đồ thị
bằng seaborn, kiểu trang trí
whitegrid thể hiện một lưới màu
trắng được thêm vào phía sau đồ
thị để giúp định rõ điểm dữ liệu.
Gaussian Naive Bayes
[2] Tạo dữ liệu  from sklearn.datasets import
cho Gaussian make_blobs: Import hàm
naive Bayes make_blobs từ module
classification và sklearn.datasets để tạo dữ liệu.
sau đó vẽ biểu  X, y = make_blobs(100, 2,
đồ scatter. centers=2, random_state=2,
cluster_std=1.5): tạo ra một tập dữ
liệu gồm 100 dòng, 2 cột, dữ liệu
được chia thành 2 cụm (centers=2),
random_state=2 nghĩa là đặt seed
cho quá trình sinh dữ liệu giúp tái
tạo kết quả ban đầu nếu cần, ở đây
đang đặt là số 2, và cluster_std=1.5
là độ lệch chuẩn của các cụm
(centers) dữ liệu là 1.5. Gán dữ liệu
được tạo vào biến X, mỗi hàng của
X đại diện cho một sample, và mỗi
cột đại diện cho một feature của
sample đó. Biến y chứa label của
từng sample tương ứng với mỗi
center của dữ liệu.
 plt.scatter(X[:, 0], X[:, 1], c=y,
s=50, cmap='RdBu'): dùng hàm
plt.scatter() trong thư viện
matplotlib để vẽ biểu đồ scatter với
trục hoành chứa các giá trị của cột
0 và cột 1 từ mảng X, X là một ma
trận 2 chiều, X[:, 0] là lấy tất cả các
dòng trong cột đầu tiên và X[:, 1]
lấy tất cả các dòng trong cột thứ
hai; c=y: c (color) chỉ định màu sắc
các điểm dữ liệu dựa trên giá trị
của biến y (label); s=50 là kích
thước của mỗi điểm trên biểu đồ
scatter là 50; cmap='RdBu' là mã
màu được sử dụng để tô màu các
điểm dữ liệu, RdBu là đang sử
dụng là màu đỏ và màu xanh da
trời.
[3] Sử dụng mô  from sklearn.naive_bayes import
hình Gaussian GaussianNB: Import mô hình
Naive Bayes và Gaussian Naive Bayes từ thư viện
huấn luyện dựa scikit-learn.
trên dữ liệu đã  model = GaussianNB(): khởi động
tạo. mô hình GaussianNB, đặt tên là
model.
 model.fit(X, y): đưa model vào để
fit dữ liệu X (là một ma trận) và y (là
một label).
[4] Sử dụng mô  rng =
hình Gaussian np.random.RandomState(0): Tạo
Naive Bayes đã object mới có tên là rng chứa các
được huấn luyện số ngẫu nhiên từ thư viện numpy,
để dự đoán label gán tên ghi nhớ (seed) là 0.
cho các dữ liệu  Xnew = [-6, -14] + [14, 18] *
mới. rng.rand(2000, 2): Tạo object có
tên là Xnew, là một ma trận có kích
thức 2000 dòng và 2 cột chứa các
điểm dữ liệu mới, mỗi điểm dữ liệu
mới sẽ có 2 chiều. Trong đó, giá trị
của ma trận được tạo ra ngẫu
nhiên với các giá trị nằm trong
khoảng từ 0 đến 1 bằng cách sử
dụng rng.rand(2000, 2), sau đó, mỗi
giá trị trong ma trận sẽ nhân với ma
trận [14, 18] và cộng với ma trận [-
6, -14].
 ynew = model.predict(Xnew): sử
dụng model đã được huấn luyện để
dự đoán giá trị đầu ra dựa trên dữ
liệu đầu vào mới Xnew. Kết quả
được gán vào biến ynew.
[5] vẽ một biểu  plt.scatter(X[:, 0], X[:, 1], c=y,
đồ scatter với dữ s=50, cmap='RdBu'): dùng hàm
liệu ban đầu X và plt.scatter() trong thư viện
dữ liệu mới Xnew matplotlib để vẽ biểu đồ scatter với
dựa trên các trục hoành chứa các giá trị của cột
label tương ứng 0 và cột 1 từ mảng X, X là một ma
y và ynew. trận 2 chiều, X[:, 0] là lấy tất cả các
hàng trong cột đầu tiên và X[:, 1]
lấy tất cả các hàng trong cột thứ
hai; c=y: c (color) chỉ định màu sắc
các điểm dữ liệu dựa trên giá trị
của biến y (label); s=50: Kích thước
của mỗi điểm trên biểu đồ scatter là
50; cmap='RdBu': Mã màu được sử
dụng để tô màu các điểm dữ liệu;
RdBu là đang sử dụng là màu đỏ
và màu xanh da trời.
 lim = plt.axis(): khai giá trị giới hạn
cận dưới và giá trị giới hạn cận trên
trong biến lim.
 plt.scatter(Xnew[:, 0], Xnew[:, 1],
c=ynew, s=20, cmap='RdBu',
alpha=0.1): dùng hàm plt.scatter()
trong thư viện matplotlib để vẽ biểu
đồ scatter với trục hoành chứa các
giá trị của cột 0 và cột 1 từ mảng
Xnew, Xnew là một ma trận 2 chiều,
Xnew[:, 0] là lấy tất cả các hàng
trong cột đầu tiên và Xnew[:, 1] lấy
tất cả các hàng trong cột thứ hai;
c=y: c (color) chỉ định màu sắc các
điểm dữ liệu dựa trên giá trị của
biến ynew (label); s=20: Kích thước
của mỗi điểm trên biểu đồ scatter là
20; cmap='RdBu': Mã màu được sử
dụng để tô màu các điểm dữ liệu;
RdBu là đang sử dụng là màu đỏ
và màu xanh da trời, alpha = 0.1 là
độ trong suốt của mỗi điểm trên
biểu đồ scatter là 0.1.
 plt.axis(lim): thiết lập lại giới hạn
của trục x và trục y với giá trị giới
hạn tham chiếu từ biến lim.
[6] sử dụng hàm  yprob =
predict_proba() model.predict_proba(Xnew): sử
của mô hình dụng mô hình đã được huấn luyện
model để tính “model” để tính xác suất của các
xác suất của các classes cho dữ liệu mới Xnew. Hàm
classes cho dữ predict_proba() trả về ma trận xác
liệu mới Xnew. suất, trong đó mỗi hàng tương ứng
với một sample trong Xnew, và mỗi
cột tương ứng với một class. Do
đó, yprob là một ma trận có kích
thước (số sample, số class) chứa
các giá trị xác suất dự đoán.
 yprob[-8:].round(2): chọn 8 dòng
cuối cùng của ma trận xác suất
yprob, và làm tròn các giá trị xác
suất đến hai chữ số thập phân
bằng cách sử dụng phương thức
round(2).
Multinomial Naive Bayes (Example: Classifying Text)
[7] tải dữ liệu từ  from sklearn.datasets import
bộ dữ liệu "20 fetch_20newsgroups: import hàm
Newsgroups" (20 fetch_20newsgroups từ module
nhóm bài viết) sklearn.datasets.
bằng các sử  data = fetch_20newsgroups(): sử
dụng hàm dụng hàm fetch_20newsgroups()
fetch_20newsgro để tải dữ liệu từ bộ dữ liệu "20
ups() từ Newsgroups". Dữ liệu này bao gồm
sklearn.datasets một tập hợp các bài viết từ 20
và xem nhóm newsgroup.
target_names  data.target_names: Sau khi tải dữ
trong bộ dữ liệu liệu, data sẽ chứa một số thuộc
"20 tính, trong đó target_names là một
Newsgroups". danh sách chứa tên của các nhóm
trong bộ dữ liệu "20 Newsgroups".
Cụ thể, mỗi phần tử trong danh
sách này sẽ là tên của một nhóm
bài viết.

[8] tải một số  categories = ['talk.religion.misc',


nhóm bài viết cụ 'soc.religion.christian',
thể từ dữ liệu “20 'sci.space', 'comp.graphics']: Tạo
Newsgruop”. object có tên là categories, chứa
danh sách các nhóm bài viết muốn
tải xuống là 'talk.religion.misc',
'soc.religion.christian', 'sci.space',
'comp.graphics' trong bộ dữ liệu "20
Newsgroups".
 train =
fetch_20newsgroups(subset='trai
n', categories=categories):
subset='train' là tải dữ liệu huấn
luyện (train) của bộ dữ liệu "20
Newsgroups". Tham số
categories=categories tải các nhóm
bài viết trong danh sách categories.
Kết quả được lưu vào biến train.
 test =
fetch_20newsgroups(subset='tes
t', categories=categories):
subset='test' là tải dữ liệu kiểm tra
(test) của bộ dữ liệu "20
Newsgroups". Tham số
categories=categories tải các nhóm
bài viết trong danh sách categories.
Kết quả được lưu vào biến test.
[9] Xem kết quả  print(train.data[5][48:]): xem kết
của bài viết được quả của bài viết thứ 6 trong dữ liệu
chọn trong dữ huấn luyện của bộ dữ liệu "20
liệu huấn luyện Newsgroups", bắt đầu từ ký tự thứ
(train.data) của 49 trở đi.
bộ dữ liệu 20
Newsgruops.

[10] sử dụng  from


vector TF-IDF và sklearn.feature_extraction.text
tạo một pipeline import TfidfVectorizer: Import
gắn nó với một class TfidfVectorizer từ module
multinomial naive sklearn.feature_extraction.text.
Bayes. TfidfVectorizer là một công cụ trong
scikit-learn để chuyển đổi văn bản
thành ma trận TF-IDF.
 from sklearn.naive_bayes import
MultinomialNB: Import class
MultinomialNB từ module
sklearn.naive_bayes.
MultinomialNB là một mô hình
Naive Bayes dùng cho dữ liệu có
phân phối đa thức.
 from sklearn.pipeline import
make_pipeline: Import hàm
make_pipeline() từ module
sklearn.pipeline. make_pipeline là
một tiện ích trong scikit-learn giúp
xây dựng một luồng xử lý dữ liệu tự
động.
 model =
make_pipeline(TfidfVectorizer(),
MultinomialNB()):Tạo một pipeline
bằng cách kết hợp TfidfVectorizer
và MultinomialNB trong một chuỗi.
Có nghĩa là dữ liệu sẽ thể hiện
dưới dạng TF-IDF và sau đó sẽ
được sử dụng để huấn luyện mô
hình Naive Bayes dựa trên phân
phối đa thức.
[11] huấn luyện  model.fit(train.data, train.target):
một mô hình lệnh này sử dụng dữ liệu huấn
phân loại văn luyện (train.data) và nhãn tương
bản sử dụng dữ ứng (train.target) để huấn luyện mô
liệu huấn luyện hình phân loại văn bản. Trong đó,
(train data) và train.data là danh sách các chuỗi
sau đó sử dụng văn bản, mỗi chuỗi là một bài viết
mô hình đã được trong tập huấn luyện, còn
huấn luyện để dự train.target là mảng chứa các target
đoán target cho tương ứng với từng bài viết trong
dữ liệu kiểm tra train.data. Cụ thể, train.target[i] là
(test data). nhãn của bài viết train.data[i].
 labels = model.predict(test.data):
Sau khi mô hình đã được huấn
luyện, sử dụng model để dự đoán
labels cho dữ liệu kiểm tra
(test.data). labels là mảng chứa các
nhãn được dự đoán bởi mô hình
cho từng bài viết trong test.data. Cụ
thể, labels[i] là nhãn được dự đoán
cho bài viết test.data[i].
[12] vẽ biểu đồ  from sklearn.metrics import
trực quan về các confusion_matrix: Import hàm
dự đoán của mô confusion_matrix từ module
hình phân loại sklearn.metrics. Hàm này được sử
văn bản và so dụng để tính ma trận nhầm lẫn.
sánh với nhãn  mat =
thực tế. confusion_matrix(test.target,
labels): tính ma trận nhầm lẫn
bằng cách so sánh nhãn thực tế
(test.target) và nhãn được dự đoán
(labels) từ mô hình. Ma trận này
chứa số lượng các trường hợp
được phân loại đúng và sai trong
từng phân loại.
 sns.heatmap(mat.T, square=True,
annot=True, fmt='d', cbar=False,
xticklabels=train.target_names,
yticklabels=train.target_names,
cmap='Blues'): Vẽ biểu đồ
heatmap của ma trận nhầm lẫn.
Các tham số: mat.T: Ma trận nhầm
lẫn được chuyển vị (transpose)
trước khi vẽ để đảm bảo rằng nhãn
thực tế sẽ hiển thị trên trục x và
nhãn được dự đoán sẽ hiển thị trên
trục y; square=True: Đảm bảo rằng
ô vuông của heatmap có kích
thước bằng nhau; annot=True: Hiển
thị giá trị của từng ô trên heatmap;
fmt='d': Định dạng của giá trị được
hiển thị là số nguyên; cbar=False:
Ẩn thanh màu để chỉ định giá trị
tương ứng với màu sắc;
xticklabels=train.target_names,
yticklabels=train.target_names: Gán
nhãn trục x và trục y của heatmap
bằng tên của các nhóm bài viết từ
train.target_names; cmap='Blues':
Sử dụng màu xanh lam (Blues) cho
heatmap.
 plt.xlabel('true label'): đặt nhãn
cho trục x với tên là true label.
 plt.ylabel('predicted label'): đặt
nhãn cho trục y với tên là predicted
label.
[13] hàm  định nghĩa hàm
predict_category( predict_category(s, train=train,
) nhận vào một model=model) như sau: s là một
chuỗi văn bản và chuỗi văn bản mà chúng ta muốn
trả về label của dự đoán label của nó; đối số train là
nhóm bài viết mà dữ liệu huấn luyện trước đó được
mô hình dự đoán sử dụng để huấn luyện mô hình,
cho chuỗi đó. được đặt là train; đối số model là
mô hình phân loại văn bản đã được
huấn luyện trước đó, được đặt là
model.
 pred = model.predict([s]): hàm
này dự đoán nhãn của chuỗi văn
bản s bằng cách sử dụng model đã
được huấn luyện trước đó. predict()
của mô hình yêu cầu đầu vào là
một danh sách các mẫu, chúng ta
truyền [s], nghĩa là danh sách chứa
một chuỗi văn bản duy nhất s.
 return
train.target_names[pred[0]]: Kết
quả trả về của hàm là tên của nhóm
bài viết mà mô hình dự đoán cho
chuỗi văn bản s. Sử dụng
train.target_names để xác định tên
của nhóm bài viết, một danh sách
chứa tên của các nhóm bài viết
trong tập huấn luyện. pred[0] là
nhãn được dự đoán bởi mô hình,
sử dụng nhãn này như một chỉ mục
để lấy tên của nhóm bài viết tương
ứng từ danh sách
train.target_names.
[14] sử dụng  predict_category() để dự đoán
hàm nhãn của chuỗi văn bản “sending
predict_category( a payload to the ISS”. Cụ thể, nó
) để dự đoán truyền chuỗi văn bản này vào hàm
nhãn của chuỗi predict_category() để thực hiện việc
văn bản dự đoán nhãn và thể hiện kết quả
là “sci.space”.
[15] sử dụng  predict_category() để dự đoán
hàm nhãn của chuỗi văn bản
predict_category( “discussing the existence of
) để dự đoán God”. Cụ thể, nó truyền chuỗi văn
nhãn của chuỗi bản này vào hàm
văn bản predict_category() để thực hiện việc
dự đoán nhãn và thể hiện kết quả
là “soc.religion.christian”.
[16] sử dụng  predict_category() để dự đoán
hàm nhãn của chuỗi văn bản
predict_category( “determining the screen resolution”.
) để dự đoán Cụ thể, nó truyền chuỗi văn bản
nhãn của chuỗi này vào hàm predict_category() để
văn bản thực hiện việc dự đoán nhãn và thể
hiện kết quả là “comp.graphics”.
Chapter 42 (1 – 13): In Depth: Linear Regression
[1] Thiết lập  %matplotlib inline: lệnh này được
Notebook để vẽ sử dụng để hiển thị biểu đồ
biểu đồ (plot) và Matplotlib.
nhập các gói  import matplotlib.pyplot as plt:
(packages) cần nhập mô-đun pyplot từ thư viện
thiết. Matplotlib và đặt tên viết tắt là plt.
 plt.style.use('seaborn-whitegrid'):
thiết lập kiểu trang trí cho đồ thị
bằng Seaborn, kiểu trang trí
whitegrid thể hiện một lưới màu
trắng được thêm vào phía sau đồ
thị để giúp định rõ điểm dữ liệu.
 import numpy as np: Import thư
viện NumPy với tên viết tắt là np.
Simple Linear Regression
[2] Vẽ biểu đồ  rng =
scatter để trực np.random.RandomState(1): Tạo
quan hóa mối object mới có tên là rng chứa các
quan hệ tuyến số ngẫu nhiên từ thư viện numpy,
tính giữa x và y, gán tên ghi nhớ (seed) là 1.
cùng với sự biến  x = 10 * rng.rand(50): Tạo một
động ngẫu nhiên mảng x gồm 50 phần tử với các giá
trong dữ liệu. trị ngẫu nhiên có phân phối đều
trong khoảng từ 0 đến 1 bằng cách
sử dụng rng.rand(50), sau đó mỗi
phần tử được nhân cho 10.
 y = 2 * x - 5 + rng.randn(50): Tạo
một mảng y tương ứng với mảng x
với một mối quan hệ tuyến tính
được định nghĩa bởi phương trình y
= 2x - 5, cộng thêm một lượng
nhiễu Gaussian ngẫu nhiên bằng
hàm rng.rand(50).
 plt.scatter(x, y): Vẽ biểu đồ scatter
với các điểm dữ liệu được cho bởi
các cặp giá trị (x, y).
[3] Tạo ra một  from sklearn.linear_model import
mô hình hồi quy LinearRegression: Import
tuyến tính đơn LinearRegression từ module
biến và vẽ đường sklearn.linear_model.
hồi quy tương LinearRegression là một mô hình
ứng trên biểu đồ hồi quy tuyến tính.
scatter đã được  model =
tạo trước đó. LinearRegression(fit_intercept=T
rue): khởi động mô hình
LinearRegression, đặt tên là
model. Tham số fit_intercept=True
chỉ định rằng mô hình có hệ số
chặn (intercept).
 model.fit(x[:, np.newaxis], y):
Huấn luyện mô hình hồi quy tuyến
tính trên dữ liệu. x[:, np.newaxis]
được sử dụng để chuyển đổi mảng
x thành một ma trận 2 chiều. y là
nhãn (target) tương ứng với dữ
liệu.
 xfit = np.linspace(0, 10, 1000):
Tạo một mảng xfit gồm 1000 phần
tử có giá trị trong khoảng từ 0 đến
10.
 yfit = model.predict(xfit[:,
np.newaxis]): Sử dụng mô hình đã
được huấn luyện để dự đoán giá trị
yfit tương ứng với các giá trị xfit.
xfit[:, np.newaxis] được sử dụng để
chuyển xfit thành một ma trận 2
chiều.
 plt.scatter(x, y): Vẽ biểu đồ scatter
của dữ liệu ban đầu với các điểm
dữ liệu được biểu diễn bởi các cặp
giá trị (x, y).
 plt.plot(xfit, yfit): Vẽ đường hồi
quy tuyến tính trên biểu đồ scatter
với các dữ liệu được biểu diễn bởi
các cặp giá trị (xfit, yfit).
[4] xem kết quả  print("Model slope: ",
hệ số góc và hệ model.coef_[0]): sử dụng lệnh này
số chặn của mô để xem kết quả hệ số góc (slope)
hình tuyến tính của mô hình tuyến tính.
đơn biến.  print("Model intercept:",
model.intercept_): sử dụng lệnh
này để xem kết quả hệ số chặn
(intercept) của mô hình tuyến tính.
[5] Tạo dữ liệu X,  rng =
y; huấn luyện mô np.random.RandomState(1): Tạo
hình hồi quy object mới có tên là rng chứa các
tuyến tính đa số ngẫu nhiên từ thư viện numpy,
biến và xem kết gán tên ghi nhớ (seed) là 1.
quả hệ số góc và  X = 10 * rng.rand(100, 3): Tạo
hệ số chặn của object có tên là X, dùng hàm
mô hình tuyến rng.rand() để tạo một ma trận có
tính. 100 dòng và 3 cột gồm các số ngẫu
nhiên có giá trị từ 0 đến 1, sau đó
nhân các giá trị này với 10.
 y = 0.5 + np.dot(X, [1.5, -2., 1.]):
tạo ra một mảng y có kích thước
100 dòng, trong đó các phần tử của
mảng y được tính bằng cách thực
hiện tổng của các phép nhân tương
ứng của các cột trong ma trận X với
các phần tử tương ứng trong vectơ
hệ số [1.5, -2., 1.], sau đó cộng
thêm với giá trị hằng số là 0.5.
 model.fit(X, y): Huấn luyện mô
hình hồi quy tuyến tính trên dữ liệu
X và y.
 print(model.intercept_): sử dụng
lệnh này để xem kết quả hệ số
chặn (intercept) của mô hình tuyến
tính.
 print(model.coef_): sử dụng lệnh
này để xem kết quả hệ số góc
(coefficients) của mô hình tuyến
tính (trường hợp này là có 3 hệ số).
Polynomial Basis Functions
[6] Sử dụng hàm  from sklearn.preprocessing
Polynomial import PolynomialFeatures:
Features() được Import PolynomialFeatures từ
xây dựng trong sklearn.preprocessing.
Scikit-Learn để  x = np.array([2, 3, 4]): tạo object
tạo hàm mũ. có tên là x, là một array với list gồm
3 phần tử là 2, 3, 4.
 poly = PolynomialFeatures(3,
include_bias=False): kích hoạt
model bằng cách sử dụng
PolynomialFeatures() với mũ là 3,
dữ liệu chứa trong object có tên là
poly. include_bias=False để loại bỏ
đặc trưng hằng số.
 poly.fit_transform(x[:, None]):
Thực hiện chuyển đổi feature ban
đầu x thành các feature đa thức
bậc 3 bằng cách sử dụng phương
thức fit_transform của đối tượng
PolynomialFeatures. x[:, None]
được sử dụng để biến đổi x từ một
mảng 1 chiều thành một mảng 2
chiều với một cột.
[7] dữ liệu được  from sklearn.pipeline import
chuyển đổi thành make_pipeline: import hàm
dạng đa thức bậc make_pipeline từ module pipeline
7 bằng trong thư viện sklearn.
PolynomialFeatur make_pipeline được sử dụng để
es, sau đó áp tạo ra một chuỗi các bước xử lý dữ
dụng mô hình hồi liệu hoặc mô hình hóa dữ liệu,
quy tuyến tính được thực hiện tuần tự.
(LinearRegressio  poly_model =
n) lên dữ liệu đã make_pipeline(PolynomialFeatur
được chuyển đổi. es(7),
LinearRegression()): lệnh này để
khởi động mô hình,
PolynomialFeatures(7) với mũ là 7.
LinearRegression() thực hiện huấn
luyện một mô hình hồi quy tuyến
tính trên các feature được tạo ra từ
PolynomialFeatures(7).
[8] Tạo dữ liệu x,  rng =
y; huấn luyện mô np.random.RandomState(1): Tạo
hình và dự đoán object mới có tên là rng chứa các
giá trị của y dựa số ngẫu nhiên từ thư viện numpy,
trên dữ liệu xfit, gán tên ghi nhớ (seed) là 1.
sau đó vẽ đồ thị  x = 10 * rng.rand(50): Tạo một
để trực quan hóa mảng x gồm 50 phần tử với các giá
mô hình trên dữ trị ngẫu nhiên có phân phối đều
liệu. trong khoảng từ 0 đến 1 bằng cách
sử dụng rng.rand(50), sau đó mỗi
phần tử được nhân cho 10.
 y = np.sin(x) + 0.1 *
rng.randn(50): tạo ra một mảng y
tương ứng với x, với mỗi điểm dữ
liệu x, y được tính bằng giá trị của
hàm sin(x) cộng với một lượng
nhiễu được tạo ra từ phân phối
chuẩn (Gaussian) với mean bằng 0
và độ lệch chuẩn là 0.1.
 poly_model.fit(x[:, np.newaxis],
y): huấn luyện mô hình poly_model
trên dữ liệu x và y. x được chuyển
thành một mảng hai chiều bằng
cách sử dụng np.newaxis.
 yfit = poly_model.predict(xfit[:,
np.newaxis]): dự đoán giá trị của y
dựa trên dữ liệu xfit bằng cách sử
dụng mô hình đã được huấn luyện.
 plt.scatter(x, y): vẽ biểu đồ phân
tán của dữ liệu x và y.
 plt.plot(xfit, yfit): vẽ đường cong dự
đoán (yfit) trên dữ liệu xfit.
Gaussian Basis Functions
[9] sử dụng một  from sklearn.base import
mô hình hồi quy BaseEstimator,
tuyến tính với TransformerMixin: import 2 class
các feature được BaseEstimator, TransformerMixin từ
tạo ra từ phân module base trong thư viện scikit-
phối Gauss, sau learn.
đó vẽ đồ thị để  gauss_model =
trực quan hóa make_pipeline(GaussianFeatures
mô hình trên dữ (20),
liệu. LinearRegression()): lệnh này để
khởi động mô hình,
GaussianFeatures(20) tạo ra các
feature từ phân phối Gauss với mũ
là 20. LinearRegression() thực hiện
huấn luyện một mô hình hồi quy
tuyến tính trên các feature được tạo
ra từ phân phối Gauss.
 gauss_model.fit(x[:, np.newaxis],
y): huấn luyện mô hình
gauss_model trên dữ liệu x và y. x
được chuyển thành một mảng hai
chiều bằng cách sử dụng
np.newaxis.
 yfit = gauss_model.predict(xfit[:,
np.newaxis]): dự đoán giá trị của y
dựa trên dữ liệu xfit bằng cách sử
dụng mô hình đã được huấn luyện.
 plt.scatter(x, y): vẽ biểu đồ phân
tán của dữ liệu x và y.
 plt.plot(xfit, yfit): vẽ đường cong
dự đoán (yfit) trên dữ liệu xfit.
 plt.xlim(0, 10): đặt giới hạn trục x
từ 0 đến 10 trong biểu đồ.
Regularization
[10] Tiến trình  model =
hiệu chỉnh make_pipeline(GaussianFeatures
regularization. (30),
LinearRegression()): lệnh này để
khởi động mô hình,
GaussianFeatures(30) tạo ra các
feature từ phân phối Gauss với mũ
30. LinearRegression() thực hiện
huấn luyện một mô hình hồi quy
tuyến tính trên các feature được tạo
ra từ phân phối Gauss.
 model.fit(x[:, np.newaxis], y):
Huấn luyện mô hình model trên dữ
liệu x và y. x được chuyển thành
mảng hai chiều với np.newaxis.
 plt.scatter(x, y): Vẽ biểu đồ phân
tán của dữ liệu x và y.
 plt.plot(xfit, model.predict(xfit[:,
np.newaxis])): Vẽ đường dự đoán
của mô hình trên dữ liệu mới xfit.
Dự đoán được thực hiện bằng cách
sử dụng model.predict().
 plt.xlim(0, 10): Đặt giới hạn trên
trục x từ 0 đến 10 để hiển thị một
phần của dữ liệu.
 plt.ylim(-1.5, 1.5): Đặt giới hạn trên
trục y từ -1.5 đến 1.5 để hiển thị
một phần của dữ liệu.
[11] huấn luyện  def basis_plot(model,
một mô hình hồi title=None): Định nghĩa hàm
quy tuyến tính và basis_plot() nhận đối số là một mô
trực quan hóa hình và một tiêu đề tùy chọn.
kết quả của mô  fig, ax = plt.subplots(2,
hình này thông sharex=True): dùng để tạo một
qua việc vẽ biểu hình vẽ (figure) với hai trục con
đồ scatter, (axes) được chia sẻ trục x.
đường dự đoán,  model.fit(x[:, np.newaxis], y):
centers, và Huấn luyện mô hình model trên dữ
coefficients. liệu x và y. x được chuyển thành
mảng hai chiều với np.newaxis.
 ax[0].scatter(x, y): Vẽ biểu đồ
scatter của cặp dữ liệu x và y.
 ax[0].plot(xfit,
model.predict(xfit[:,
np.newaxis])): Vẽ đường dự đoán
của mô hình trên dữ liệu mới xfit.
Dự đoán được thực hiện bằng cách
sử dụng model.predict().
 ax[0].set(xlabel='x', ylabel='y',
ylim=(-1.5, 1.5)): Đặt nhãn trục x,
trục y và đặt giới hạn trục y với cận
dưới là -1.5, và cận trên là 1.5.
 if title:
ax[0].set_title(title): đặt tiêu đề
cho trục con đầu tiên (ax[0]) bằng
tiêu đề được cung cấp.
 ax[1].plot(model.steps[0]
[1].centers_, model.steps[1]
[1].coef_): Vẽ biểu đồ của các
centers và hệ số góc (coefficients)
của mô hình. model.steps[0]
[1].centers_ để truy cập vào centers
của features Gauss, và
model.steps[1][1].coef_ để truy cập
vào các hệ số góc của mô hình hồi
quy tuyến tính.
 ax[1].set(xlabel='basis location',
ylabel='coefficient', xlim=(0, 10)):
Đặt nhãn cho trục x là "basis
location", nhãn cho trục y là
"coefficient", và giới hạn trục x từ 0
đến 10.
 model =
make_pipeline(GaussianFeatures
(30), LinearRegression()): lệnh
này để khởi động mô hình,
GaussianFeatures(30) tạo ra các
feature từ phân phối Gauss với mũ
30. LinearRegression() thực hiện
huấn luyện một mô hình hồi quy
tuyến tính trên các feature được tạo
ra từ phân phối Gauss.
 basis_plot(model): dùng hàm
basis_plot() để hiển thị biểu đồ của
mô hình.
Ridge Regression
[12] một tiến  from sklearn.linear_model import
trình Ridge: Import Ridge từ module
regularization sklearn.linear_model.
được nhắc đến là  model =
ridge regression make_pipeline(GaussianFeatures
để giảm (30), Ridge(alpha=0.1)): lệnh này
overfitting. để khởi động mô hình,
GaussianFeatures(30) tạo ra các
feature từ phân phối Gauss với mũ
30. Ridge(alpha=0.1) là mô hình
Ridge Regression với hệ số alpha
được đặt là 0.1.
 basis_plot(model, title='Ridge
Regression'): dùng hàm
basis_plot() để hiển thị biểu đồ của
mô hình, đặt tên cho tiêu đề của
biểu đồ là “Ridge Regression”.
Lasso Regression
[13] một tiến  from sklearn.linear_model import
trình Lasso: Import Lasso từ module
regularization sklearn.linear_model.
được nhắc đến là  model =
lasso regression make_pipeline(GaussianFeatures
giúp giảm (30), Lasso(alpha=0.001,
overfitting và làm max_iter=2000)): lệnh này để khởi
mô hình trở nên động mô hình,
thưa (sparse). GaussianFeatures(30) tạo ra các
feature từ phân phối Gauss với mũ
30. Lasso(alpha=0.1),
max_iter=2000) là mô hình Lasso
Regression với hệ số alpha được
đặt là 0.1 và số lần lặp tối đa là
2000.
 basis_plot(model, title='Lasso
Regression'): dùng hàm
basis_plot() để hiển thị biểu đồ của
mô hình, đặt tên cho tiêu đề của
biểu đồ là “Lasso Regression”.

You might also like