Hướng dẫn how do you split a dataset in python? - làm thế nào để bạn chia một tập dữ liệu trong python?

Một trong những khía cạnh chính của học máy được giám sát là đánh giá và xác nhận mô hình. Khi bạn đánh giá hiệu suất dự đoán của mô hình của bạn, điều cần thiết là quá trình này không thiên vị. Sử dụng

$ conda install -c anaconda scikit-learn=0.23
7 Từ thư viện dữ liệu Scikit-learn, bạn có thể chia bộ dữ liệu của mình thành các tập hợp con nhằm giảm thiểu khả năng sai lệch trong quá trình đánh giá và xác nhận của bạn.
$ conda install -c anaconda scikit-learn=0.23
7
from the data science library scikit-learn, you can split your dataset into subsets that minimize the potential for bias in your evaluation and validation process.

Trong hướng dẫn này, bạn sẽ học:

  • Tại sao bạn cần phân chia bộ dữ liệu của mình trong học máy được giám sátsplit your dataset in supervised machine learning
  • Tập hợp con nào của bộ dữ liệu bạn cần để đánh giá không thiên vị về mô hình của bạnsubsets of the dataset you need for an unbiased evaluation of your model
  • Cách sử dụng
    $ conda install -c anaconda scikit-learn=0.23
    
    7 để phân chia dữ liệu của bạn
    $ conda install -c anaconda scikit-learn=0.23
    
    7
    to split your data
  • Cách kết hợp
    $ conda install -c anaconda scikit-learn=0.23
    
    7 với các phương pháp dự đoánprediction methods

Ngoài ra, bạn sẽ nhận được thông tin về các công cụ liên quan từ

>>> import numpy as np
>>> from sklearn.model_selection import train_test_split
0.

Tầm quan trọng của việc phân tách dữ liệu

Học máy được giám sát là về việc tạo các mô hình ánh xạ chính xác các đầu vào đã cho (các biến độc lập hoặc dự đoán) cho các đầu ra đã cho (các biến phụ thuộc hoặc phản hồi).predictors) to the given outputs (dependent variables, or responses).

Cách bạn đo độ chính xác của mô hình của bạn phụ thuộc vào loại vấn đề mà bạn đang cố gắng giải quyết. Trong phân tích hồi quy, bạn thường sử dụng hệ số xác định, lỗi bình phương trung bình gốc, lỗi tuyệt đối trung bình hoặc số lượng tương tự. Đối với các vấn đề phân loại, bạn thường áp dụng độ chính xác, độ chính xác, thu hồi, điểm F1 và các chỉ số liên quan.

Các giá trị số có thể chấp nhận được đo độ chính xác thay đổi từ trường này sang trường khác. Bạn có thể tìm thấy những giải thích chi tiết từ số liệu thống kê của Jim, Quora và nhiều tài nguyên khác.

Điều quan trọng nhất để hiểu là bạn thường cần đánh giá không thiên vị để sử dụng đúng các biện pháp này, đánh giá hiệu suất dự đoán của mô hình của bạn và xác nhận mô hình.unbiased evaluation to properly use these measures, assess the predictive performance of your model, and validate the model.

Điều này có nghĩa là bạn có thể đánh giá hiệu suất dự đoán của một mô hình với cùng một dữ liệu bạn đã sử dụng để đào tạo. Bạn cần đánh giá mô hình với dữ liệu mới đã được mô hình nhìn thấy trước đây. Bạn có thể thực hiện điều đó bằng cách phân tách bộ dữ liệu của bạn trước khi bạn sử dụng nó.fresh data that hasn’t been seen by the model before. You can accomplish that by splitting your dataset before you use it.

Đào tạo, xác nhận và bộ kiểm tra

Chia dữ liệu của bạn là điều cần thiết cho việc đánh giá không thiên vị về hiệu suất dự đoán. Trong hầu hết các trường hợp, nó đủ để chia dữ liệu của bạn một cách ngẫu nhiên thành ba tập hợp con:

  1. Bộ đào tạo được áp dụng để đào tạo, hoặc phù hợp với mô hình của bạn. Ví dụ: bạn sử dụng tập huấn luyện để tìm các trọng số tối ưu hoặc hệ số, cho hồi quy tuyến tính, hồi quy logistic hoặc mạng thần kinh. is applied to train, or fit, your model. For example, you use the training set to find the optimal weights, or coefficients, for linear regression, logistic regression, or neural networks.

  2. Bộ xác nhận được sử dụng để đánh giá mô hình không thiên vị trong quá trình điều chỉnh siêu phân tích. Ví dụ: khi bạn muốn tìm số lượng tế bào thần kinh tối ưu trong mạng lưới thần kinh hoặc hạt nhân tốt nhất cho máy vectơ hỗ trợ, bạn thử nghiệm các giá trị khác nhau. Đối với mỗi thiết lập được xem xét của các siêu phân tích, bạn phù hợp với mô hình với bộ đào tạo và đánh giá hiệu suất của nó với bộ xác thực. is used for unbiased model evaluation during hyperparameter tuning. For example, when you want to find the optimal number of neurons in a neural network or the best kernel for a support vector machine, you experiment with different values. For each considered setting of hyperparameters, you fit the model with the training set and assess its performance with the validation set.

  3. Bộ thử nghiệm là cần thiết cho một đánh giá không thiên vị của mô hình cuối cùng. Bạn không nên sử dụng nó để phù hợp hoặc xác nhận. is needed for an unbiased evaluation of the final model. You shouldn’t use it for fitting or validation.

Trong những trường hợp ít phức tạp hơn, khi bạn không phải điều chỉnh các siêu âm, bạn sẽ ổn khi chỉ làm việc với các bộ đào tạo và kiểm tra.

Thiếu hụt và quá mức

Việc chia một bộ dữ liệu cũng có thể rất quan trọng để phát hiện nếu mô hình của bạn gặp phải một trong hai vấn đề rất phổ biến, được gọi là thiếu hụt và quá mức:

  1. Underfits thường là hậu quả của một mô hình không thể gói gọn các mối quan hệ giữa dữ liệu. Ví dụ, điều này có thể xảy ra khi cố gắng thể hiện các mối quan hệ phi tuyến với mô hình tuyến tính. Các mô hình thiếu hụt có thể sẽ có hiệu suất kém với cả bộ đào tạo và thử nghiệm. is usually the consequence of a model being unable to encapsulate the relations among data. For example, this can happen when trying to represent nonlinear relations with a linear model. Underfitted models will likely have poor performance with both training and test sets.

  2. Việc quá mức thường diễn ra khi một mô hình có cấu trúc quá phức tạp và tìm hiểu cả mối quan hệ hiện có giữa dữ liệu và tiếng ồn. Các mô hình như vậy thường có khả năng khái quát hóa xấu. Mặc dù chúng hoạt động tốt với dữ liệu đào tạo, nhưng chúng thường mang lại hiệu suất kém với dữ liệu (thử nghiệm) chưa thấy. usually takes place when a model has an excessively complex structure and learns both the existing relations among data and noise. Such models often have bad generalization capabilities. Although they work well with training data, they usually yield poor performance with unseen (test) data.

Bạn có thể tìm thấy một lời giải thích chi tiết hơn về thiếu hụt và quá mức trong hồi quy tuyến tính trong Python.

Điều kiện tiên quyết cho việc sử dụng $ conda install -c anaconda scikit-learn=0.23 7

Bây giờ bạn đã hiểu sự cần thiết phải phân chia một bộ dữ liệu để thực hiện đánh giá mô hình không thiên vị và xác định thiếu hụt hoặc quá mức, bạn đã sẵn sàng tìm hiểu cách phân chia bộ dữ liệu của riêng bạn.

Bạn sẽ sử dụng phiên bản 0.23,1 của Scikit-learn hoặc

>>> import numpy as np
>>> from sklearn.model_selection import train_test_split
2. Nó có nhiều gói cho khoa học dữ liệu và học máy, nhưng đối với hướng dẫn này, bạn sẽ tập trung vào gói
>>> import numpy as np
>>> from sklearn.model_selection import train_test_split
3, cụ thể là chức năng
$ conda install -c anaconda scikit-learn=0.23
7.scikit-learn, or
>>> import numpy as np
>>> from sklearn.model_selection import train_test_split
2
. It has many packages for data science and machine learning, but for this tutorial you’ll focus on the
>>> import numpy as np
>>> from sklearn.model_selection import train_test_split
3
package, specifically on the function
$ conda install -c anaconda scikit-learn=0.23
7
.

Bạn có thể cài đặt

