Làm thế nào để bạn chia một tập dữ liệu trong python?

Trong hướng dẫn Python này, chúng ta sẽ tìm hiểu cách Scikit learn Split data hoạt động trong Python. Và chúng tôi cũng sẽ đề cập đến các ví dụ khác nhau liên quan đến Scikit learn Chia dữ liệu. Hơn nữa, chúng tôi sẽ bao gồm các chủ đề này

  • Scikit learn Chia dữ liệu
  • Scikit learn Chỉ số kiểm tra tàu chia nhỏ
  • Scikit learn Chia theo nhóm
  • Scikit học Split K fold
  • Scikit tìm hiểu Chiến lược chia dữ liệu
  • Scikit tìm hiểu Chuỗi thời gian phân tách
  • Scikit học Chia tàu kiểm tra Val

Nếu bạn chưa quen với việc học Scikit, chúng tôi khuyên bạn nên đọc Scikit Learn in Python là gì

Mục lục

  • Scikit learn Chia dữ liệu
  • Scikit learn Chỉ số kiểm tra tàu chia nhỏ
  • Scikit learn Chia theo nhóm
  • Scikit học Split K fold
  • Scikit tìm hiểu Chiến lược chia dữ liệu
  • Scikit tìm hiểu Chuỗi thời gian phân tách
  • Scikit học Chia tàu kiểm tra Val

Scikit learn Chia dữ liệu

Trong phần này, chúng ta sẽ tìm hiểu về cách thức hoạt động của Scikit learn Split data trong python

Scikit learn split data frame được sử dụng để phân tách dữ liệu thành tập dữ liệu huấn luyện và kiểm tra chức năng split() được sử dụng để phân tách dữ liệu mà nó gọi là dữ liệu đầu vào để phân tách dữ liệu

Mã số

Trong đoạn mã sau, chúng tôi nhập một số thư viện mà từ đó chúng tôi có thể đưa khung dữ liệu vào bộ dữ liệu huấn luyện và thử nghiệm

  • x, y = số. sắp xếp(10). định hình lại ((5, 2)), phạm vi (5) được sử dụng để sắp xếp dữ liệu
  • array=() được sử dụng để xác định mảng
  • list(y) dùng để in danh sách dữ liệu ra màn hình
  • x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0. 33, random_state=42) được sử dụng để chia khung dữ liệu thành tập dữ liệu thử nghiệm và đào tạo
  • train_test_split(y, shuffle=False) được sử dụng để phân chia dữ liệu
import numpy as num
from sklearn.model_selection import train_test_split
x, y = num.arange(10).reshape((5, 2)), range(5)
x
array=([[1, 2],
       [3, 4],
       [5, 6],
       [7, 8],
       [9, 10]])
list(y)
x_train, x_test, y_train, y_test = train_test_split(
    x, y, test_size=0.33, random_state=42)

x_train
train_test_split(y, shuffle=False)

đầu ra

Sau khi chạy đoạn mã trên, chúng tôi nhận được đầu ra sau, trong đó chúng tôi có thể thấy rằng khung dữ liệu được chia thành tập dữ liệu huấn luyện và thử nghiệm

Làm thế nào để bạn chia một tập dữ liệu trong python?
Scikit học tách dữ liệu

Đọc. Scikit tìm hiểu Xử lý hình ảnh

Scikit learn Chỉ số kiểm tra tàu chia nhỏ

Trong phần này, chúng ta sẽ tìm hiểu về cách thức hoạt động của Scikit tìm hiểu Split train test intext trong python

Scikit learn split train test index được sử dụng để phân tách dữ liệu kiểm tra train thành chỉ mục kiểm tra train để tìm phân tách kiểm tra train. Hàm split() được sử dụng để chia dữ liệu thành chỉ mục văn bản tàu

Mã số

