用已经存在的id列替换编码器列表

2024-06-17 13:40:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在研究从Kaggle获得的youtube数据集,我正在学习关于文本分类的教程,https://github.com/agrawal-rohit/Text-Classification-Analysis/blob/master/Text%20Classification%20Analysis.ipynb。 在此数据集中,有一个视频类别列,它是一个描述视频的字符串。 我的问题是关于标签编码器部分。我知道标签编码器用于将文本转换为数字进行分类。这是密码

# Encode classes
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
le.fit(data.Category)
data.Category = le.transform(data.Category)
data.head(5)

然后,应用TF-IDF对文本特征进行矢量化

# TF-IDF
from sklearn.feature_extraction.text import TfidfVectorizer
tfidf_title = TfidfVectorizer(sublinear_tf=True, min_df=5, norm='l2', encoding='latin-1',   ngram_range=(1, 2), stop_words='english')
tfidf_desc = TfidfVectorizer(sublinear_tf=True, min_df=5, norm='l2', encoding='latin-1', ngram_range=(1, 2), stop_words='english')
labels = data.Category
features_title = tfidf_title.fit_transform(data.Title).toarray()
features_description = tfidf_desc.fit_transform(data.Description).toarray()
print('Title Features Shape: ' + str(features_title.shape))
print('Description Features Shape: ' + str(features_description.shape)) 

最后,为每个类打印5个最重要的特性

# Best 5 keywords for each class using Title Feaures
from sklearn.feature_selection import chi2
import numpy as np
N = 5
for current_class in list(le.classes_):
    current_class_id = le.transform([current_class])[0]
    features_chi2 = chi2(features_title, labels == current_class_id)
    indices = np.argsort(features_chi2[0])
    feature_names = np.array(tfidf_title.get_feature_names())[indices]
    unigrams = [v for v in feature_names if len(v.split(' ')) == 1]
    bigrams = [v for v in feature_names if len(v.split(' ')) == 2]
    print("# '{}':".format(current_class))
    print("Most correlated unigrams:")
    print('-' *30)
    print('. {}'.format('\n. '.join(unigrams[-N:])))
    print("Most correlated bigrams:")
    print('-' *30)
    print('. {}'.format('\n. '.join(bigrams[-N:])))
    print("\n")

我这里的问题是,如果我已经有一个category_id列和一个category列,那么显示哪个id属于哪个类(这里我不需要编码器部分)。 在本例中,for循环从编码器列表中提取类别。那么,我如何在不使用这里的编码部分的情况下循环遍历category_id列并打印属于该id的类别呢

for current_class in list(le.classes_):
current_class_id = le.transform([current_class])[0]