>>> import numpy as np
>>> from sklearn.model_selection import train_test_split
2 với
>>> import numpy as np
>>> from sklearn.model_selection import train_test_split
6:

$ python -m pip install -U "scikit-learn==0.23.1"

Nếu bạn sử dụng Anaconda, thì có lẽ bạn đã cài đặt nó. Tuy nhiên, nếu bạn muốn sử dụng một môi trường mới, hãy đảm bảo rằng bạn có phiên bản được chỉ định hoặc sử dụng miniconda, thì bạn có thể cài đặt

>>> import numpy as np
>>> from sklearn.model_selection import train_test_split
2 từ Anaconda Cloud với
>>> import numpy as np
>>> from sklearn.model_selection import train_test_split
8:

$ conda install -c anaconda scikit-learn=0.23

Bạn cũng sẽ cần Numpy, nhưng bạn không phải cài đặt riêng. Bạn sẽ nhận được nó cùng với

>>> import numpy as np
>>> from sklearn.model_selection import train_test_split
2 nếu bạn đã cài đặt nó. Nếu bạn muốn làm mới kiến ​​thức numpy của mình, thì hãy xem tài liệu chính thức hoặc kiểm tra xem MA, không có vòng lặp: Lập trình mảng với Numpy.

Áp dụng $ conda install -c anaconda scikit-learn=0.23 7

Bạn cần nhập

$ conda install -c anaconda scikit-learn=0.23
7 và Numpy trước khi bạn có thể sử dụng chúng, vì vậy bạn có thể bắt đầu với các câu lệnh
sklearn.model_selection.train_test_split(*arrays, **options) -> list
2:

>>>

>>> import numpy as np
>>> from sklearn.model_selection import train_test_split

Bây giờ bạn đã nhập cả, bạn có thể sử dụng chúng để chia dữ liệu thành các bộ đào tạo và bộ kiểm tra. Bạn sẽ phân chia đầu vào và đầu ra cùng một lúc, với một cuộc gọi chức năng duy nhất.

Với

$ conda install -c anaconda scikit-learn=0.23
7, bạn cần cung cấp các chuỗi mà bạn muốn chia cũng như bất kỳ đối số tùy chọn nào. Nó trả về một danh sách các mảng numpy, các chuỗi khác hoặc ma trận thưa thớt Scipy nếu thích hợp:

sklearn.model_selection.train_test_split(*arrays, **options) -> list

sklearn.model_selection.train_test_split(*arrays, **options) -> list
4 là chuỗi danh sách, mảng numpy, gấu trúc dữ liệu hoặc các đối tượng giống như mảng tương tự giữ dữ liệu bạn muốn chia. Tất cả các đối tượng này cùng nhau tạo nên bộ dữ liệu và phải có cùng độ dài. is the sequence of lists, NumPy arrays, pandas DataFrames, or similar array-like objects that hold the data you want to split. All these objects together make up the dataset and must be of the same length.

Trong các ứng dụng học máy được giám sát, bạn thường làm việc với hai chuỗi như vậy:

  1. Một mảng hai chiều với đầu vào (
    sklearn.model_selection.train_test_split(*arrays, **options) -> list
    
    5)
  2. Một mảng một chiều với đầu ra (
    sklearn.model_selection.train_test_split(*arrays, **options) -> list
    
    6)