Trong đoạn mã sau, chúng tôi sẽ nhập một số thư viện mà từ đó chúng tôi có thể phân chia chỉ mục kiểm tra đào tạo

  • x = số. mảng([[2, 3], [4, 5], [6, 7], [8, 9], [4, 5], [6, 7]]) được sử dụng để tạo mảng
  • randomshuffle = ShuffleSplit(n_splits=5, test_size=. 25, random_state=0) được sử dụng để phân chia dữ liệu
  • cho train_index, test_index trong Randomshuffle. chia(x). được sử dụng để chia tập dữ liệu thành chỉ mục kiểm tra đào tạo
  • in(“ĐÀO TẠO. ”, train_index, “KIỂM TRA. ”, test_index) được sử dụng để in dữ liệu chỉ mục kiểm tra tàu
import numpy as num
from sklearn.model_selection import ShuffleSplit
x = num.array([[2, 3], [4, 5], [6, 7], [8, 9], [4, 5], [6, 7]])
y = num.array([1, 2, 1, 2, 1, 2])
randomshuffle = ShuffleSplit(n_splits=5, test_size=.25, random_state=0)
randomshuffle.get_n_splits(x)
print(randomshuffle)
for train_index, test_index in randomshuffle.split(x):
       print("TRAIN:", train_index, "TEST:", test_index)

đầu ra

Sau khi chạy đoạn mã trên, chúng tôi nhận được đầu ra sau, trong đó chúng tôi có thể thấy rằng dữ liệu được phân tách thành phân tách chỉ mục huấn luyện và kiểm tra

Làm thế nào để bạn chia một tập dữ liệu trong python?
scikit tìm hiểu chỉ số kiểm tra tàu tách

Đọc. Scikit học phi tuyến tính

Scikit learn Chia theo nhóm

Trong phần này, chúng ta sẽ tìm hiểu về cách hoạt động của Scikit learn split by group trong python

  • Scikit learn split group by được sử dụng để chia dữ liệu và chia dữ liệu thành các nhóm
  • Chúng ta có thể sử dụng hàm train_test_split() để chia dữ liệu thành tập huấn luyện và tập kiểm tra

Mã số

Trong đoạn mã sau, chúng tôi nhập một số thư viện mà từ đó chúng tôi có thể chia dữ liệu theo nhóm

  • iris = load_iris() được sử dụng để tải dữ liệu iris
  • x = mống mắt. dữ liệu được sử dụng để nhập giá trị của x
  • x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0. 6) được sử dụng để chia dữ liệu thành tập dữ liệu huấn luyện và kiểm tra
  • print(Counter(y_train)) được sử dụng để in giá trị của nhóm y train
  • print(Counter(y_test)) được sử dụng để in dữ liệu của nhóm kiểm tra y
from collections import Counter
import numpy as num

from sklearn.datasets import load_iris

from sklearn.model_selection import train_test_split

iris = load_iris()

x = iris.data
y = iris.target

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.6)

print(Counter(y_train))

print(Counter(y_test))

đầu ra

Trong kết quả sau đây, chúng ta có thể thấy rằng dữ liệu nhóm huấn luyện y và dữ liệu nhóm kiểm tra y được in trên màn hình

Làm thế nào để bạn chia một tập dữ liệu trong python?
Scikit học chia theo nhóm

Đọc. Scikit tìm hiểu Hướng dẫn KNN

Scikit học Split K fold

Trong phần này, chúng ta sẽ tìm hiểu về cách Scikit learn split Kfold hoạt động trong python

  • Scikit learn split Kfold dùng để chia dữ liệu thành K fold liên tiếp theo mặc định mà không bị xáo trộn dữ liệu
  • Tập dữ liệu được chia thành hai phần dữ liệu đào tạo và dữ liệu thử nghiệm với sự trợ giúp của phương thức train_test_split()

Mã số

