Train Test Split là gì?
Chia tách thử nghiệm đào tạo là một quy trình xác thực mô hình cho phép bạn mô phỏng cách mô hình của bạn sẽ hoạt động với dữ liệu mới.
Hướng dẫn này bao gồm
- Thủ tục tách bài kiểm tra tàu là gì?
- Cách sử dụng phân tách thử nghiệm đào tạo để điều chỉnh các mô hình trong Python
- Hiểu về sự đánh đổi giữa độ lệch và phương sai
Nếu bạn muốn làm theo, mã và hình ảnh được sử dụng trong hướng dẫn này có sẵn trên GitHub. Với điều đó, chúng ta hãy bắt đầu.
Quy trình phân chia thử nghiệm tàu hỏa là gì?
Chia tách thử nghiệm đào tạo là một quy trình xác thực mô hình cho phép bạn mô phỏng cách một mô hình sẽ hoạt động trên dữ liệu mới/chưa xem. Đây là cách quy trình hoạt động
1. sắp xếp dữ liệu
Đảm bảo dữ liệu của bạn được sắp xếp theo định dạng có thể chấp nhận được để phân tách thử nghiệm đào tạo. Trong scikit-learning, điều này bao gồm việc tách tập dữ liệu đầy đủ của bạn thành “Tính năng” và “Mục tiêu. ”
2. Chia nhỏ dữ liệu
Chia tập dữ liệu thành hai phần — tập huấn luyện và tập kiểm tra. Điều này bao gồm lấy mẫu ngẫu nhiên không thay thế khoảng 75% số hàng [bạn có thể thay đổi điều này] và đưa chúng vào tập huấn luyện của mình. 25 phần trăm còn lại được đưa vào bộ thử nghiệm của bạn. Lưu ý rằng màu sắc trong “Tính năng” và “Mục tiêu” cho biết dữ liệu của chúng sẽ đi đến đâu [“X_train,” “X_test,” “y_train,” “y_test”] cho một phân tách thử nghiệm đào tạo cụ thể.
3. Đào tạo người mẫu
Huấn luyện mô hình trên tập huấn luyện. Đây là “X_train” và “y_train” trong ảnh
4. Kiểm tra mô hình
Kiểm tra mô hình trên bộ thử nghiệm [“X_test” và “y_test” trong hình ảnh] và đánh giá hiệu suất
Thông tin thêm về Khoa học dữ liệu Hiểu về Boxpolot
Hậu quả của việc không sử dụng Train Test Split
Bạn có thể thử không sử dụng tách thử nghiệm đào tạo và thay vào đó đào tạo và kiểm tra mô hình trên cùng một dữ liệu. Tuy nhiên, tôi không khuyến nghị phương pháp này vì nó không mô phỏng cách một mô hình sẽ hoạt động trên dữ liệu mới. Nó cũng có xu hướng thưởng cho các mô hình quá phức tạp phù hợp với tập dữ liệu.
Các bước bên dưới tìm hiểu cách thức hoạt động của quy trình không nên làm này
1. sắp xếp dữ liệu
Đảm bảo dữ liệu của bạn được sắp xếp theo định dạng có thể chấp nhận được để phân tách thử nghiệm đào tạo. Trong scikit-learning, điều này bao gồm việc tách tập dữ liệu đầy đủ của bạn thành “Tính năng” và “Mục tiêu. ”
2. Đào tạo người mẫu
Huấn luyện mô hình về “Tính năng” và “Mục tiêu. ”
3. Kiểm tra mô hình
Kiểm tra mô hình trên “Tính năng” và “Mục tiêu” và đánh giá hiệu suất
Tôi muốn nhấn mạnh lại rằng việc huấn luyện trên toàn bộ tập dữ liệu và sau đó thử nghiệm trên cùng tập dữ liệu đó có thể dẫn đến trang bị thừa. Overfitting được định nghĩa trong hình bên dưới. Đường nguệch ngoạc màu xanh lục phù hợp nhất với dữ liệu huấn luyện. Vấn đề là nó có thể khớp quá mức trên dữ liệu huấn luyện, có nghĩa là nó có khả năng hoạt động kém hơn trên dữ liệu mới
Thông tin thêm về khoa học dữ liệu Cách sử dụng bảng Z và tạo bảng của riêng bạn
Sử dụng Train Test Split trong Python
Phần này nói về ứng dụng thực tế của phương pháp phân tách kiểm tra tàu hỏa như một cách để dự đoán giá nhà. Nó mở rộng mọi thứ, từ nhập tập dữ liệu đến thực hiện phân tách thử nghiệm đào tạo đến điều chỉnh siêu tham số một công cụ hồi quy cây quyết định để dự đoán giá nhà, v.v.
Python có rất nhiều thư viện giúp bạn hoàn thành các mục tiêu khoa học dữ liệu của mình, bao gồm scikit-learning, pandas và NumPy mà mã bên dưới nhập vào
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn import tree
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeRegressor
2. Tải Tập dữ liệu
Kaggle lưu trữ tập dữ liệu chứa giá bán nhà ở Quận King, bao gồm Seattle từ tháng 5 năm 2014 đến tháng 5 năm 2015. Bạn có thể tải tập dữ liệu xuống từ Kaggle hoặc tải từ của tôi . Đoạn mã dưới đây tải tập dữ liệu. của tôi . Đoạn mã dưới đây tải tập dữ liệu. của tôi . Đoạn mã dưới đây tải tập dữ liệu. của tôi . Đoạn mã dưới đây tải tập dữ liệu. của tôi . Đoạn mã dưới đây tải tập dữ liệu. của tôi . Đoạn mã dưới đây tải tập dữ liệu. của tôi . Đoạn mã dưới đây tải tập dữ liệu. của tôi . Đoạn mã dưới đây tải tập dữ liệu. của tôi . Đoạn mã dưới đây tải tập dữ liệu. GitHub. The code below loads the data set.
url = '//raw.githubusercontent.com/mGalarnyk/Tutorial_Data/master/King_County/kingCountyHouseData.csv'
df = pd.read_csv[url]
# Selecting columns I am interested in
columns = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors','price']
df = df.loc[:, columns]
df.head[10]
3. Sắp xếp dữ liệu thành các tính năng và mục tiêu
Scikit-learn của
url = '//raw.githubusercontent.com/mGalarnyk/Tutorial_Data/master/King_County/kingCountyHouseData.csv'
df = pd.read_csv[url]
# Selecting columns I am interested in
columns = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors','price']
df = df.loc[:, columns]
df.head[10]
3 mong đợi dữ liệu ở dạng tính năng và mục tiêu. Trong scikit-learning, ma trận tính năng là một lưới dữ liệu hai chiều trong đó các hàng biểu thị các mẫu và các cột biểu thị các tính năng. Mục tiêu là những gì bạn muốn dự đoán từ dữ liệu. Hướng dẫn này sử dụng giá làm mục tiêu. features = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors']
X = df.loc[:, features]
y = df.loc[:, ['price']]
4. Chia dữ liệu thành các tập huấn luyện và kiểm tra
Trong đoạn mã bên dưới,
url = '//raw.githubusercontent.com/mGalarnyk/Tutorial_Data/master/King_County/kingCountyHouseData.csv'
df = pd.read_csv[url]
# Selecting columns I am interested in
columns = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors','price']
df = df.loc[:, columns]
df.head[10]
3 phân tách dữ liệu và trả về một danh sách chứa bốn mảng NumPy, trong khi url = '//raw.githubusercontent.com/mGalarnyk/Tutorial_Data/master/King_County/kingCountyHouseData.csv'
df = pd.read_csv[url]
# Selecting columns I am interested in
columns = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors','price']
df = df.loc[:, columns]
df.head[10]
5 puts 75 percent of the data into a training set and the remaining 25 percent into a testing set.X_train, X_test, y_train, y_test = train_test_split[X, y, random_state=0, train_size = .75]
Hình ảnh bên dưới hiển thị số lượng hàng và cột mà các biến chứa bằng cách sử dụng thuộc tính hình dạng trước và sau
url = '//raw.githubusercontent.com/mGalarnyk/Tutorial_Data/master/King_County/kingCountyHouseData.csv'
df = pd.read_csv[url]
# Selecting columns I am interested in
columns = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors','price']
df = df.loc[:, columns]
df.head[10]
3 . Hình dạng trước và sau
url = '//raw.githubusercontent.com/mGalarnyk/Tutorial_Data/master/King_County/kingCountyHouseData.csv'
df = pd.read_csv[url]
# Selecting columns I am interested in
columns = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors','price']
df = df.loc[:, columns]
df.head[10]
7 phần trăm số hàng thuộc tập huấn luyện url = '//raw.githubusercontent.com/mGalarnyk/Tutorial_Data/master/King_County/kingCountyHouseData.csv'
df = pd.read_csv[url]
# Selecting columns I am interested in
columns = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors','price']
df = df.loc[:, columns]
df.head[10]
8 và 25 phần trăm thuộc tập thử nghiệm url = '//raw.githubusercontent.com/mGalarnyk/Tutorial_Data/master/King_County/kingCountyHouseData.csv'
df = pd.read_csv[url]
# Selecting columns I am interested in
columns = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors','price']
df = df.loc[:, columns]
df.head[10]
9Thông tin thêm về Pandas DataFrame Từ Clipboard đến DataFrame với Pandas. Hướng dẫn nhanh
5. ‘ random_state ’ trong Phân chia thử nghiệm xe lửa là gì?
Hình ảnh trên cho thấy rằng nếu bạn chọn một giá trị khác cho
features = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors']
X = df.loc[:, features]
y = df.loc[:, ['price']]
0 , thông tin khác sẽ chuyển đến “X_train,” “X_test,” “y_train” and “y_test”. The features = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors']
X = df.loc[:, features]
y = df.loc[:, ['price']]
0 là tham số số giả ngẫu nhiên cho phép bạn tạo lại cùng một phân tách thử nghiệm đào tạo mỗi khi bạn chạy mã. Có một số lý do khiến mọi người sử dụng
features = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors']
X = df.loc[:, features]
y = df.loc[:, ['price']]
0 , bao gồm thử nghiệm phần mềm, các hướng dẫn như thế này và các buổi nói chuyện. Tuy nhiên, bạn nên loại bỏ nó nếu bạn đang cố gắng xem mô hình tổng quát hóa tốt như thế nào đối với dữ liệu mới.
Chia bài kiểm tra tàu hỏa. Tạo và đào tạo một mô hình trong Scikit-Learn
Đây là những gì bạn cần biết
4 bước để đào tạo và tạo phân tách thử nghiệm đào tạo trong Scikit-Learn
- Nhập mô hình bạn muốn sử dụng
- Tạo một thể hiện của mô hình
- Huấn luyện mô hình trên dữ liệu
- Dự đoán nhãn của dữ liệu thử nghiệm không nhìn thấy.
1. Nhập mô hình bạn muốn sử dụng
Trong scikit-learning, tất cả các mô hình học máy được triển khai dưới dạng các lớp Python
url = '//raw.githubusercontent.com/mGalarnyk/Tutorial_Data/master/King_County/kingCountyHouseData.csv'
df = pd.read_csv[url]
# Selecting columns I am interested in
columns = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors','price']
df = df.loc[:, columns]
df.head[10]
4
2. Tạo một thể hiện của mô hình
Trong đoạn mã bên dưới, tôi đặt siêu tham số
features = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors']
X = df.loc[:, features]
y = df.loc[:, ['price']]
3 để tỉa cây trước để đảm bảo cây không có độ sâu lớn hơn . Phần tiếp theo của hướng dẫn sẽ đề cập đến cách chọn features = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors']
X = df.loc[:, features]
y = df.loc[:, ['price']]
4 tối ưu cho cây của bạn. Cũng lưu ý rằng tôi đã tạo features = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors']
X = df.loc[:, features]
y = df.loc[:, ['price']]
5 để bạn có thể nhận được kết quả giống như tôi. url = '//raw.githubusercontent.com/mGalarnyk/Tutorial_Data/master/King_County/kingCountyHouseData.csv'
df = pd.read_csv[url]
# Selecting columns I am interested in
columns = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors','price']
df = df.loc[:, columns]
df.head[10]
8
3. Huấn luyện mô hình trên dữ liệu
Huấn luyện mô hình trên dữ liệu, lưu trữ thông tin học được từ dữ liệu
url = '//raw.githubusercontent.com/mGalarnyk/Tutorial_Data/master/King_County/kingCountyHouseData.csv'
df = pd.read_csv[url]
# Selecting columns I am interested in
columns = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors','price']
df = df.loc[:, columns]
df.head[10]
9
4. Dự đoán nhãn của dữ liệu thử nghiệm không nhìn thấy
url = '//raw.githubusercontent.com/mGalarnyk/Tutorial_Data/master/King_County/kingCountyHouseData.csv'
df = pd.read_csv[url]
# Selecting columns I am interested in
columns = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors','price']
df = df.loc[:, columns]
df.head[10]
0Đối với nhiều dự đoán ở trên, hãy chú ý số lần một số dự đoán được lặp lại. Nếu bạn đang thắc mắc tại sao, tôi khuyên bạn nên xem mã bên dưới, mã này sẽ bắt đầu bằng cách xem xét một quan sát/ngôi nhà duy nhất và sau đó tiến hành kiểm tra cách mô hình đưa ra dự đoán của nó
url = '//raw.githubusercontent.com/mGalarnyk/Tutorial_Data/master/King_County/kingCountyHouseData.csv'
df = pd.read_csv[url]
# Selecting columns I am interested in
columns = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors','price']
df = df.loc[:, columns]
df.head[10]
1Đoạn mã dưới đây cho thấy cách đưa ra dự đoán cho một lần quan sát đó
url = '//raw.githubusercontent.com/mGalarnyk/Tutorial_Data/master/King_County/kingCountyHouseData.csv'
df = pd.read_csv[url]
# Selecting columns I am interested in
columns = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors','price']
df = df.loc[:, columns]
df.head[10]
2Hình ảnh dưới đây cho thấy cách mô hình được đào tạo đưa ra dự đoán cho một lần quan sát
Nếu bạn tò mò về cách tạo các loại biểu đồ này, hãy cân nhắc xem hướng dẫn của tôi Trực quan hóa Cây quyết định bằng Graphviz và Matplotlib.
Hướng dẫn phân tách thử nghiệm đào tạo bằng Python. . Video. Michael Galarnyk
Đo lường hiệu suất mô hình chia tách thử nghiệm đoàn tàu
Mặc dù có nhiều cách khác để đo lường hiệu suất của mô hình, chẳng hạn như sai số trung bình bình phương gốc và sai số tuyệt đối trung bình, chúng tôi sẽ đơn giản hóa điều này và sử dụng R² — được gọi là hệ số xác định — làm thước đo của chúng tôi.
Điểm tốt nhất có thể là 1. 0. Một mô hình không đổi luôn dự đoán giá trị trung bình của giá sẽ nhận được điểm R² là 0. 0. Tuy nhiên, có thể nhận được R² âm trên tập kiểm tra. Đoạn mã dưới đây sử dụng phương pháp tính điểm của mô hình được đào tạo để trả về R² của mô hình mà chúng tôi đã đánh giá trên tập kiểm tra
url = '//raw.githubusercontent.com/mGalarnyk/Tutorial_Data/master/King_County/kingCountyHouseData.csv'
df = pd.read_csv[url]
# Selecting columns I am interested in
columns = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors','price']
df = df.loc[:, columns]
df.head[10]
0Bạn có thể tự hỏi liệu R² ở trên của chúng tôi có tốt cho mô hình của chúng tôi không. Nói chung, R² càng cao thì mô hình càng phù hợp với dữ liệu. Việc xác định xem một mô hình có hoạt động tốt hay không cũng có thể phụ thuộc vào lĩnh vực nghiên cứu của bạn. Thứ gì đó khó dự đoán hơn thường sẽ có R² thấp hơn. Lập luận của tôi là đối với dữ liệu nhà ở, chúng ta nên có R² cao hơn chỉ dựa trên dữ liệu của chúng ta
Các chuyên gia trong lĩnh vực thường đồng ý rằng một trong những yếu tố quan trọng nhất ảnh hưởng đến giá nhà ở là vị trí. Rốt cuộc, nếu bạn đang tìm kiếm một ngôi nhà, rất có thể bạn sẽ quan tâm đến vị trí của nó. Như bạn có thể thấy trong mô hình được đào tạo bên dưới, cây quyết định chỉ kết hợp
features = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors']
X = df.loc[:, features]
y = df.loc[:, ['price']]
6 . Ngay cả khi mô hình đang hoạt động rất tốt, thì cũng không chắc là mô hình đó sẽ được các bên liên quan hoặc đồng nghiệp ủng hộ vì có nhiều thứ cho một ngôi nhà hơn
features = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors']
X = df.loc[:, features]
y = df.loc[:, ['price']]
6 .Lưu ý rằng tập dữ liệu gốc có thông tin vị trí như “lat” và “long. ” Hình ảnh dưới đây trực quan hóa phần trăm giá của tất cả các ngôi nhà trong tập dữ liệu dựa trên “vĩ độ” và “dài hạn”, không được bao gồm trong dữ liệu mà mô hình đã đào tạo. Như bạn có thể thấy, có một mối quan hệ giữa giá nhà và vị trí
Bạn có thể kết hợp thông tin vị trí như “lat” và “long” như một cách để cải thiện mô hình. Có khả năng những nơi như Zillow đã tìm ra cách kết hợp điều đó vào mô hình của họ
Cách điều chỉnh ' max_depth ' của
R² cho mô hình được đào tạo trước đó trong hướng dẫn là khoảng ______38 . Tuy nhiên, giả sử chúng tôi muốn cải thiện hiệu suất để chúng tôi có thể đưa ra dự đoán tốt hơn về dữ liệu không nhìn thấy. Mặc dù chúng tôi có thể thêm nhiều tính năng hơn như “vĩ độ” và “dài” vào mô hình hoặc tăng số lượng hàng trong tập dữ liệu [i. e. tìm thêm nhà], chúng tôi cũng có thể cải thiện hiệu suất thông qua điều chỉnh siêu tham số.
Điều này liên quan đến việc chọn các giá trị tối ưu của các tham số điều chỉnh cho một vấn đề học máy, thường được gọi là siêu tham số. Nhưng trước tiên, chúng ta cần tìm hiểu sơ qua về sự khác biệt giữa tham số và siêu tham số
Tham số vs Siêu tham số
Thuật toán học máy ước tính các tham số mô hình cho một tập dữ liệu nhất định và cập nhật các giá trị này khi nó tiếp tục học. Bạn có thể coi tham số mô hình là giá trị học được từ việc áp dụng quy trình điều chỉnh. Ví dụ: trong hồi quy logistic, bạn có các hệ số mô hình. Trong mạng nơ-ron, bạn có thể coi trọng số mạng nơ-ron như một tham số. Siêu tham số hoặc tham số điều chỉnh là siêu tham số ảnh hưởng đến chính quá trình điều chỉnh.
Đối với hồi quy logistic, có nhiều siêu đường kính như cường độ chuẩn hóa C. Đối với mạng thần kinh, có nhiều siêu tham số như số lớp ẩn. Nếu tất cả những điều này nghe có vẻ khó hiểu, thì Jason Brownlee, người sáng lập Machine Learning Mastery, đưa ra một nguyên tắc nhỏ trong hướng dẫn của anh ấy về tham số và siêu tham số đó là. “Nếu bạn phải chỉ định tham số mô hình theo cách thủ công, thì đó có thể là siêu tham số mô hình. ”
điều chỉnh siêu tham số
Có rất nhiều cách khác nhau để điều chỉnh siêu tham số cây quyết định cho hồi quy. Một cách là điều chỉnh siêu tham số
features = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors']
X = df.loc[:, features]
y = df.loc[:, ['price']]
4 . features = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors']
X = df.loc[:, features]
y = df.loc[:, ['price']]
4 [siêu tham số] không giống với độ sâu [tham số của cây quyết định], nhưng features = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors']
X = df.loc[:, features]
y = df.loc[:, ['price']]
4< . Nói cách khác, nếu một cái cây đã thuần nhất có thể ở độ sâu, thì nó sẽ không tiếp tục tách ra nữa. Nếu điều này không rõ ràng, hãy xem hướng dẫn is a way to pre-prune a decision tree. In other words, if a tree is already as pure as possible at a depth, it will not continue to split. If this isn’t clear, check out my Hiểu cây quyết định để phân loại [Python] của tôi để thấy sự khác biệt giữa features = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors']
X = df.loc[:, features]
y = df.loc[:, ['price']]
4 and depth.Mã bên dưới đưa ra độ chính xác cho cây quyết định với các giá trị khác nhau cho ______34 .
url = '//raw.githubusercontent.com/mGalarnyk/Tutorial_Data/master/King_County/kingCountyHouseData.csv'
df = pd.read_csv[url]
# Selecting columns I am interested in
columns = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors','price']
df = df.loc[:, columns]
df.head[10]
1Biểu đồ bên dưới cho thấy mô hình R² tốt nhất là khi siêu tham số
features = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors']
X = df.loc[:, features]
y = df.loc[:, ['price']]
4 bằng năm. Quá trình lựa chọn mô hình tốt nhất này features = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors']
X = df.loc[:, features]
y = df.loc[:, ['price']]
4 [ X_train, X_test, y_train, y_test = train_test_split[X, y, random_state=0, train_size = .75]
6 trong trường hợp này] . features = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors']
X = df.loc[:, features]
y = df.loc[:, ['price']]
4 values in this case] is called model selection.url = '//raw.githubusercontent.com/mGalarnyk/Tutorial_Data/master/King_County/kingCountyHouseData.csv'
df = pd.read_csv[url]
# Selecting columns I am interested in
columns = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors','price']
df = df.loc[:, columns]
df.head[10]
2Lưu ý rằng mô hình trên có thể vẫn bị overfit trên tập thử nghiệm do mã đã thay đổi
features = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors']
X = df.loc[:, features]
y = df.loc[:, ['price']]
4 nhiều lần để đạt được mô hình tốt nhất. Nói cách khác, kiến thức về tập kiểm tra có thể đã rò rỉ vào mô hình khi mã được lặp qua 24 giá trị khác nhau cho features = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors']
X = df.loc[:, features]
y = df.loc[:, ['price']]
4 [độ dài của url = '//raw.githubusercontent.com/mGalarnyk/Tutorial_Data/master/King_County/kingCountyHouseData.csv'
df = pd.read_csv[url]
# Selecting columns I am interested in
columns = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors','price']
df = df.loc[:, columns]
df.head[10]
40 is 24]. This would lessen the power of our evaluation metric R², as it would no longer be as strong an indicator of generalization performance. This is why in real life, we often have training, test and validation sets when hyperparameter tuning.Thông tin thêm về siêu tham số Thuật toán rừng ngẫu nhiên. Hướng dẫn đầy đủ
Hiểu về sự cân bằng giữa phương sai và sai lệch
Để hiểu tại sao
features = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors']
X = df.loc[:, features]
y = df.loc[:, ['price']]
4 trong số năm người là “B est Model” for our data, take a look at the graph below, which shows the model performance when tested on the training and test set.Đương nhiên, R² đào tạo luôn tốt hơn R² kiểm tra cho mọi điểm trên biểu đồ này vì các mô hình đang đưa ra dự đoán về dữ liệu mà chúng đã thấy trước đó
Ở phía bên trái của “Mô hình tốt nhất” trên biểu đồ [bất kỳ giá trị nào nhỏ hơn
X_train, X_test, y_train, y_test = train_test_split[X, y, random_state=0, train_size = .75]
6 ], chúng tôi có các mô hình không phù hợp với dữ liệu . Ở phía bên phải của “Mô hình tốt nhất” trên biểu đồ [bất kỳ giá trị nào hơn
X_train, X_test, y_train, y_test = train_test_split[X, y, random_state=0, train_size = .75]
6 ], chúng tôi có các mô hình phù hợp với dữ liệu . Các mô hình này hoạt động tốt trên dữ liệu đào tạo nhưng không tốt trên dữ liệu thử nghiệm. “Mô hình tốt nhất” được hình thành bằng cách giảm thiểu sai lệch sai lệch - hoặc các giả định sai trong mô hình - và sai số phương sai - hoặc quá nhạy cảm với các dao động/nhiễu nhỏ trong tập huấn luyện
Ưu điểm và nhược điểm của Train Test Split
Mục tiêu của học có giám sát là xây dựng một mô hình hoạt động tốt trên dữ liệu mới, phân tách thử nghiệm đào tạo giúp bạn mô phỏng. Với bất kỳ quy trình xác thực mô hình nào, điều quan trọng là phải ghi nhớ những ưu điểm và nhược điểm.
Những lợi thế của phân chia kiểm tra đào tạo bao gồm.
- Tương đối đơn giản và dễ hiểu hơn các phương pháp khác như Xác thực chéo K-fold.
- Tránh các mô hình quá phức tạp không tổng quát tốt cho dữ liệu mới
Nhược điểm của nó bao gồm
- Loại bỏ dữ liệu có thể đã được sử dụng để đào tạo mô hình học máy [dữ liệu thử nghiệm không được sử dụng để đào tạo]
- Tạo ra kết quả có thể thay đổi đối với một lần phân chia thử nghiệm tập huấn cụ thể [
0 ]features = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors'] X = df.loc[:, features] y = df.loc[:, ['price']]
- Khi điều chỉnh siêu tham số, kiến thức về tập kiểm tra có thể rò rỉ vào mô hình. Tuy nhiên, điều này có thể được giải quyết một phần bằng cách sử dụng tập huấn luyện, kiểm tra và xác nhận