sklearn.model_selection.train_test_split(*arrays, **options) -> list
7 là các đối số từ khóa tùy chọn mà bạn có thể sử dụng để có được hành vi mong muốn: are the optional keyword arguments that you can use to get desired behavior:

  • sklearn.model_selection.train_test_split(*arrays, **options) -> list
    
    8 là số xác định kích thước của tập huấn luyện. Nếu bạn cung cấp
    sklearn.model_selection.train_test_split(*arrays, **options) -> list
    
    9, thì nó phải nằm giữa
    >>> x = np.arange(1, 25).reshape(12, 2)
    >>> y = np.array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    >>> x
    array([[ 1,  2],
           [ 3,  4],
           [ 5,  6],
           [ 7,  8],
           [ 9, 10],
           [11, 12],
           [13, 14],
           [15, 16],
           [17, 18],
           [19, 20],
           [21, 22],
           [23, 24]])
    >>> y
    array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    
    0 và
    >>> x = np.arange(1, 25).reshape(12, 2)
    >>> y = np.array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    >>> x
    array([[ 1,  2],
           [ 3,  4],
           [ 5,  6],
           [ 7,  8],
           [ 9, 10],
           [11, 12],
           [13, 14],
           [15, 16],
           [17, 18],
           [19, 20],
           [21, 22],
           [23, 24]])
    >>> y
    array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    
    1 và sẽ xác định tỷ lệ của bộ dữ liệu được sử dụng để thử nghiệm. Nếu bạn cung cấp
    >>> x = np.arange(1, 25).reshape(12, 2)
    >>> y = np.array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    >>> x
    array([[ 1,  2],
           [ 3,  4],
           [ 5,  6],
           [ 7,  8],
           [ 9, 10],
           [11, 12],
           [13, 14],
           [15, 16],
           [17, 18],
           [19, 20],
           [21, 22],
           [23, 24]])
    >>> y
    array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    
    2, thì nó sẽ đại diện cho tổng số mẫu đào tạo. Giá trị mặc định là
    >>> x = np.arange(1, 25).reshape(12, 2)
    >>> y = np.array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    >>> x
    array([[ 1,  2],
           [ 3,  4],
           [ 5,  6],
           [ 7,  8],
           [ 9, 10],
           [11, 12],
           [13, 14],
           [15, 16],
           [17, 18],
           [19, 20],
           [21, 22],
           [23, 24]])
    >>> y
    array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    
    3.
    is the number that defines the size of the training set. If you provide a
    sklearn.model_selection.train_test_split(*arrays, **options) -> list
    
    9, then it must be between
    >>> x = np.arange(1, 25).reshape(12, 2)
    >>> y = np.array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    >>> x
    array([[ 1,  2],
           [ 3,  4],
           [ 5,  6],
           [ 7,  8],
           [ 9, 10],
           [11, 12],
           [13, 14],
           [15, 16],
           [17, 18],
           [19, 20],
           [21, 22],
           [23, 24]])
    >>> y
    array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    
    0 and
    >>> x = np.arange(1, 25).reshape(12, 2)
    >>> y = np.array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    >>> x
    array([[ 1,  2],
           [ 3,  4],
           [ 5,  6],
           [ 7,  8],
           [ 9, 10],
           [11, 12],
           [13, 14],
           [15, 16],
           [17, 18],
           [19, 20],
           [21, 22],
           [23, 24]])
    >>> y
    array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    
    1 and will define the share of the dataset used for testing. If you provide an
    >>> x = np.arange(1, 25).reshape(12, 2)
    >>> y = np.array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    >>> x
    array([[ 1,  2],
           [ 3,  4],
           [ 5,  6],
           [ 7,  8],
           [ 9, 10],
           [11, 12],
           [13, 14],
           [15, 16],
           [17, 18],
           [19, 20],
           [21, 22],
           [23, 24]])
    >>> y
    array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    
    2, then it will represent the total number of the training samples. The default value is
    >>> x = np.arange(1, 25).reshape(12, 2)
    >>> y = np.array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    >>> x
    array([[ 1,  2],
           [ 3,  4],
           [ 5,  6],
           [ 7,  8],
           [ 9, 10],
           [11, 12],
           [13, 14],
           [15, 16],
           [17, 18],
           [19, 20],
           [21, 22],
           [23, 24]])
    >>> y
    array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    
    3.

  • >>> x = np.arange(1, 25).reshape(12, 2)
    >>> y = np.array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    >>> x
    array([[ 1,  2],
           [ 3,  4],
           [ 5,  6],
           [ 7,  8],
           [ 9, 10],
           [11, 12],
           [13, 14],
           [15, 16],
           [17, 18],
           [19, 20],
           [21, 22],
           [23, 24]])
    >>> y
    array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    
    4 là số xác định kích thước của tập kiểm tra. Nó rất giống với
    sklearn.model_selection.train_test_split(*arrays, **options) -> list
    
    8. Bạn nên cung cấp
    sklearn.model_selection.train_test_split(*arrays, **options) -> list
    
    8 hoặc
    >>> x = np.arange(1, 25).reshape(12, 2)
    >>> y = np.array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    >>> x
    array([[ 1,  2],
           [ 3,  4],
           [ 5,  6],
           [ 7,  8],
           [ 9, 10],
           [11, 12],
           [13, 14],
           [15, 16],
           [17, 18],
           [19, 20],
           [21, 22],
           [23, 24]])
    >>> y
    array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    
    4. Nếu không được đưa ra, thì chia sẻ mặc định của bộ dữ liệu sẽ được sử dụng để thử nghiệm là
    >>> x = np.arange(1, 25).reshape(12, 2)
    >>> y = np.array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    >>> x
    array([[ 1,  2],
           [ 3,  4],
           [ 5,  6],
           [ 7,  8],
           [ 9, 10],
           [11, 12],
           [13, 14],
           [15, 16],
           [17, 18],
           [19, 20],
           [21, 22],
           [23, 24]])
    >>> y
    array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    
    8 hoặc 25 phần trăm.
    is the number that defines the size of the test set. It’s very similar to
    sklearn.model_selection.train_test_split(*arrays, **options) -> list
    
    8. You should provide either
    sklearn.model_selection.train_test_split(*arrays, **options) -> list
    
    8 or
    >>> x = np.arange(1, 25).reshape(12, 2)
    >>> y = np.array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    >>> x
    array([[ 1,  2],
           [ 3,  4],
           [ 5,  6],
           [ 7,  8],
           [ 9, 10],
           [11, 12],
           [13, 14],
           [15, 16],
           [17, 18],
           [19, 20],
           [21, 22],
           [23, 24]])
    >>> y
    array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    
    4. If neither is given, then the default share of the dataset that will be used for testing is
    >>> x = np.arange(1, 25).reshape(12, 2)
    >>> y = np.array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    >>> x
    array([[ 1,  2],
           [ 3,  4],
           [ 5,  6],
           [ 7,  8],
           [ 9, 10],
           [11, 12],
           [13, 14],
           [15, 16],
           [17, 18],
           [19, 20],
           [21, 22],
           [23, 24]])
    >>> y
    array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    
    8, or 25 percent.

  • >>> x = np.arange(1, 25).reshape(12, 2)
    >>> y = np.array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    >>> x
    array([[ 1,  2],
           [ 3,  4],
           [ 5,  6],
           [ 7,  8],
           [ 9, 10],
           [11, 12],
           [13, 14],
           [15, 16],
           [17, 18],
           [19, 20],
           [21, 22],
           [23, 24]])
    >>> y
    array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    
    9 là đối tượng kiểm soát ngẫu nhiên trong quá trình phân tách. Nó có thể là một
    >>> x = np.arange(1, 25).reshape(12, 2)
    >>> y = np.array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    >>> x
    array([[ 1,  2],
           [ 3,  4],
           [ 5,  6],
           [ 7,  8],
           [ 9, 10],
           [11, 12],
           [13, 14],
           [15, 16],
           [17, 18],
           [19, 20],
           [21, 22],
           [23, 24]])
    >>> y
    array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    
    2 hoặc một ví dụ là
    >>> x_train, x_test, y_train, y_test = train_test_split(x, y)
    >>> x_train
    array([[15, 16],
           [21, 22],
           [11, 12],
           [17, 18],
           [13, 14],
           [ 9, 10],
           [ 1,  2],
           [ 3,  4],
           [19, 20]])
    >>> x_test
    array([[ 5,  6],
           [ 7,  8],
           [23, 24]])
    >>> y_train
    array([1, 1, 0, 1, 0, 1, 0, 1, 0])
    >>> y_test
    array([1, 0, 0])
    
    1. Giá trị mặc định là
    >>> x = np.arange(1, 25).reshape(12, 2)
    >>> y = np.array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    >>> x
    array([[ 1,  2],
           [ 3,  4],
           [ 5,  6],
           [ 7,  8],
           [ 9, 10],
           [11, 12],
           [13, 14],
           [15, 16],
           [17, 18],
           [19, 20],
           [21, 22],
           [23, 24]])
    >>> y
    array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    
    3.
    is the object that controls randomization during splitting. It can be either an
    >>> x = np.arange(1, 25).reshape(12, 2)
    >>> y = np.array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    >>> x
    array([[ 1,  2],
           [ 3,  4],
           [ 5,  6],
           [ 7,  8],
           [ 9, 10],
           [11, 12],
           [13, 14],
           [15, 16],
           [17, 18],
           [19, 20],
           [21, 22],
           [23, 24]])
    >>> y
    array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    
    2 or an instance of
    >>> x_train, x_test, y_train, y_test = train_test_split(x, y)
    >>> x_train
    array([[15, 16],
           [21, 22],
           [11, 12],
           [17, 18],
           [13, 14],
           [ 9, 10],
           [ 1,  2],
           [ 3,  4],
           [19, 20]])
    >>> x_test
    array([[ 5,  6],
           [ 7,  8],
           [23, 24]])
    >>> y_train
    array([1, 1, 0, 1, 0, 1, 0, 1, 0])
    >>> y_test
    array([1, 0, 0])
    
    1. The default value is
    >>> x = np.arange(1, 25).reshape(12, 2)
    >>> y = np.array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    >>> x
    array([[ 1,  2],
           [ 3,  4],
           [ 5,  6],
           [ 7,  8],
           [ 9, 10],
           [11, 12],
           [13, 14],
           [15, 16],
           [17, 18],
           [19, 20],
           [21, 22],
           [23, 24]])
    >>> y
    array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    
    3.

  • >>> x_train, x_test, y_train, y_test = train_test_split(x, y)
    >>> x_train
    array([[15, 16],
           [21, 22],
           [11, 12],
           [17, 18],
           [13, 14],
           [ 9, 10],
           [ 1,  2],
           [ 3,  4],
           [19, 20]])
    >>> x_test
    array([[ 5,  6],
           [ 7,  8],
           [23, 24]])
    >>> y_train
    array([1, 1, 0, 1, 0, 1, 0, 1, 0])
    >>> y_test
    array([1, 0, 0])
    
    3 là đối tượng boolean (
    >>> x_train, x_test, y_train, y_test = train_test_split(x, y)
    >>> x_train
    array([[15, 16],
           [21, 22],
           [11, 12],
           [17, 18],
           [13, 14],
           [ 9, 10],
           [ 1,  2],
           [ 3,  4],
           [19, 20]])
    >>> x_test
    array([[ 5,  6],
           [ 7,  8],
           [23, 24]])
    >>> y_train
    array([1, 1, 0, 1, 0, 1, 0, 1, 0])
    >>> y_test
    array([1, 0, 0])
    
    4 theo mặc định) xác định có nên xáo trộn tập dữ liệu trước khi áp dụng phân chia hay không.
    is the Boolean object (
    >>> x_train, x_test, y_train, y_test = train_test_split(x, y)
    >>> x_train
    array([[15, 16],
           [21, 22],
           [11, 12],
           [17, 18],
           [13, 14],
           [ 9, 10],
           [ 1,  2],
           [ 3,  4],
           [19, 20]])
    >>> x_test
    array([[ 5,  6],
           [ 7,  8],
           [23, 24]])
    >>> y_train
    array([1, 1, 0, 1, 0, 1, 0, 1, 0])
    >>> y_test
    array([1, 0, 0])
    
    4 by default) that determines whether to shuffle the dataset before applying the split.

  • >>> x_train, x_test, y_train, y_test = train_test_split(x, y)
    >>> x_train
    array([[15, 16],
           [21, 22],
           [11, 12],
           [17, 18],
           [13, 14],
           [ 9, 10],
           [ 1,  2],
           [ 3,  4],
           [19, 20]])
    >>> x_test
    array([[ 5,  6],
           [ 7,  8],
           [23, 24]])
    >>> y_train
    array([1, 1, 0, 1, 0, 1, 0, 1, 0])
    >>> y_test
    array([1, 0, 0])
    
    5 là một đối tượng giống như mảng, nếu không phải là
    >>> x = np.arange(1, 25).reshape(12, 2)
    >>> y = np.array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    >>> x
    array([[ 1,  2],
           [ 3,  4],
           [ 5,  6],
           [ 7,  8],
           [ 9, 10],
           [11, 12],
           [13, 14],
           [15, 16],
           [17, 18],
           [19, 20],
           [21, 22],
           [23, 24]])
    >>> y
    array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    
    3, xác định cách sử dụng phân tách phân tầng.
    is an array-like object that, if not
    >>> x = np.arange(1, 25).reshape(12, 2)
    >>> y = np.array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    >>> x
    array([[ 1,  2],
           [ 3,  4],
           [ 5,  6],
           [ 7,  8],
           [ 9, 10],
           [11, 12],
           [13, 14],
           [15, 16],
           [17, 18],
           [19, 20],
           [21, 22],
           [23, 24]])
    >>> y
    array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    
    3, determines how to use a stratified split.