Trong đoạn mã sau, chúng tôi sẽ nhập một số thư viện mà từ đó chúng tôi có thể chia tập dữ liệu thành K nếp gấp liên tiếp

  • con số. ngẫu nhiên. seed(1338) được sử dụng để tạo các số ngẫu nhiên
  • n_splits = 6 được sử dụng để chia dữ liệu thành sáu phần
  • phần trăm_classes = [0. 1, 0. 3, 0. 6] được sử dụng để tạo dữ liệu nhóm
  • nhóm = số. hstack([[ii] * 10 for ii in range(10)]) dùng để chia đều các nhóm
  • hình, trục = đồ thị. subplots() được sử dụng để vẽ đồ thị
  • trục. set() được sử dụng để đặt trục trên màn hình
from sklearn.model_selection import (
    TimeSeriesSplit,
    KFold,
    ShuffleSplit,
    StratifiedKFold,
    GroupShuffleSplit,
    GroupKFold,
    StratifiedShuffleSplit,
    StratifiedGroupKFold,
)
import numpy as num
import matplotlib.pyplot as plot
from matplotlib.patches import Patch

num.random.seed(1338)
cmap_data = plot.cm.Paired
cmap_cv = plot.cm.coolwarm
n_splits = 6

n_points = 100
x = num.random.randn(100, 10)

percentiles_classes = [0.1, 0.3, 0.6]
y = num.hstack([[ii] * int(100 * perc) for ii, perc in enumerate(percentiles_classes)])


group = num.hstack([[ii] * 10 for ii in range(10)])


def visualizegroup(classes, group, name):

    figure, axis = plot.subplots()
    axis.scatter(
        range(len(group)),
        [0.5] * len(group),
        c=group,
        marker="_",
        lw=60,
        cmap=cmap_data,
    )
    axis.scatter(
        range(len(group)),
        [3.5] * len(group),
        c=classes,
        marker="_",
        lw=60,
        cmap=cmap_data,
    )
    axis.set(
        ylim=[-1, 5],
        yticks=[0.5, 3.5],
        yticklabels=["Data\ngroup", "Data\nclass"],
        xlabel="Sample index",
    )


visualizegroup(y, group, "no groups")

đầu ra

Trong kết quả sau đây, chúng ta có thể thấy rằng tập dữ liệu được chia thành K nếp gấp liên tiếp theo mặc định mà không có bất kỳ sự xáo trộn dữ liệu nào

Làm thế nào để bạn chia một tập dữ liệu trong python?
Scikit học tách K lần

Đọc. Scikit học Phân tích tình cảm

Scikit tìm hiểu Chiến lược chia dữ liệu

Trong phần này, chúng ta sẽ tìm hiểu về cách Scikit tìm hiểu chiến lược dữ liệu phân tách hoạt động trong python

  • Scikit learn chiến lược chia dữ liệu được sử dụng để chia tập dữ liệu thành dữ liệu huấn luyện và dữ liệu thử nghiệm
  • Dữ liệu huấn luyện được sử dụng để điều chỉnh dữ liệu vào mô hình và dữ liệu thử nghiệm được sử dụng để đánh giá dữ liệu phù hợp
  • Chúng ta có thể tách dữ liệu thử nghiệm và đào tạo với sự trợ giúp của phương thức train_test_split()

Mã số

Trong đoạn mã sau, chúng tôi sẽ nhập một số thư viện mà từ đó chúng tôi có thể phân chia chiến lược dữ liệu

  • phạm vi = số. ngẫu nhiên. RandomState(0) được sử dụng để tạo các số ngẫu nhiên
  • y = phạm vi. poisson(lam=np. kinh nghiệm(x[. , 5]) / 2) được sử dụng cho mục tiêu số nguyên dương tương quan với nhiều số không
  • x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=range) được sử dụng để chia dữ liệu thành dữ liệu huấn luyện và thử nghiệm
  • lém lỉnh. fit(x_train, y_train) được sử dụng để điều chỉnh dữ liệu
  • in (glm. score(x_test, y_test)) được sử dụng để in điểm
  • numroc = make_pipeline(SimpleImputer(strategy=”median”), StandardScaler()) được sử dụng để tạo đường dẫn từ tập dữ liệu
  • gbdt_no_cst = HistGradientBoostingRegressor(). fit(x, y) được sử dụng để phù hợp với mô hình hồi quy tăng cường độ dốc lịch sử
  • display = plot_partial_dependence() được sử dụng để vẽ dữ liệu trên biểu đồ
  • trưng bày. trục_[0, 0]. plot() được sử dụng để hiển thị các trục trên màn hình
