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