Bây giờ, thời gian để thử phân tách dữ liệu! Bạn sẽ bắt đầu bằng cách tạo một bộ dữ liệu đơn giản để làm việc. Bộ dữ liệu sẽ chứa các đầu vào trong mảng hai chiều

sklearn.model_selection.train_test_split(*arrays, **options) -> list
5 và đầu ra trong mảng một chiều
sklearn.model_selection.train_test_split(*arrays, **options) -> list
6:

>>>

>>> x = np.arange(1, 25).reshape(12, 2)
>>> y = np.array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
>>> x
array([[ 1,  2],
       [ 3,  4],
       [ 5,  6],
       [ 7,  8],
       [ 9, 10],
       [11, 12],
       [13, 14],
       [15, 16],
       [17, 18],
       [19, 20],
       [21, 22],
       [23, 24]])
>>> y
array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])

>>> import numpy as np
>>> from sklearn.model_selection import train_test_split

Bây giờ bạn đã nhập cả, bạn có thể sử dụng chúng để chia dữ liệu thành các bộ đào tạo và bộ kiểm tra. Bạn sẽ phân chia đầu vào và đầu ra cùng một lúc, với một cuộc gọi chức năng duy nhất.

>>>

>>> x_train, x_test, y_train, y_test = train_test_split(x, y)
>>> x_train
array([[15, 16],
       [21, 22],
       [11, 12],
       [17, 18],
       [13, 14],
       [ 9, 10],
       [ 1,  2],
       [ 3,  4],
       [19, 20]])
>>> x_test
array([[ 5,  6],
       [ 7,  8],
       [23, 24]])
>>> y_train
array([1, 1, 0, 1, 0, 1, 0, 1, 0])
>>> y_test
array([1, 0, 0])

>>> import numpy as np
>>> from sklearn.model_selection import train_test_split

  1. Bây giờ bạn đã nhập cả, bạn có thể sử dụng chúng để chia dữ liệu thành các bộ đào tạo và bộ kiểm tra. Bạn sẽ phân chia đầu vào và đầu ra cùng một lúc, với một cuộc gọi chức năng duy nhất. The training part of the first sequence (
    sklearn.model_selection.train_test_split(*arrays, **options) -> list
    
    5)
  2. Với
    $ conda install -c anaconda scikit-learn=0.23
    
    7, bạn cần cung cấp các chuỗi mà bạn muốn chia cũng như bất kỳ đối số tùy chọn nào. Nó trả về một danh sách các mảng numpy, các chuỗi khác hoặc ma trận thưa thớt Scipy nếu thích hợp:
    The test part of the first sequence (
    sklearn.model_selection.train_test_split(*arrays, **options) -> list
    
    5)
  3. sklearn.model_selection.train_test_split(*arrays, **options) -> list
    
    4 là chuỗi danh sách, mảng numpy, gấu trúc dữ liệu hoặc các đối tượng giống như mảng tương tự giữ dữ liệu bạn muốn chia. Tất cả các đối tượng này cùng nhau tạo nên bộ dữ liệu và phải có cùng độ dài.
    The training part of the second sequence (
    sklearn.model_selection.train_test_split(*arrays, **options) -> list
    
    6)
  4. Trong các ứng dụng học máy được giám sát, bạn thường làm việc với hai chuỗi như vậy: The test part of the second sequence (
    sklearn.model_selection.train_test_split(*arrays, **options) -> list
    
    6)

Một mảng hai chiều với đầu vào (

sklearn.model_selection.train_test_split(*arrays, **options) -> list
5)

Một mảng một chiều với đầu ra (

sklearn.model_selection.train_test_split(*arrays, **options) -> list
6)

sklearn.model_selection.train_test_split(*arrays, **options) -> list
7 là các đối số từ khóa tùy chọn mà bạn có thể sử dụng để có được hành vi mong muốn:

sklearn.model_selection.train_test_split(*arrays, **options) -> list
8 là số xác định kích thước của tập huấn luyện. Nếu bạn cung cấp
sklearn.model_selection.train_test_split(*arrays, **options) -> list
9, thì nó phải nằm giữa
>>> x = np.arange(1, 25).reshape(12, 2)
>>> y = np.array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
>>> x
array([[ 1,  2],
       [ 3,  4],
       [ 5,  6],
       [ 7,  8],
       [ 9, 10],
       [11, 12],
       [13, 14],
       [15, 16],
       [17, 18],
       [19, 20],
       [21, 22],
       [23, 24]])
>>> y
array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
0 và
>>> x = np.arange(1, 25).reshape(12, 2)
>>> y = np.array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
>>> x
array([[ 1,  2],
       [ 3,  4],
       [ 5,  6],
       [ 7,  8],
       [ 9, 10],
       [11, 12],
       [13, 14],
       [15, 16],
       [17, 18],
       [19, 20],
       [21, 22],
       [23, 24]])
>>> y
array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
1 và sẽ xác định tỷ lệ của bộ dữ liệu được sử dụng để thử nghiệm. Nếu bạn cung cấp
>>> x = np.arange(1, 25).reshape(12, 2)
>>> y = np.array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
>>> x
array([[ 1,  2],
       [ 3,  4],
       [ 5,  6],
       [ 7,  8],
       [ 9, 10],
       [11, 12],
       [13, 14],
       [15, 16],
       [17, 18],
       [19, 20],
       [21, 22],
       [23, 24]])
>>> y
array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
2, thì nó sẽ đại diện cho tổng số mẫu đào tạo. Giá trị mặc định là
>>> x = np.arange(1, 25).reshape(12, 2)
>>> y = np.array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
>>> x
array([[ 1,  2],
       [ 3,  4],
       [ 5,  6],
       [ 7,  8],
       [ 9, 10],
       [11, 12],
       [13, 14],
       [15, 16],
       [17, 18],
       [19, 20],
       [21, 22],
       [23, 24]])
>>> y
array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
3.

>>> x = np.arange(1, 25).reshape(12, 2)
>>> y = np.array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
>>> x
array([[ 1,  2],
       [ 3,  4],
       [ 5,  6],
       [ 7,  8],
       [ 9, 10],
       [11, 12],
       [13, 14],
       [15, 16],
       [17, 18],
       [19, 20],
       [21, 22],
       [23, 24]])
>>> y
array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
4 là số xác định kích thước của tập kiểm tra. Nó rất giống với
sklearn.model_selection.train_test_split(*arrays, **options) -> list
8. Bạn nên cung cấp
sklearn.model_selection.train_test_split(*arrays, **options) -> list
8 hoặc
>>> x = np.arange(1, 25).reshape(12, 2)
>>> y = np.array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
>>> x
array([[ 1,  2],
       [ 3,  4],
       [ 5,  6],
       [ 7,  8],
       [ 9, 10],
       [11, 12],
       [13, 14],
       [15, 16],
       [17, 18],
       [19, 20],
       [21, 22],
       [23, 24]])
>>> y
array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
4. Nếu không được đưa ra, thì chia sẻ mặc định của bộ dữ liệu sẽ được sử dụng để thử nghiệm là
>>> x = np.arange(1, 25).reshape(12, 2)
>>> y = np.array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
>>> x
array([[ 1,  2],
       [ 3,  4],
       [ 5,  6],
       [ 7,  8],
       [ 9, 10],
       [11, 12],
       [13, 14],
       [15, 16],
       [17, 18],
       [19, 20],
       [21, 22],
       [23, 24]])
>>> y
array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
8 hoặc 25 phần trăm.

>>>

>>> x_train, x_test, y_train, y_test = train_test_split(
...     x, y, test_size=4, random_state=4
... )
>>> x_train
array([[17, 18],
       [ 5,  6],
       [23, 24],
       [ 1,  2],
       [ 3,  4],
       [11, 12],
       [15, 16],
       [21, 22]])
>>> x_test
array([[ 7,  8],
       [ 9, 10],
       [13, 14],
       [19, 20]])
>>> y_train
array([1, 1, 0, 0, 1, 0, 1, 1])
>>> y_test
array([0, 1, 0, 0])

Với sự thay đổi này, bạn nhận được một kết quả khác với trước đây. Trước đó, bạn đã có một bộ đào tạo với chín mục và bộ thử nghiệm với ba mục. Bây giờ, nhờ cuộc tranh luận

>>> x_train, x_test, y_train, y_test = train_test_split(
...     x, y, test_size=0.33, random_state=4, stratify=y
... )
>>> x_train
array([[21, 22],
       [ 1,  2],
       [15, 16],
       [13, 14],
       [17, 18],
       [19, 20],
       [23, 24],
       [ 3,  4]])
>>> x_test
array([[11, 12],
       [ 7,  8],
       [ 5,  6],
       [ 9, 10]])
