Làm thế nào để bạn chia dữ liệu thành đào tạo và kiểm tra và xác thực trong python?

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. Nếu bạn có dữ liệu mới, bạn nên xem mô hình của mình hoạt động như thế nào trên dữ liệu đó. Vấn đề là bạn có thể không có dữ liệu mới, nhưng bạn có thể mô phỏng trải nghiệm này bằng một quy trình như phân tách thử nghiệm đào tạo.  

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

Đào tạo quy trình tách bài kiểm tra. . Hình ảnh. Michael Galarnyk

 

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

Đào tạo và kiểm tra thủ tục mà không chia tách dữ liệu. . Hình ảnh. Michael Galarnyk

 

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

Ví dụ về dữ liệu huấn luyện overfitted. . Hình ảnh. Wikipedia

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

"Thay đổi siêu tham số" trong hình ảnh này còn được gọi là điều chỉnh siêu tham số. . Hình ảnh. Michael Galarnyk

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]
Bảng giá nhà. . Hình ảnh. Michael Galarnyk

 

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']]
Hình ảnh. Michael Galarnyk

 

4. Chia dữ liệu thành các tập huấn luyện và kiểm tra

Màu sắc trong hình ảnh cho biết biến nào [X_train, X_test, y_train, y_test] từ khung dữ liệu gốc [df] sẽ chuyển sang phân tách thử nghiệm đào tạo cụ thể. Nếu bạn tò mò về cách tạo hình ảnh ở trên, tôi khuyên bạn nên tải xuống và chạy sổ ghi chép ArrangeDataKingCountySplit vì chức năng tạo kiểu gấu trúc không phải lúc nào cũng hiển thị trên GitHub. . Hình ảnh. Michael Galarnyk

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 ảnh. Michael Galarnyk

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]
9

Thô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. Michael Galarnyk

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

  1. Nhập mô hình bạn muốn sử dụng
  2. Tạo một thể hiện của mô hình
  3. Huấn luyện mô hình trên dữ liệu
  4. 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
Các tính năng của một ngôi nhà được hiển thị dưới dạng Khung dữ liệu Pandas. . Hình ảnh. Michael Galarnyk

Đ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]
2

Hì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

Hình ảnh. Michael Galarnyk

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

Công thức R² [hệ số xác định]. . Hình ảnh. Michael Galarnyk

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]
0

Bạ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 .

Hình ảnh. Michael Galarnyk

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ọ

Phần trăm giá nhà ở cho Quận King. . Hình ảnh. Michael Galarnyk

 

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]
1

Biể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]
2
Hình ảnh. Michael Galarnyk.

Lư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.

Mã cho biểu đồ này có trên GitHub. . Hình ảnh. Michael Galarnyk

Đươ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

“Xác thực chéo. đánh giá hiệu suất của công cụ ước tính” hình ảnh từ tài liệu scikit-learning. . Hình ảnh. scikit-học

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ể [
    features = ['bedrooms','bathrooms','sqft_living','sqft_lot','floors']
    X = df.loc[:, features]
    y = df.loc[:, ['price']]
    0 ]
  • 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

Chủ Đề