[ad_1]
Mục lục
1. Sử dụng NumPy
2. Sử dụng Scikit-learn
3. Sử dụng SciPy
4. Sử dụng Faker
5. Sử dụng Synthetic Data Vault (SDV)
Kết luận và các bước tiếp theo
Thư viện Python nổi tiếng nhất để xử lý đại số tuyến tính và tính toán số cũng hữu ích cho việc tạo dữ liệu.
Trong ví dụ này, tôi sẽ chỉ cách tạo một tập dữ liệu có nhiễu có mối quan hệ tuyến tính với các giá trị mục tiêu. Nó có thể hữu ích để thử nghiệm các mô hình hồi quy tuyến tính.
# importing modules
from matplotlib import pyplot as plt
import numpy as npdef create_data(N, w):
"""
Creates a dataset with noise having a linear relationship with the goal values.
N: variety of samples
w: goal values
"""
# Function matrix with random knowledge
X = np.random.rand(N, 1) * 10
# goal values with noise usually distributed
y = w(0) * X + w(1) + np.random.randn(N, 1)
return X, y
# Visualize the info
X, y = create_data(200, (2, 1))
plt.determine(figsize=(10, 6))
plt.title('Simulated Linear Knowledge')
plt.xlabel('X')
plt.ylabel('y')
plt.scatter(X, y)
plt.present()
Trong ví dụ này, tôi sẽ sử dụng NumPy để tạo dữ liệu chuỗi thời gian tổng hợp với xu hướng tuyến tính và thành phần theo mùa. Ví dụ đó hữu ích cho mô hình tài chính và dự đoán thị trường chứng khoán.
def create_time_series(N, w):
"""
Creates a time collection knowledge with a linear pattern and a seasonal element.
N: variety of samples
w: goal values
"""
# time values
time = np.arange(0,N)
# linear pattern
pattern = time * w(0)
# seasonal element
seasonal = np.sin(time * w(1))
# noise
noise = np.random.randn(N)
# goal values
y = pattern + seasonal + noise
return time, y# Visualize the info
time, y = create_time_series(100, (0.25, 0.2))
plt.determine(figsize=(10, 6))
plt.title('Simulated Time Collection Knowledge')
plt.xlabel('Time')
plt.ylabel('y')
plt.plot(time, y)
plt.present()
Đôi khi cần dữ liệu có đặc điểm cụ thể. Ví dụ, bạn có thể cần một tập dữ liệu có nhiều chiều với chỉ một vài chiều thông tin cho các tác vụ giảm chiều. Trong trường hợp đó, ví dụ bên dưới cho thấy một phương pháp thích hợp để tạo các tập dữ liệu như vậy.
# create simulated knowledge for evaluation
np.random.seed(42)
# Generate a low-dimensional sign
low_dim_data = np.random.randn(100, 3)# Create a random projection matrix to mission into greater dimensions
projection_matrix = np.random.randn(3, 6)
# Venture the low-dimensional knowledge to greater dimensions
high_dim_data = np.dot(low_dim_data, projection_matrix)
# Add some noise to the high-dimensional knowledge
noise = np.random.regular(loc=0, scale=0.5, dimension=(100, 6))
data_with_noise = high_dim_data + noise
X = data_with_noise
Đoạn mã trên tạo ra một tập dữ liệu với 100 quan sát và 6 tính năng dựa trên mảng có ít chiều hơn chỉ có 3 chiều.
Ngoài các mô hình học máy, Scikit-learn còn có các trình tạo dữ liệu hữu ích để xây dựng các tập dữ liệu nhân tạo với kích thước và độ phức tạp được kiểm soát.
Các phân loại phương pháp này có thể được sử dụng để tạo một tập dữ liệu n-class ngẫu nhiên. Phương pháp đó cho phép tạo các tập dữ liệu với số lượng quan sát, tính năng và lớp đã chọn.
Nó có thể hữu ích cho việc thử nghiệm và gỡ lỗi các mô hình phân loại như máy vectơ hỗ trợ, cây quyết định và Naive Bayes.
X, y = make_classification(n_samples=1000, n_features=5, n_classes=2)#Visualize the primary rows of the artificial dataset
import pandas as pd
df = pd.DataFrame(X, columns=('feature1', 'feature2', 'feature3', 'feature4', 'feature5'))
df('goal') = y
df.head()
Tương tự như vậy, thực hiện_hồi quy Phương pháp này hữu ích cho việc tạo tập dữ liệu để phân tích hồi quy. Nó cho phép thiết lập số lượng quan sát, số lượng tính năng, độ lệch và nhiễu của tập dữ liệu kết quả.
from sklearn.datasets import make_regressionX,y, coef = make_regression(n_samples=100, # variety of observations
n_features=1, # variety of options
bias=10, # bias time period
noise=50, # noise degree
n_targets=1, # variety of goal values
random_state=0, # random seed
coef=True # return coefficients
)
Phương pháp make_blobs cho phép tạo ra các “blobs” nhân tạo với dữ liệu có thể được sử dụng cho các tác vụ phân cụm. Nó cho phép thiết lập tổng số điểm trong tập dữ liệu, số cụm và độ lệch chuẩn trong cụm.
from sklearn.datasets import make_blobsX,y = make_blobs(n_samples=300, # variety of observations
n_features=2, # variety of options
facilities=3, # variety of clusters
cluster_std=0.5, # customary deviation of the clusters
random_state=0)
Thư viện SciPy (viết tắt của Scientific Python) cùng với NumPy là một trong những thư viện tốt nhất để xử lý tính toán số, tối ưu hóa, phân tích thống kê và nhiều tác vụ toán học khác. Mô hình thống kê của SciPy có thể tạo dữ liệu mô phỏng từ nhiều phân phối thống kê, chẳng hạn như phân phối chuẩn, phân phối nhị thức và phân phối mũ.
from scipy.stats import norm, binom, expon
# Regular Distribution
norm_data = norm.rvs(dimension=1000)
# Binomial distribution
binom_data = binom.rvs(n=50, p=0.8, dimension=1000)
# Exponential distribution
exp_data = expon.rvs(scale=.2, dimension=10000)
Còn dữ liệu không phải số thì sao? Chúng ta thường cần đào tạo mô hình của mình trên dữ liệu không phải số hoặc dữ liệu người dùng như tên, địa chỉ và e mail. Một giải pháp để tạo dữ liệu thực tế tương tự như thông tin người dùng là sử dụng thư viện Faker Python.
Thư viện Faker có thể tạo ra dữ liệu thuyết phục có thể được sử dụng để kiểm tra các ứng dụng và bộ phân loại học máy. Trong ví dụ bên dưới, tôi sẽ chỉ cho bạn cách tạo một tập dữ liệu giả với thông tin tên, địa chỉ, số điện thoại và e mail.
from faker import Fakerdef create_fake_data(N):
"""
Creates a dataset with faux knowledge.
N: variety of samples
"""
faux = Faker()
names = (faux.identify() for _ in vary(N))
addresses = (faux.deal with() for _ in vary(N))
emails = (faux.e mail() for _ in vary(N))
phone_numbers = (faux.phone_number() for _ in vary(N))
fake_df = pd.DataFrame({'Identify': names, 'Handle': addresses, 'E mail': emails, 'Cellphone Quantity': phone_numbers})
return fake_df
fake_users = create_fake_data(100)
fake_users.head()
Nếu bạn có một tập dữ liệu không có đủ quan sát hoặc bạn cần nhiều dữ liệu tương tự như tập dữ liệu hiện có để bổ sung cho bước đào tạo của mô hình học máy thì sao? Artificial Knowledge Vault (SDV) là một thư viện Python cho phép tạo các tập dữ liệu tổng hợp bằng các mô hình thống kê.
Trong ví dụ dưới đây, chúng tôi sẽ sử dụng SDV để mở rộng tập dữ liệu demo:
from sdv.datasets.demo import download_demo# Load the 'grownup' dataset
adult_data, metadata = download_demo(dataset_name='grownup', modality='single_table')
adult_data.head()
from sdv.single_table import GaussianCopulaSynthesizer
# Use GaussianCopulaSynthesizer to coach on the info
mannequin = GaussianCopulaSynthesizer(metadata)
mannequin.match(adult_data)# Generate Artificial knowledge
simulated_data = mannequin.pattern(100)
simulated_data.head()
Hãy quan sát xem dữ liệu rất giống với tập dữ liệu gốc nhưng đây là dữ liệu tổng hợp.
Bài viết trình bày 5 cách tạo bộ dữ liệu mô phỏng và tổng hợp có thể sử dụng cho các dự án học máy, mô hình thống kê và các tác vụ khác liên quan đến dữ liệu. Các ví dụ được hiển thị rất dễ hiểu, vì vậy tôi khuyên bạn nên khám phá mã, đọc tài liệu có sẵn và phát triển các phương pháp tạo dữ liệu khác phù hợp hơn với mọi nhu cầu.
Như đã nói ở trên, các nhà khoa học dữ liệu, chuyên gia học máy và nhà phát triển có thể hưởng lợi từ việc sử dụng bộ dữ liệu tổng hợp bằng cách cải thiện hiệu suất mô hình và giảm chi phí sản xuất và thử nghiệm ứng dụng.
Kiểm tra sổ tay có ghi chép tất cả các phương pháp được nêu trong bài viết:
[ad_2]
Source link