>>> y_train
array([1, 0, 1, 0, 1, 0, 0, 1])
>>> y_test
array([0, 0, 1, 1])
8, bộ đào tạo có tám mục và bộ thử nghiệm có bốn mục. Bạn có thể nhận được kết quả tương tự với
>>> x_train, x_test, y_train, y_test = train_test_split(
...     x, y, test_size=0.33, random_state=4, stratify=y
... )
>>> x_train
array([[21, 22],
       [ 1,  2],
       [15, 16],
       [13, 14],
       [17, 18],
       [19, 20],
       [23, 24],
       [ 3,  4]])
>>> x_test
array([[11, 12],
       [ 7,  8],
       [ 5,  6],
       [ 9, 10]])
>>> y_train
array([1, 0, 1, 0, 1, 0, 0, 1])
>>> y_test
array([0, 0, 1, 1])
9 vì 33 phần trăm trong số mười hai là khoảng bốn.

Có một sự khác biệt rất quan trọng hơn giữa hai ví dụ cuối cùng: Bây giờ bạn nhận được cùng một kết quả mỗi khi bạn chạy chức năng. Điều này là do bạn đã cố định trình tạo số ngẫu nhiên với

>>> x_train, x_test, y_train, y_test = train_test_split(
...     x, y, test_size=0.33, shuffle=False
... )
>>> x_train
array([[ 1,  2],
       [ 3,  4],
       [ 5,  6],
       [ 7,  8],
       [ 9, 10],
       [11, 12],
       [13, 14],
       [15, 16]])
>>> x_test
array([[17, 18],
       [19, 20],
       [21, 22],
       [23, 24]])
>>> y_train
array([0, 1, 1, 0, 1, 0, 0, 1])
>>> y_test
array([1, 0, 1, 0])
0.

Hình dưới đây cho thấy những gì diễn ra khi bạn gọi

$ conda install -c anaconda scikit-learn=0.23
7:

Hướng dẫn how do you split a dataset in python? - làm thế nào để bạn chia một tập dữ liệu trong python?

Các mẫu của bộ dữ liệu được xáo trộn ngẫu nhiên và sau đó chia thành các bộ đào tạo và kiểm tra theo kích thước bạn đã xác định.

Bạn có thể thấy rằng

sklearn.model_selection.train_test_split(*arrays, **options) -> list
6 có sáu số không và sáu cái. Tuy nhiên, bộ thử nghiệm có ba số không trong bốn mục. Nếu bạn muốn (xấp xỉ) giữ tỷ lệ của các giá trị
sklearn.model_selection.train_test_split(*arrays, **options) -> list
6 thông qua các bộ đào tạo và kiểm tra, thì hãy vượt qua
>>> x_train, x_test, y_train, y_test = train_test_split(
...     x, y, test_size=0.33, shuffle=False
... )
>>> x_train
array([[ 1,  2],
       [ 3,  4],
       [ 5,  6],
       [ 7,  8],
       [ 9, 10],
       [11, 12],
       [13, 14],
       [15, 16]])
>>> x_test
array([[17, 18],
       [19, 20],
       [21, 22],
       [23, 24]])
>>> y_train
array([0, 1, 1, 0, 1, 0, 0, 1])
>>> y_test
array([1, 0, 1, 0])
4. Điều này sẽ cho phép phân tách phân tầng:

>>>

>>> x_train, x_test, y_train, y_test = train_test_split(
...     x, y, test_size=0.33, random_state=4, stratify=y
... )
>>> x_train
array([[21, 22],
       [ 1,  2],
       [15, 16],
       [13, 14],
       [17, 18],
       [19, 20],
       [23, 24],
       [ 3,  4]])
>>> x_test
array([[11, 12],
       [ 7,  8],
       [ 5,  6],
       [ 9, 10]])
>>> y_train
array([1, 0, 1, 0, 1, 0, 0, 1])
>>> y_test
array([0, 0, 1, 1])

Bây giờ

>>> x_train, x_test, y_train, y_test = train_test_split(
...     x, y, test_size=4, random_state=4
... )
>>> x_train
array([[17, 18],
       [ 5,  6],
       [23, 24],
       [ 1,  2],
       [ 3,  4],
       [11, 12],
       [15, 16],
       [21, 22]])
>>> x_test
array([[ 7,  8],
       [ 9, 10],
       [13, 14],
       [19, 20]])
>>> y_train
array([1, 1, 0, 0, 1, 0, 1, 1])
>>> y_test
array([0, 1, 0, 0])
9 và
>>> x_train, x_test, y_train, y_test = train_test_split(
...     x, y, test_size=0.33, random_state=4, stratify=y
... )
>>> x_train
array([[21, 22],
       [ 1,  2],
       [15, 16],
       [13, 14],
       [17, 18],
       [19, 20],
       [23, 24],
       [ 3,  4]])
>>> x_test
array([[11, 12],
       [ 7,  8],
       [ 5,  6],
       [ 9, 10]])
>>> y_train
array([1, 0, 1, 0, 1, 0, 0, 1])
>>> y_test
array([0, 0, 1, 1])
1 có cùng tỷ lệ số không và các số không như mảng
sklearn.model_selection.train_test_split(*arrays, **options) -> list
6 ban đầu.

Các phân tách phân tầng được mong muốn trong một số trường hợp, như khi bạn phân loại một bộ dữ liệu mất cân bằng, một bộ dữ liệu có sự khác biệt đáng kể về số lượng mẫu thuộc về các lớp khác nhau.imbalanced dataset, a dataset with a significant difference in the number of samples that belong to distinct classes.

Cuối cùng, bạn có thể tắt dữ liệu xáo trộn và phân chia ngẫu nhiên với

>>> x_train, x_test, y_train, y_test = train_test_split(
...     x, y, test_size=0.33, shuffle=False
... )
>>> x_train
array([[ 1,  2],
       [ 3,  4],
       [ 5,  6],
       [ 7,  8],
       [ 9, 10],
       [11, 12],
       [13, 14],
       [15, 16]])
>>> x_test
array([[17, 18],
       [19, 20],
       [21, 22],
       [23, 24]])
>>> y_train
array([0, 1, 1, 0, 1, 0, 0, 1])
>>> y_test
array([1, 0, 1, 0])
8:

>>>

>>> x_train, x_test, y_train, y_test = train_test_split(
...     x, y, test_size=0.33, shuffle=False
... )
>>> x_train
array([[ 1,  2],
       [ 3,  4],
       [ 5,  6],
       [ 7,  8],
       [ 9, 10],
       [11, 12],
       [13, 14],
       [15, 16]])
>>> x_test
array([[17, 18],
       [19, 20],
       [21, 22],
       [23, 24]])
>>> y_train
array([0, 1, 1, 0, 1, 0, 0, 1])
>>> y_test
array([1, 0, 1, 0])

Bây giờ bạn có một sự phân chia trong đó hai phần ba mẫu đầu tiên trong các mảng

sklearn.model_selection.train_test_split(*arrays, **options) -> list
5 và
sklearn.model_selection.train_test_split(*arrays, **options) -> list
6 ban đầu được gán cho bộ đào tạo và thứ ba cuối cùng cho bộ thử nghiệm. Không xáo trộn. Không ngẫu nhiên.

Học máy được giám sát với $ conda install -c anaconda scikit-learn=0.23 7

Bây giờ, thời gian để thấy

$ conda install -c anaconda scikit-learn=0.23
7 hành động khi giải quyết các vấn đề học tập có giám sát. Bạn sẽ bắt đầu với một vấn đề hồi quy nhỏ có thể được giải quyết bằng hồi quy tuyến tính trước khi xem xét một vấn đề lớn hơn. Bạn cũng sẽ thấy rằng bạn cũng có thể sử dụng
$ conda install -c anaconda scikit-learn=0.23
7 để phân loại.

Ví dụ tối giản về hồi quy tuyến tính

Trong ví dụ này, bạn sẽ áp dụng những gì bạn đã học được cho đến nay để giải quyết một vấn đề hồi quy nhỏ. Bạn có thể học cách tạo bộ dữ liệu, chia chúng thành các tập hợp tập luyện và kiểm tra và sử dụng chúng cho hồi quy tuyến tính.

Như mọi khi, bạn sẽ bắt đầu bằng cách nhập các gói, chức năng hoặc lớp cần thiết. Bạn sẽ cần Numpy,

>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
>>> from sklearn.model_selection import train_test_split
4 và
$ conda install -c anaconda scikit-learn=0.23
7:

>>>

>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
>>> from sklearn.model_selection import train_test_split