import numpy as num
from sklearn.model_selection import train_test_split
from sklearn.linear_model import PoissonRegressor
from sklearn.ensemble import HistGradientBoostingRegressor

nsamples, nfeatures = 1000, 20
range = num.random.RandomState(0)
x = range.randn(nsamples, nfeatures)

y = range.poisson(lam=np.exp(x[:, 5]) / 2)
x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=range)
glm = PoissonRegressor()
gbdt = HistGradientBoostingRegressor(loss="poisson", learning_rate=0.01)
glm.fit(x_train, y_train)
gbdt.fit(x_train, y_train)
print(glm.score(x_test, y_test))
print(gbdt.score(x_test, y_test))
from sklearn import set_config
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.impute import SimpleImputer
from sklearn.compose import make_column_transformer
from sklearn.linear_model import LogisticRegression

set_config(display="diagram")

numproc = make_pipeline(SimpleImputer(strategy="median"), StandardScaler())

catproc = make_pipeline(
    SimpleImputer(strategy="constant", fill_value="missing"),
    OneHotEncoder(handle_unknown="ignore"),
)

preprocessor = make_column_transformer(
    (numproc, ("feat1", "feat3")), (catproc, ("feat0", "feat2"))
)

classifier = make_pipeline(preprocessor, LogisticRegression())
classifier
import scipy
import numpy as num
from sklearn.model_selection import train_test_split
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
from sklearn.metrics import completeness_score

range = num.random.RandomState(0)
x, y = make_blobs(random_state=range)
x = scipy.sparse.csr_matrix(x)
x_train, x_test, _, y_test = train_test_split(x, y, random_state=range)
kmeans = KMeans(algorithm="elkan").fit(x_train)
print(completeness_score(kmeans.predict(x_test), y_test))
import numpy as num
from matplotlib import pyplot as plot
from sklearn.model_selection import train_test_split
from sklearn.inspection import plot_partial_dependence
from sklearn.ensemble import HistGradientBoostingRegressor

nsamples = 500
range = num.random.RandomState(0)
x = range.randn(nsamples, 2)
noise = range.normal(loc=0.0, scale=0.01, size=nsamples)
y = 5 * x[:, 0] + num.sin(10 * num.pi * x[:, 0]) - noise

gbdt_no_cst = HistGradientBoostingRegressor().fit(x, y)
gbdt_cst = HistGradientBoostingRegressor(monotonic_cst=[1, 0]).fit(x, y)

display = plot_partial_dependence(
    gbdt_no_cst,
    x,
    features=[0],
    feature_names=["feature 0"],
    line_kw={"linewidth": 4, "label": "unconstrained", "color": "tab:red"},
)
plot_partial_dependence(
    gbdt_cst,
    x,
    features=[0],
    line_kw={"linewidth": 4, "label": "constrained", "color": "tab:cyan"},
    ax=display.axes_,
)
display.axes_[0, 0].plot(
    x[:, 0], y, "o", alpha=0.5, zorder=-1, label="samples", color="tab:orange"
)
display.axes_[0, 0].set_ylim(-3, 3)
display.axes_[0, 0].set_xlim(-1, 1)
plot.legend()
plot.show()

đầu ra

Sau khi chạy đoạn mã trên, chúng tôi nhận được đầu ra sau, chúng tôi có thể thấy rằng tập dữ liệu được phân chia theo chiến lược dữ liệu của họ

