当前位置: 首页 > 知识库问答 >
问题:

面向分类问题的多文本列特征提取

夹谷飞龙
2023-03-14

从多个文本列中提取特征并对其应用任何分类算法的正确方法是什么?如果我做错了,请建议我

示例数据集

自变量:描述1、描述2、状态、NumericCol1、NumericCol2

依赖变量:TargetClass

代码:

########### Feature Exttraction for Text Data #####################
######### Description1 (it can be any wordembedding technique like countvectorizer, tfidf, word2vec,bert..etc)
tfidf = TfidfVectorizer(max_features = 500, 
                              ngram_range = (1,3),
                              stop_words = "english")
X_Description1 = tfidf.fit_transform(df["Description1"].tolist())

######### Description2 (it can be any wordembedding technique like countvectorizer, tfidf, word2vec,bert..etc)
tfidf = TfidfVectorizer(max_features = 500, 
                              ngram_range = (1,3),
                              stop_words = "english")
X_Description2 = tfidf.fit_transform(df["Description2"].tolist())


######### State (have 100 unique entries thats why used BinaryEncoder)
import category_encoders as ce
binary_encoder= ce.BinaryEncoder(cols=['state'],return_df=True)
X_state = binary_encoder.fit_transform(df["state"])


import scipy
X = scipy.sparse.hstack((X_Description1, 
                         X_Description2,
                         X_state,
                         df[["NumericCol1", "NumericCol2"]].to_numpy())).tocsr()

y = df['TargetCategory']


##### train Test Split ########
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.8, random_state=111)

##### Create Model Model ######
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, recall_score, classification_report, cohen_kappa_score
from sklearn import metrics 

# Baseline Random forest based Model
rfc = RandomForestClassifier(criterion = 'gini', n_estimators=1000, verbose=1, n_jobs = -1, 
                             class_weight = 'balanced', max_features = 'auto')
rfcg = rfc.fit(X_train,y_train) # fit on training data


####### Prediction ##########
predictions = rfcg.predict(X_test)
print('Baseline: Accuracy: ', round(accuracy_score(y_test, predictions)*100, 2))
print('\n Classification Report:\n', classification_report(y_test,predictions))

共有1个答案

邢英奕
2023-03-14

在Scikit学习中使用多列作为输入的方法是使用列转换器。

下面是一个如何将其用于异构数据的示例。

 类似资料:
  • 我正在研究一个文本分类问题,其中多个文本特征和需要建立一个模型来预测工资范围。请参考示例数据集,大多数资源/教程只处理一列的特征提取,然后预测目标。我了解了文本预处理、特征提取(CountVectorizer或TF-IDF)以及应用算法等过程。 在这个问题中,我有多个输入文本特性。当涉及多个特征时,如何处理文本分类问题?这些是我已经尝试过的方法,但我不确定这些是否是正确的方法。请提供您的意见/建议

  • 这个例子展示了如何使用 scikit-learn 中的单词包方法,根据主题对文档进行分类。本例使用scipy.sparse中的矩阵来存储特征,并演示各种能够有效处理稀疏矩阵的分类器。 本例中使用的数据集是20条新闻组数据集。通过scikit-learn可以自动下载该数据集,并进行缓存。 下述条形图展示了各个不同分类器,其信息包括精度、训练时间(已归一化)和测试时间(已归一化)。 import lo

  • 在许多任务中,例如在经典的垃圾邮件检测中,你的输入数据是文本。 长度变化的自由文本与我们需要使用 scikit-learn 来做机器学习所需的,长度固定的数值表示相差甚远。 但是,有一种简单有效的方法,使用所谓的词袋模型将文本数据转换为数字表示,该模型提供了与 scikit-learn 中的机器学习算法兼容的数据结构。 假设数据集中的每个样本都表示为一个字符串,可以只是句子,电子邮件或整篇新闻文章

  • 问题内容: 我目前正在研究一个项目,一个 简单的情感分析器,* 这样在 单独的情况下 将有 2和3个类 。我使用的 语料库 在 唯一词方面 非常 丰富 (大约200.000)。我用 袋的词 方法用于 特征选择 和以减少的数量 独特特征 ,进行消除由于一个进行 阈值 的 出现频率 。在 最后一组的功能 包括围绕20.000的功能,这实际上是一个 90%的下降 ,但 还不够 用于预期 的测试预测 *准

  • 我当前的Cucumber文件如下所示: 所以现在我想再添加几个场景,可能是在同一个文件中进行API测试。所以我想为此创建一个新特性,而不是使用Feature:Test Online application页面。这样我就不需要为API测试创建单独的特性文件。

  • 本文向大家介绍特征工程的问题相关面试题,主要包含被问及特征工程的问题时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 特征工程包括数据与特征处理、特征选择和降纬三部分。数据与特征处理包括: 1.数据选择、清洗、采样 数据格式化; 数据清洗,填充缺失值、去掉脏数据,将不可信的样本丢掉,缺省值极多的字段考虑不用; 采样:针对正负样本不平衡的情况,当正样本远大于负样本时,且量都很大时,使用下采样,