استخراج نمونه های آموزشی از دیتاست - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

استخراج نمونه های آموزشی از دیتاست

0 امتیاز
سلام من یک فایل دارم شامل ۴۰۱۹ گره با برچسب کلاس که مقادیر ۱, ۲ و ۳ دارند.
الان میخوام بصورت رندوم از هر کلاس ۲۰ گره ( نمونه ) رو انتخاب و در یک فایل جدید ذخیره کنم. یعنی جمعا ۶۰ نمونه رو انتخاب کنم.( از هر کلاس ۲۰ نمونه)
کسی میتونه کمک کنه لطفا.
ضمنا از پارامتر seed هم استفاده کنم.
سوال شده شهریور 12, 1402 بوسیله ی آزاد  

1 پاسخ

0 امتیاز

سلام.  شما می‌توانید از کتابخانه‌ی numpy در پایتون برای انجام این کار استفاده کنید. در زیر یک نمونه کد برای این کار آورده شده است:

import numpy as np

# Set the seed for generating random numbers
np.random.seed(0)

# Load the labels from a file
labels = np.loadtxt('labels.txt')

# Define the number of labels to select from each class
n_samples = 60

# Initialize the output array
output = []

# For each class label
for label in [1, 2, 3]:
    # Select all labels with the current class label
    class_labels = labels[labels == label]
    
    # Randomly select n_samples from class_labels
    samples = np.random.choice(class_labels, n_samples, replace=False)
    
    # Add the selected samples to the output array
    output.extend(samples)

# Save the output to a new file
np.savetxt('output.txt', np.array(output), fmt='%d')

 

 

 

 

پاسخ داده شده شهریور 12, 1402  بوسیله ی farnoosh (امتیاز 8,362)   20 44 59
ویرایش شده شهریور 14, 1402 بوسیله ی farnoosh
سلام مجدد و تشکر از راهنماییتون
 داده های من در یک آرایه به نام x با 4020 عنصر ذخیره شده. اندیس آرایه شماره گره هست از 0 تا 4019 و مقادیر آرایه یکی از اعداد 1، 2 یا 3 است که مربوط به کلاس  یا برچسب گره هست. الان میخوام از بین این 4020 گره 60 گره رو جدا کنم و در یک فایل دیگه برای آموزش مدل ذخیره کنم. 60 نمونه انتخاب شده باید طوری باشن که از هر کلاس 20 نمونه رو انتخاب کرده باشیم. 20 نمونه از کلاس 1، 20 نمونه کلاس 2 و 20 نمونه از کلاس 3
کدی که ارسال فرمودین این خطا رو بهم میده
class_data = data[data[:, 0] == label]

IndexError: too many indices for array: array is 1-dimensional, but 2 were indexed
من کد را تغییر دادم
خیلی خیلی از لطفتون سپاسگزارم مشکلم حل شد
اندیس حلقه for مشکل داشت باید 0 و 1 و 2 میذاشتم در کد بالا چون نمونه ها از این 3 کلاسند.

for label in [۱, ۲, ۳]:
for label in [۰, ۱, ۲]:
...