Bây giờ bạn đã nhập mọi thứ bạn cần, bạn có thể tạo hai mảng nhỏ,

sklearn.model_selection.train_test_split(*arrays, **options) -> list
5 và
sklearn.model_selection.train_test_split(*arrays, **options) -> list
6, để thể hiện các quan sát và sau đó chia chúng thành các bộ đào tạo và thử nghiệm giống như bạn đã làm trước đây:

>>>

$ conda install -c anaconda scikit-learn=0.23
0

Bộ dữ liệu của bạn có hai mươi quan sát, hoặc ________ 35 -________ 36 cặp. Bạn chỉ định đối số

$ conda install -c anaconda scikit-learn=0.23
00, vì vậy bộ dữ liệu được chia thành một tập huấn luyện với mười hai quan sát và một bộ thử nghiệm với tám quan sát.

Bây giờ bạn có thể sử dụng bộ đào tạo để phù hợp với mô hình:

>>>

$ conda install -c anaconda scikit-learn=0.23
1

>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
>>> from sklearn.model_selection import train_test_split
4 tạo ra đối tượng đại diện cho mô hình, trong khi
$ conda install -c anaconda scikit-learn=0.23
02 đào tạo, hoặc phù hợp với mô hình và trả về nó. Với hồi quy tuyến tính, phù hợp với mô hình có nghĩa là xác định các giá trị đánh chặn tốt nhất (
$ conda install -c anaconda scikit-learn=0.23
03) và độ dốc (____104) của đường hồi quy.

Mặc dù bạn có thể sử dụng

>>> x_train, x_test, y_train, y_test = train_test_split(
...     x, y, test_size=4, random_state=4
... )
>>> x_train
array([[17, 18],
       [ 5,  6],
       [23, 24],
       [ 1,  2],
       [ 3,  4],
       [11, 12],
       [15, 16],
       [21, 22]])
>>> x_test
array([[ 7,  8],
       [ 9, 10],
       [13, 14],
       [19, 20]])
>>> y_train
array([1, 1, 0, 0, 1, 0, 1, 1])
>>> y_test
array([0, 1, 0, 0])
5 và
>>> x_train, x_test, y_train, y_test = train_test_split(
...     x, y, test_size=4, random_state=4
... )
>>> x_train
array([[17, 18],
       [ 5,  6],
       [23, 24],
       [ 1,  2],
       [ 3,  4],
       [11, 12],
       [15, 16],
       [21, 22]])
>>> x_test
array([[ 7,  8],
       [ 9, 10],
       [13, 14],
       [19, 20]])
>>> y_train
array([1, 1, 0, 0, 1, 0, 1, 1])
>>> y_test
array([0, 1, 0, 0])
9 để kiểm tra mức độ phù hợp, nhưng đây không phải là một thực hành tốt nhất. Một ước tính không thiên vị về hiệu suất dự đoán của mô hình của bạn dựa trên dữ liệu thử nghiệm:

>>>

$ conda install -c anaconda scikit-learn=0.23
2

$ conda install -c anaconda scikit-learn=0.23
07 Trả về hệ số xác định hoặc R², cho dữ liệu được truyền. Tối đa của nó là
$ conda install -c anaconda scikit-learn=0.23
08. Giá trị R² càng cao, phù hợp càng tốt. Trong trường hợp này, dữ liệu đào tạo mang lại hệ số cao hơn một chút. Tuy nhiên, R² được tính toán với dữ liệu thử nghiệm là một thước đo không thiên vị về hiệu suất dự đoán mô hình của bạn.coefficient of determination, or R², for the data passed. Its maximum is
$ conda install -c anaconda scikit-learn=0.23
08. The higher the R² value, the better the fit. In this case, the training data yields a slightly higher coefficient. However, the R² calculated with test data is an unbiased measure of your model’s prediction performance.

Đây là cách nó trông trên một biểu đồ:

Hướng dẫn how do you split a dataset in python? - làm thế nào để bạn chia một tập dữ liệu trong python?

Các chấm màu xanh lá cây đại diện cho ________ 35 -____ 36 cặp được sử dụng để đào tạo. Đường màu đen, được gọi là đường hồi quy ước tính, được xác định bởi kết quả của sự phù hợp mô hình: đánh chặn và độ dốc. Vì vậy, nó chỉ phản ánh các vị trí của các chấm màu xanh lá cây.

Các chấm trắng đại diện cho bộ thử nghiệm. Bạn sử dụng chúng để ước tính hiệu suất của mô hình (dòng hồi quy) với dữ liệu không được sử dụng để đào tạo.

Ví dụ hồi quy

Bây giờ bạn đã sẵn sàng chia một bộ dữ liệu lớn hơn để giải quyết vấn đề hồi quy. Bạn sẽ sử dụng bộ dữ liệu giá nhà Boston nổi tiếng, được bao gồm trong

>>> import numpy as np
>>> from sklearn.model_selection import train_test_split
2. Bộ dữ liệu này có 506 mẫu, 13 biến đầu vào và giá trị nhà là đầu ra. Bạn có thể lấy nó bằng
$ conda install -c anaconda scikit-learn=0.23
12.

Đầu tiên, nhập

$ conda install -c anaconda scikit-learn=0.23
7 và
$ conda install -c anaconda scikit-learn=0.23
12:

>>>

$ conda install -c anaconda scikit-learn=0.23
3

Bây giờ bạn đã nhập cả hai chức năng, bạn có thể khiến dữ liệu hoạt động với:

>>>

$ conda install -c anaconda scikit-learn=0.23
4

Như bạn có thể thấy,

$ conda install -c anaconda scikit-learn=0.23
12 với đối số
$ conda install -c anaconda scikit-learn=0.23
16 trả về một tuple với hai mảng numpy:

  1. Một mảng hai chiều với các đầu vào
  2. Một mảng một chiều với đầu ra

Bước tiếp theo là phân chia dữ liệu giống như trước:

>>>

$ conda install -c anaconda scikit-learn=0.23
5

Bây giờ bạn có các bộ đào tạo và kiểm tra. Dữ liệu đào tạo được chứa trong

>>> x_train, x_test, y_train, y_test = train_test_split(
...     x, y, test_size=4, random_state=4
... )
>>> x_train
array([[17, 18],
       [ 5,  6],
       [23, 24],
       [ 1,  2],
       [ 3,  4],
       [11, 12],
       [15, 16],
       [21, 22]])
>>> x_test
array([[ 7,  8],
       [ 9, 10],
       [13, 14],
       [19, 20]])
>>> y_train
array([1, 1, 0, 0, 1, 0, 1, 1])
>>> y_test
array([0, 1, 0, 0])
5 và
>>> x_train, x_test, y_train, y_test = train_test_split(
...     x, y, test_size=4, random_state=4
... )
>>> x_train
array([[17, 18],
       [ 5,  6],
       [23, 24],
       [ 1,  2],
       [ 3,  4],
       [11, 12],
       [15, 16],
       [21, 22]])
>>> x_test
array([[ 7,  8],
       [ 9, 10],
       [13, 14],
       [19, 20]])
>>> y_train
array([1, 1, 0, 0, 1, 0, 1, 1])
>>> y_test
array([0, 1, 0, 0])
9, trong khi dữ liệu để thử nghiệm là trong
>>> x_train, x_test, y_train, y_test = train_test_split(
...     x, y, test_size=4, random_state=4
... )
>>> x_train
array([[17, 18],
       [ 5,  6],
       [23, 24],
       [ 1,  2],
       [ 3,  4],
       [11, 12],
       [15, 16],
       [21, 22]])
>>> x_test
array([[ 7,  8],
       [ 9, 10],
       [13, 14],
       [19, 20]])
>>> y_train
array([1, 1, 0, 0, 1, 0, 1, 1])
>>> y_test
array([0, 1, 0, 0])
7 và
>>> x_train, x_test, y_train, y_test = train_test_split(
...     x, y, test_size=0.33, random_state=4, stratify=y
... )
>>> x_train
array([[21, 22],
       [ 1,  2],
       [15, 16],
       [13, 14],
       [17, 18],
       [19, 20],
       [23, 24],
       [ 3,  4]])
>>> x_test
array([[11, 12],
       [ 7,  8],
       [ 5,  6],
       [ 9, 10]])
>>> y_train
array([1, 0, 1, 0, 1, 0, 0, 1])
>>> y_test
array([0, 0, 1, 1])
1.

Khi bạn làm việc với các bộ dữ liệu lớn hơn, nó thường thuận tiện hơn để vượt qua quy mô đào tạo hoặc kiểm tra theo tỷ lệ.