Làm thế nào để bạn chia một tập dữ liệu trong python?
Scikit tìm hiểu chiến lược phân tách dữ liệu

Đọc. Scikit học Gradient Descent

Scikit tìm hiểu Chuỗi thời gian phân tách

Trong phần này, chúng ta sẽ tìm hiểu về cách Scikit learn split time series hoạt động trong python

Scikit learn chuỗi thời gian phân chia được sử dụng dữ liệu đào tạo và thử nghiệm để phân chia thời gian tại một khoảng thời gian cố định

Mã số

Trong đoạn mã sau, chúng tôi sẽ nhập một số thư viện mà từ đó chúng tôi có thể phân chia dữ liệu chuỗi thời gian

  • hình, trục = đồ thị. subplots(figsize=(14, 6)) được sử dụng để vẽ đồ thị
  • trung bình tuần_nhu cầu = khung dữ liệu. groupby([“ngày trong tuần”, “giờ”]). mean()[“count”] được sử dụng để tính nhu cầu trung bình trong tuần
  • trung bìnhtuần_nhu cầu. biểu đồ (trục = trục) = trục. set() được sử dụng để vẽ trục trên biểu đồ
  • chuỗi thời gian cv = TimeSeriesSplit() được sử dụng để phân chia dữ liệu chuỗi thời gian
  • X. iloc[test_0] dùng để chọn dữ liệu theo vị trí
from sklearn.datasets import fetch_openml

bikesharing = fetch_openml("Bike_Sharing_Demand", version=2, as_frame=True)
dataframe = bikesharing.frame
import matplotlib.pyplot as plot


figure, axis = plot.subplots(figsize=(14, 6))
averageweek_demand = dataframe.groupby(["weekday", "hour"]).mean()["count"]
averageweek_demand.plot(ax=axis)
_ = axis.set(
    title="Average Bike Demand During the week",
    xticks=[i * 24 for i in range(7)],
    xticklabels=["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
    xlabel="Time of the week",
    ylabel="Number of bike rentals",
)
y = dataframe["count"] / dataframe["count"].max()
figure, axis = plot.subplots(figsize=(14, 6))
y.hist(bins=30, ax=axis)
_ = axis.set(
    xlabel="Fraction of rented fleet demand",
    ylabel="Number of hours",
)
x = dataframe.drop("count", axis="columns")
x
from sklearn.model_selection import TimeSeriesSplit

timeseries_cv = TimeSeriesSplit(
    n_splits=7,
    gap=48,
    max_train_size=10000,
    test_size=1000,
)
allsplits = list(timeseries_cv.split(x, y))
train_0, test_0 = allsplits[0]
X.iloc[test_0]

đầu ra

Sau khi chạy đoạn mã trên, chúng tôi nhận được đầu ra sau, trong đó chúng tôi có thể thấy rằng chuỗi thời gian phân tách dữ liệu được thực hiện trên màn hình

Làm thế nào để bạn chia một tập dữ liệu trong python?
Scikit tìm hiểu chuỗi thời gian phân chia

Đọc. Scikit học Thuật toán di truyền

Scikit học Chia tàu kiểm tra Val

Trong phần này, chúng ta sẽ tìm hiểu cách thức hoạt động của Scikit learn slit train test Val trong python

  • Scikit learn split train test val được sử dụng để chia tập dữ liệu thành dữ liệu huấn luyện và kiểm tra và nhận giá trị của dữ liệu phân tách kiểm tra huấn luyện
  • Dữ liệu huấn luyện được sử dụng để điều chỉnh dữ liệu vào mô hình và dữ liệu thử nghiệm được sử dụng để đánh giá dữ liệu phù hợp

Mã số

Trong đoạn mã sau, chúng tôi sẽ nhập một số thư viện mà từ đó chúng tôi có thể tách val kiểm tra tàu

  • x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=0) được sử dụng để chia tập dữ liệu thành dữ liệu thử nghiệm đào tạo
  • hình, trục = đồ thị. subplots() được sử dụng để vẽ hình hoặc trục trên biểu đồ
  • trục. set_xlabel(“Effective Alpha”) được sử dụng để vẽ nhãn x trên biểu đồ
  • trục. set_title(“Tổng tạp chất so với alpha hiệu quả cho tập huấn luyện”) được sử dụng để vẽ tiêu đề trên màn hình
