1
from datasets import ClassLabel, Sequence
import random
import pandas as pd
from IPython.display import display, HTML

def show_random_elements(dataset, num_examples=10):
    assert num_examples <= len(dataset), "Can't pick more elements than there are in the dataset."
    picks = []
    for _ in range(num_examples):
        pick = random.randint(0, len(dataset)-1)
        while pick in picks:
            pick = random.randint(0, len(dataset)-1)
        picks.append(pick)

    df = pd.DataFrame(dataset[picks])
    for column, typ in dataset.features.items():
        if isinstance(typ, ClassLabel):          
            df[column] = df[column].transform(lambda i: typ.names[i])
        elif isinstance(typ, Sequence) and isinstance(typ.feature, ClassLabel):
            df[column] = df[column].transform(lambda x: [typ.feature.names[i] for i in x])
    display(HTML(df.to_html()))

上面的代码是显示在 HuggingFace 数据集中随机选取的一些示例的函数。

我有两个问题。

  1. (lambda i: typ.names[i])

我不明白这个 lambda 函数到底做了什么。

  1. 与第一个问题类似,为什么df[column]需要转换?

正如我print(df[column])在 line 之前和之后放置的那样df[column] = df[column].transform(lambda i: typ.names[i]),我看到没有任何改变。

谢谢。

4

0 回答 0