NLP(01)

导入必要的库:

import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.linear_model import LogisticRegression
from warnings import simplefilter
from sklearn.exceptions import ConvergenceWarning
  1. pandas库用于读取表格数据和数据处理。
  2. CountVectorizer用于将文本数据转换为词袋模型(BOW)的特征向量。
  3. LogisticRegression是逻辑回归模型,用于分类任务。
  4. warnings.simplefilter用于过滤警告信息。
  5. ConvergenceWarning是当模型训练没有收敛时,会发出的警告类。

数据预处理:

train = pd.read_csv('./data/train.csv')
train['title'] = train['title'].fillna('')
train['abstract'] = train['abstract'].fillna('')
test = pd.read_csv('./data/test.csv')
test['title'] = test['title'].fillna('')
test['abstract'] = test['abstract'].fillna('')

从CSV文件读取训练数据集和测试数据集,并使用fillna(‘’)填充缺失值。
特征提取:

train['text'] = train['title'].fillna('') + ' ' +  train['author'].fillna('') + ' ' + train['abstract'].fillna('')+ ' ' + train['Keywords'].fillna('')
test['text'] = test['title'].fillna('') + ' ' +  test['author'].fillna('') + ' ' + test['abstract'].fillna('')+ ' ' + train['Keywords'].fillna('')

vector = CountVectorizer().fit(train['text'])
train_vector = vector.transform(train['text'])
test_vector = vector.transform(test['text'])
  • 将title、author、abstract和Keywords列合并为新的text列,这将成为训练集和测试集中的文本数据。
  • 使用CountVectorizer将文本数据转换成词袋模型(BOW)的特征向量。BOW是一种常用的文本表示方法,它将文本表示为一个固定大小的向量,其中包含每个词的出现次数。
  • fit方法用于学习词汇表,transform方法用于将文本数据转换成特征向量。

模型训练与预测:

model = LogisticRegression()
model.fit(train_vector, train['label'])
test['label'] = model.predict(test_vector)

创建逻辑回归模型,并使用fit方法对训练数据进行训练。
使用训练好的模型对测试集进行预测,并将预测结果存储在test[‘label’]列中。
结果输出:

test[['uuid', 'Keywords', 'label']].to_csv('submit_task1.csv', index=None)
  • 将测试集中的uuid、Keywords和预测的label导出为CSV文件,用于提交任务一的推测结果。

注意事项:

  • 代码中使用了CountVectorizer进行特征提取,如果效果不佳,可以尝试使用TfidfVectorizer替换,可能会获得更好的效果。
  • 代码中为了处理警告信息,将收敛警告过滤掉,这样做可能会隐藏一些模型训练的问题。如果出现问题,建议不要忽略警告信息,而是去分析和解决问题。
  • 请确保数据文件(train.csv和test.csv)位于正确的路径’./data/‘下,并且了解训练数据的标签列是’label’,测试集中有’uuid’和’Keywords’这两列用于提交结果。如果有其他任务相关的数据,请确保数据处理和列名的正确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值