import matplotlib.pyplot as plot
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_breast_cancer
from sklearn.tree import DecisionTreeClassifier
x, y = load_breast_cancer(return_X_y=True)
x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=0)

classifier = DecisionTreeClassifier(random_state=0)
path = classifier.cost_complexity_pruning_path(x_train, y_train)
ccpalphas, impurities = path.ccp_alphas, path.impurities
figure, axis = plot.subplots()
axis.plot(ccpalphas[:-2], impurities[:-2], marker="o", drawstyle="steps-post")
axis.set_xlabel("Effective Alpha")
axis.set_ylabel("Total Impurity Of Leaves")
axis.set_title("Total Impurity vs effective alpha for training set")

đầu ra

Sau khi chạy đoạn mã trên, chúng tôi nhận được đầu ra sau, trong đó chúng tôi có thể thấy rằng biểu đồ được vẽ trên màn hình và cũng nhận được giá trị kiểm tra tàu phân tách

Làm thế nào để bạn chia một tập dữ liệu trong python?
Scikit tìm hiểu bài kiểm tra tàu tách val

Bạn cũng có thể muốn đọc các hướng dẫn tìm hiểu Scikit sau đây

  • Hướng dẫn phân loại Scikit learn
  • Scikit học Lựa chọn tính năng
  • Scikit tìm hiểu hồi quy tuyến tính
  • Scikit tìm hiểu Ma trận nhầm lẫn
  • Scikit học Điều chỉnh siêu tham số

Vì vậy, trong hướng dẫn này, chúng ta đã thảo luận về Scikit, tìm hiểu dữ liệu Phân tách và chúng ta cũng đã đề cập đến các ví dụ khác nhau liên quan đến việc triển khai nó. Dưới đây là danh sách các ví dụ mà chúng tôi đã đề cập

  • Scikit learn Chia dữ liệu
  • Scikit learn Chỉ số kiểm tra tàu chia nhỏ
  • Scikit learn Chia theo nhóm
  • Scikit học Split K fold
  • Scikit tìm hiểu Chiến lược chia dữ liệu
  • Scikit tìm hiểu Chuỗi thời gian phân tách
  • Scikit học Chia tàu kiểm tra Val

Làm thế nào để bạn chia một tập dữ liệu trong python?

Bijay Kumar

Python là một trong những ngôn ngữ phổ biến nhất ở Hoa Kỳ. Tôi đã làm việc với Python trong một thời gian dài và tôi có kinh nghiệm làm việc với nhiều thư viện khác nhau trên Tkinter, Pandas, NumPy, Turtle, Django, Matplotlib, Tensorflow, Scipy, Scikit-Learn, v.v… Tôi có kinh nghiệm làm việc với nhiều khách hàng khác nhau . Kiểm tra hồ sơ của tôi

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

SPlit dựa trên phương pháp điểm hỗ trợ (SP) , ban đầu được phát triển để tìm đ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 con từ tập dữ liệu bằng thuật toán hàng xóm gần nhất tuần tự.

Bạn nên chia tập dữ liệu thành tập kiểm tra và tập huấn luyện như thế nào?

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

Sự phân chia tốt nhất cho dữ liệu là gì?

Tỷ lệ thường được sử dụng là 80. 20 , có nghĩa là 80% dữ liệu dành cho đào tạo và 20% dành cho 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 tập dữ liệu nhất định.