$ conda install -c anaconda scikit-learn=0.23
21 có nghĩa là khoảng 40 phần trăm các mẫu sẽ được gán cho dữ liệu thử nghiệm và 60 phần trăm còn lại sẽ được gán cho dữ liệu đào tạo.

Cuối cùng, bạn có thể sử dụng tập huấn luyện (

>>> x_train, x_test, y_train, y_test = train_test_split(
...     x, y, test_size=4, random_state=4
... )
>>> x_train
array([[17, 18],
       [ 5,  6],
       [23, 24],
       [ 1,  2],
       [ 3,  4],
       [11, 12],
       [15, 16],
       [21, 22]])
>>> x_test
array([[ 7,  8],
       [ 9, 10],
       [13, 14],
       [19, 20]])
>>> y_train
array([1, 1, 0, 0, 1, 0, 1, 1])
>>> y_test
array([0, 1, 0, 0])
5 và
>>> x_train, x_test, y_train, y_test = train_test_split(
...     x, y, test_size=4, random_state=4
... )
>>> x_train
array([[17, 18],
       [ 5,  6],
       [23, 24],
       [ 1,  2],
       [ 3,  4],
       [11, 12],
       [15, 16],
       [21, 22]])
>>> x_test
array([[ 7,  8],
       [ 9, 10],
       [13, 14],
       [19, 20]])
>>> y_train
array([1, 1, 0, 0, 1, 0, 1, 1])
>>> y_test
array([0, 1, 0, 0])
9) để phù hợp với mô hình và bộ thử nghiệm (
>>> x_train, x_test, y_train, y_test = train_test_split(
...     x, y, test_size=4, random_state=4
... )
>>> x_train
array([[17, 18],
       [ 5,  6],
       [23, 24],
       [ 1,  2],
       [ 3,  4],
       [11, 12],
       [15, 16],
       [21, 22]])
>>> x_test
array([[ 7,  8],
       [ 9, 10],
       [13, 14],
       [19, 20]])
>>> y_train
array([1, 1, 0, 0, 1, 0, 1, 1])
>>> y_test
array([0, 1, 0, 0])
7 và
>>> x_train, x_test, y_train, y_test = train_test_split(
...     x, y, test_size=0.33, random_state=4, stratify=y
... )
>>> x_train
array([[21, 22],
       [ 1,  2],
       [15, 16],
       [13, 14],
       [17, 18],
       [19, 20],
       [23, 24],
       [ 3,  4]])
>>> x_test
array([[11, 12],
       [ 7,  8],
       [ 5,  6],
       [ 9, 10]])
>>> y_train
array([1, 0, 1, 0, 1, 0, 0, 1])
>>> y_test
array([0, 0, 1, 1])
1) để đánh giá mô hình không thiên vị. Trong ví dụ này, bạn sẽ áp dụng ba thuật toán hồi quy nổi tiếng để tạo các mô hình phù hợp với dữ liệu của bạn:

  1. Hồi quy tuyến tính với
    $ conda install -c anaconda scikit-learn=0.23
    
    26
  2. Độ dốc tăng cường với
    $ conda install -c anaconda scikit-learn=0.23
    
    27
  3. Rừng ngẫu nhiên với
    $ conda install -c anaconda scikit-learn=0.23
    
    28

Quá trình này khá giống với ví dụ trước:

  1. Nhập các lớp bạn cần. the classes you need.
  2. Tạo các trường hợp mô hình bằng cách sử dụng các lớp này. model instances using these classes.
  3. Phù hợp với các trường hợp mô hình với
    $ conda install -c anaconda scikit-learn=0.23
    
    02 bằng cách sử dụng tập huấn luyện.
    the model instances with
    $ conda install -c anaconda scikit-learn=0.23
    
    02
    using the training set.
  4. Đánh giá mô hình với
    $ conda install -c anaconda scikit-learn=0.23
    
    07 bằng cách sử dụng tập kiểm tra.
    the model with
    $ conda install -c anaconda scikit-learn=0.23
    
    07
    using the test set.

Ở đây, mã theo các bước được mô tả ở trên cho cả ba thuật toán hồi quy:

>>>

$ conda install -c anaconda scikit-learn=0.23
6

Bạn đã sử dụng các bộ dữ liệu đào tạo và kiểm tra của mình để phù hợp với ba mô hình và đánh giá hiệu suất của chúng. Thước đo độ chính xác thu được với

$ conda install -c anaconda scikit-learn=0.23
07 là hệ số xác định. Nó có thể được tính toán với bộ đào tạo hoặc thử nghiệm. Tuy nhiên, như bạn đã học, điểm số thu được với bộ kiểm tra thể hiện ước tính hiệu suất không thiên vị.

Như đã đề cập trong tài liệu, bạn có thể cung cấp các đối số tùy chọn cho

$ conda install -c anaconda scikit-learn=0.23
26,
$ conda install -c anaconda scikit-learn=0.23
27 và
$ conda install -c anaconda scikit-learn=0.23
28.
$ conda install -c anaconda scikit-learn=0.23
27 và
$ conda install -c anaconda scikit-learn=0.23
28 Sử dụng tham số
>>> x = np.arange(1, 25).reshape(12, 2)
>>> y = np.array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
>>> x
array([[ 1,  2],
       [ 3,  4],
       [ 5,  6],
       [ 7,  8],
       [ 9, 10],
       [11, 12],
       [13, 14],
       [15, 16],
       [17, 18],
       [19, 20],
       [21, 22],
       [23, 24]])
>>> y
array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
9 cho cùng một lý do mà
$ conda install -c anaconda scikit-learn=0.23
7 không: để đối phó với tính ngẫu nhiên trong các thuật toán và đảm bảo khả năng tái tạo.

Đối với một số phương pháp, bạn cũng có thể cần tỷ lệ tính năng. Trong những trường hợp như vậy, bạn nên phù hợp với các bộ cân bằng dữ liệu đào tạo và sử dụng chúng để chuyển đổi dữ liệu kiểm tra.

Ví dụ phân loại

Bạn có thể sử dụng

$ conda install -c anaconda scikit-learn=0.23
7 để giải quyết các vấn đề phân loại giống như cách bạn làm để phân tích hồi quy. Trong học máy, các vấn đề phân loại liên quan đến việc đào tạo một mô hình để áp dụng nhãn vào hoặc phân loại các giá trị đầu vào và sắp xếp bộ dữ liệu của bạn thành các danh mục.classification problems the same way you do for regression analysis. In machine learning, classification problems involve training a model to apply labels to, or classify, the input values and sort your dataset into categories.

Trong hồi quy logistic hướng dẫn trong Python, bạn sẽ tìm thấy một ví dụ về một nhiệm vụ nhận dạng chữ viết tay. Ví dụ cung cấp một minh chứng khác về việc chia dữ liệu vào các bộ đào tạo và kiểm tra để tránh sai lệch trong quá trình đánh giá.

Các chức năng xác nhận khác

Gói

>>> import numpy as np
>>> from sklearn.model_selection import train_test_split
0 cung cấp rất nhiều chức năng liên quan đến lựa chọn và xác thực mô hình, bao gồm cả những điều sau đây:

  • Cross-validation
  • Học đường
  • Điều chỉnh siêu đồng tính

Xác thực chéo là một tập hợp các kỹ thuật kết hợp các biện pháp về hiệu suất dự đoán để có được ước tính mô hình chính xác hơn.

Một trong những phương pháp xác nhận chéo được sử dụng rộng rãi là xác thực chéo K gấp K. Trong đó, bạn chia tập dữ liệu của mình thành K (thường là năm hoặc mười) tập hợp con, hoặc nếp gấp, có kích thước bằng nhau và sau đó thực hiện các quy trình đào tạo và kiểm tra k lần. Mỗi lần, bạn sử dụng một nếp gấp khác như bộ kiểm tra và tất cả các nếp gấp còn lại như tập huấn luyện. Điều này cung cấp các biện pháp K về hiệu suất dự đoán và sau đó bạn có thể phân tích độ lệch trung bình và độ lệch chuẩn của chúng.folds, of equal size and then perform the training and test procedures k times. Each time, you use a different fold as the test set and all the remaining folds as the training set. This provides k measures of predictive performance, and you can then analyze their mean and standard deviation.

Bạn có thể thực hiện xác thực chéo với

$ conda install -c anaconda scikit-learn=0.23
41,
$ conda install -c anaconda scikit-learn=0.23
42,
$ conda install -c anaconda scikit-learn=0.23
43 và một vài lớp và chức năng khác từ
>>> import numpy as np
>>> from sklearn.model_selection import train_test_split
0.

Một đường cong học tập, đôi khi được gọi là đường cong đào tạo, cho thấy điểm dự đoán của các bộ đào tạo và xác nhận phụ thuộc vào số lượng mẫu đào tạo. Bạn có thể sử dụng

$ conda install -c anaconda scikit-learn=0.23
45 để có được sự phụ thuộc này, điều này có thể giúp bạn tìm thấy kích thước tối ưu của bộ đào tạo, chọn HyperParameter, so sánh các mô hình, v.v.

Điều chỉnh hyperparameter, còn được gọi là tối ưu hóa hyperparameter, là quá trình xác định bộ siêu âm tốt nhất để xác định mô hình học máy của bạn.

>>> import numpy as np
>>> from sklearn.model_selection import train_test_split
0 cung cấp cho bạn một số tùy chọn cho mục đích này, bao gồm
$ conda install -c anaconda scikit-learn=0.23
47,
$ conda install -c anaconda scikit-learn=0.23
48,
$ conda install -c anaconda scikit-learn=0.23
49 và các tùy chọn khác. Chia dữ liệu của bạn cũng rất quan trọng để điều chỉnh siêu phân tích.

Sự kết luận

Bây giờ bạn đã biết tại sao và làm thế nào để sử dụng

$ conda install -c anaconda scikit-learn=0.23
7 từ
>>> import numpy as np
>>> from sklearn.model_selection import train_test_split
2. Bạn đã học được rằng, để ước tính không thiên vị về hiệu suất dự đoán của các mô hình học máy, bạn nên sử dụng dữ liệu đã được sử dụng để phù hợp với mô hình. Đó là lý do tại sao bạn cần chia bộ dữ liệu của mình thành đào tạo, kiểm tra và trong một số trường hợp, các tập hợp xác thực.
$ conda install -c anaconda scikit-learn=0.23
7
from
>>> import numpy as np
>>> from sklearn.model_selection import train_test_split
2. You’ve learned that, for an unbiased estimation of the predictive performance of machine learning models, you should use data that hasn’t been used for model fitting. That’s why you need to split your dataset into training, test, and in some cases, validation subsets.

Trong hướng dẫn này, bạn đã học được cách:

  • Sử dụng
    $ conda install -c anaconda scikit-learn=0.23
    
    7 để được đào tạo và kiểm tra bộ
    $ conda install -c anaconda scikit-learn=0.23
    
    7
    to get training and test sets
  • Kiểm soát kích thước của các tập hợp con với các tham số
    sklearn.model_selection.train_test_split(*arrays, **options) -> list
    
    8 và
    >>> x = np.arange(1, 25).reshape(12, 2)
    >>> y = np.array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    >>> x
    array([[ 1,  2],
           [ 3,  4],
           [ 5,  6],
           [ 7,  8],
           [ 9, 10],
           [11, 12],
           [13, 14],
           [15, 16],
           [17, 18],
           [19, 20],
           [21, 22],
           [23, 24]])
    >>> y
    array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    
    4
    sklearn.model_selection.train_test_split(*arrays, **options) -> list
    
    8
    and
    >>> x = np.arange(1, 25).reshape(12, 2)
    >>> y = np.array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    >>> x
    array([[ 1,  2],
           [ 3,  4],
           [ 5,  6],
           [ 7,  8],
           [ 9, 10],
           [11, 12],
           [13, 14],
           [15, 16],
           [17, 18],
           [19, 20],
           [21, 22],
           [23, 24]])
    >>> y
    array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    
    4
  • Xác định tính ngẫu nhiên của phân tách của bạn với tham số
    >>> x = np.arange(1, 25).reshape(12, 2)
    >>> y = np.array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    >>> x
    array([[ 1,  2],
           [ 3,  4],
           [ 5,  6],
           [ 7,  8],
           [ 9, 10],
           [11, 12],
           [13, 14],
           [15, 16],
           [17, 18],
           [19, 20],
           [21, 22],
           [23, 24]])
    >>> y
    array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    
    9randomness of your splits with the
    >>> x = np.arange(1, 25).reshape(12, 2)
    >>> y = np.array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    >>> x
    array([[ 1,  2],
           [ 3,  4],
           [ 5,  6],
           [ 7,  8],
           [ 9, 10],
           [11, 12],
           [13, 14],
           [15, 16],
           [17, 18],
           [19, 20],
           [21, 22],
           [23, 24]])
    >>> y
    array([0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0])
    
    9 parameter
  • Thu được phân tách phân tầng với tham số
    >>> x_train, x_test, y_train, y_test = train_test_split(x, y)
    >>> x_train
    array([[15, 16],
           [21, 22],
           [11, 12],
           [17, 18],
           [13, 14],
           [ 9, 10],
           [ 1,  2],
           [ 3,  4],
           [19, 20]])
    >>> x_test
    array([[ 5,  6],
           [ 7,  8],
           [23, 24]])
    >>> y_train
    array([1, 1, 0, 1, 0, 1, 0, 1, 0])
    >>> y_test
    array([1, 0, 0])
    
    5stratified splits with the
    >>> x_train, x_test, y_train, y_test = train_test_split(x, y)
    >>> x_train
    array([[15, 16],
           [21, 22],
           [11, 12],
           [17, 18],
           [13, 14],
           [ 9, 10],
           [ 1,  2],
           [ 3,  4],
           [19, 20]])
    >>> x_test
    array([[ 5,  6],
           [ 7,  8],
           [23, 24]])
    >>> y_train
    array([1, 1, 0, 1, 0, 1, 0, 1, 0])
    >>> y_test
    array([1, 0, 0])
    
    5 parameter
  • Sử dụng
    $ conda install -c anaconda scikit-learn=0.23
    
    7 như một phần của các thủ tục học máy được giám sátsupervised machine learning procedures

Bạn cũng đã thấy rằng mô-đun

>>> import numpy as np
>>> from sklearn.model_selection import train_test_split
0 cung cấp một số công cụ khác để xác thực mô hình, bao gồm xác thực chéo, đường cong học tập và điều chỉnh siêu đồng hồ.

Nếu bạn có câu hỏi hoặc nhận xét, sau đó xin vui lòng đặt chúng vào phần bình luận bên dưới.

Train_test_split trong Python là gì?

Train_test_split () Hàm: Phương thức Train_Test_Split () được sử dụng để chia dữ liệu của chúng tôi thành các bộ đào tạo và thử nghiệm. Đầu tiên, chúng ta cần chia dữ liệu của mình thành các tính năng (x) và nhãn (y). DataFrame được chia thành X_Train, X_Test, Y_Train và Y_Test. Các bộ x_train và Y_Train được sử dụng để đào tạo và lắp mô hình.used to split our data into train and test sets. First, we need to divide our data into features (X) and labels (y). The dataframe gets divided into X_train, X_test, y_train, and y_test. X_train and y_train sets are used for training and fitting the model.

Phương pháp nào được sử dụng để phân chia dữ liệu?

Phân chia dựa trên phương pháp của các điểm hỗ trợ (SP), ban đầu được phát triển để tìm các điểm đại diện tối ưu của phân phối liên tục. Chúng tôi điều chỉnh SP để lấy mẫu từ bộ dữ liệu bằng thuật toán hàng xóm gần nhất tuần tự.support points (SP), which was initially developed for finding the optimal representative points of a continuous distribution. We adapt SP for subsampling from a dataset using a sequential nearest neighbor algorithm.

Làm thế nào bạn nên chia một bộ dữ liệu thành các bộ thử nghiệm và đào tạo?

Tỷ lệ phân chia phổ biến nhất là 80:20.Đó là 80% bộ dữ liệu đi vào tập huấn luyện và 20% bộ dữ liệu đi vào bộ thử nghiệm.Trước khi chia dữ liệu, hãy đảm bảo rằng bộ dữ liệu đủ lớn.Phân chia tàu/thử nghiệm hoạt động tốt với các bộ dữ liệu lớn.

Phân chia dữ liệu tốt nhất là gì?

Tỷ lệ thường được sử dụng là 80:20, có nghĩa là 80% dữ liệu là để đào tạo và 20% để thử nghiệm.Các tỷ lệ khác như 70:30, 60:40 và thậm chí 50:50 cũng được sử dụng trong thực tế.Dường như không có hướng dẫn rõ ràng về tỷ lệ nào là tốt nhất hoặc tối ưu cho một bộ dữ liệu nhất định.80:20, which means 80% of the data is for training and 20% for testing. Other ratios such as 70:30, 60:40, and even 50:50 are also used in practice. There does not seem to be clear guidance on what ratio is best or optimal for a given dataset.