kaggle----NLP线性回归---Real or Not? NLP with Disaster Tweets

2023-10-18 17:40

本文主要是介绍kaggle----NLP线性回归---Real or Not? NLP with Disaster Tweets,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

依然是按照老样子拿到了我们的训练集测试集还有提交模板
竞赛网站:
https://www.kaggle.com/c/nlp-getting-started/overview/description

数据初步可视化

import numpy as np
import pandas as pd
from sklearn import feature_extraction, linear_model, model_selection, preprocessing
train = pd.read_csv('路径/train.csv')
test = pd.read_csv('路径/test.csv')

此处以keyword作为例子,查看不同的度量对于预测结果的影响

#划分数据集,查看相应变量中的
target1=train.keyword[train.target == 1].value_counts()
target0=train.keyword[train.target == 0].value_counts()
df=pd.DataFrame({'target1':target1,'target0':target0})
df.plot(kind='bar',stacked=True,title='keyword')

当然呢,这个图可能略显的凌乱,但我们可以发现有的蓝色条尤其长是说明其中有的keyword是对于判断文本是否是有显著影响的,我们可以点开详情查看统计
在这里插入图片描述
发现了次数的统计,那么这几个keyword就可以作为后续的限制条件
在这里插入图片描述

本例只做了简单样例,各位老板做参考就可

向量构筑

每条 tweet中包含的单词都是一个很好的指标,表明它们是否是真正的Disaster (可能并不完全正确)。
使用scikit learn中的countvector对每条tweet中的单词进行计数,并将它们转换为机器学习模型可以处理的数据。

注:在这种情况下,向量是机器学习模型可以使用的一组数字

用前五条为例

count_vectorizer = feature_extraction.text.CountVectorizer()
# count_vectorizer.get_feature_names() 可以查看生成的字典名# count_vectorizer.vocabulary_  字典形式呈现,key:词,value:词频
# 让我们计算一下数据中前5条tweets的单词数量
example_train_vectors = count_vectorizer.fit_transform(train["text"][0:5])
## 我们在这里使用.todense(),因为这些向量是“离散的”(只保留非零元素以节省空间)
print(example_train_vectors[0].todense().shape)
print(example_train_vectors[0].todense())

参考:sklearn——CountVectorizer详解
在这里插入图片描述

上面告诉我们:
前五条 tweets中有54个独特的单词(或“标记”)。
第一条tweet([0])只包含其中一些唯一的标记——上面所有的非零计数都是第一条tweet中存在的标记。

现在为所有的tweets创建向量:

train_vectors = count_vectorizer.fit_transform(train_df["text"])## 注意,这里没有使用.fit_transform(),只是用了.transform()确保列向量中的标记是映射到测试向量的唯一标记
# 也就是说,训练集向量和测试集向量使用同一组变化
test_vectors = count_vectorizer.transform(test_df["text"])

线性模型

正如前面提到的,每条tweet中包含的文字是一个很好的指标,可以判断它们是否是Disaster。tweet中特定单词(或一组单词)的出现可能直接链接到该tweet是否真实。

假设这是一个线性关系,建立一个线性模型看看!

我们的向量很大,所以我们想推进模型的权重趋近于0但不完全消除,ridge regression是一个很好的方式

clf = linear_model.RidgeClassifier()

使用交叉验证,我们对已知数据的一部分进行训练,然后使用其他数据对其进行验证。

这次竞赛的评价标准是F1,所以我们的模型也选用这个标准
在这里插入图片描述

scores = model_selection.cross_val_score(clf, train_vectors, train_df["target"], cv=3, scoring="f1")

在这里插入图片描述

预测并提交模型

clf.fit(train_vectors, train_df["target"])

在这里插入图片描述

sample_submission = pd.read_csv("路径/sample_submission.csv")
sample_submission["target"] = clf.predict(test_vectors)
sample_submission.head()

在这里插入图片描述

sample_submission.to_csv("路径/submission.csv", index=False)

完成,可以提交

这篇关于kaggle----NLP线性回归---Real or Not? NLP with Disaster Tweets的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/234160

相关文章

线性因子模型 - 独立分量分析(ICA)篇

序言 线性因子模型是数据分析与机器学习中的一类重要模型,它们通过引入潜变量( latent variables \text{latent variables} latent variables)来更好地表征数据。其中,独立分量分析( ICA \text{ICA} ICA)作为线性因子模型的一种,以其独特的视角和广泛的应用领域而备受关注。 ICA \text{ICA} ICA旨在将观察到的复杂信号

✨机器学习笔记(二)—— 线性回归、代价函数、梯度下降

1️⃣线性回归(linear regression) f w , b ( x ) = w x + b f_{w,b}(x) = wx + b fw,b​(x)=wx+b 🎈A linear regression model predicting house prices: 如图是机器学习通过监督学习运用线性回归模型来预测房价的例子,当房屋大小为1250 f e e t 2 feet^

【高等代数笔记】线性空间(一到四)

3. 线性空间 令 K n : = { ( a 1 , a 2 , . . . , a n ) ∣ a i ∈ K , i = 1 , 2 , . . . , n } \textbf{K}^{n}:=\{(a_{1},a_{2},...,a_{n})|a_{i}\in\textbf{K},i=1,2,...,n\} Kn:={(a1​,a2​,...,an​)∣ai​∈K,i=1,2,...,n

UMI复现代码运行逻辑全流程(一)——eval_real.py(尚在更新)

一、文件夹功能解析 全文件夹如下 其中,核心文件作用为: diffusion_policy:扩散策略核心文件夹,包含了众多模型及基础库 example:标定及配置文件 scripts/scripts_real:测试脚本文件,区别在于前者倾向于单体运行,后者为整体运行 scripts_slam_pipeline:orb_slam3运行全部文件 umi:核心交互文件夹,作用在于构建真

用Python实现时间序列模型实战——Day 14: 向量自回归模型 (VAR) 与向量误差修正模型 (VECM)

一、学习内容 1. 向量自回归模型 (VAR) 的基本概念与应用 向量自回归模型 (VAR) 是多元时间序列分析中的一种模型,用于捕捉多个变量之间的相互依赖关系。与单变量自回归模型不同,VAR 模型将多个时间序列作为向量输入,同时对这些变量进行回归分析。 VAR 模型的一般形式为: 其中: ​ 是时间  的变量向量。 是常数向量。​ 是每个时间滞后的回归系数矩阵。​ 是误差项向量,假

带头结点的线性链表的基本操作

持续了好久,终于有了这篇博客,链表的操作需要借助图像模型进行反复学习,这里尽可能的整理并记录下自己的思考,以备后面复习,和大家分享。需要说明的是,我们从实际应用角度出发重新定义了线性表。 一. 定义 从上一篇文章可以看到,由于链表在空间的合理利用上和插入、删除时不需要移动等优点,因此在很多场合下,它是线性表的首选存储结构。然而,它也存在某些实现的缺点,如求线性表的长度时不如顺序存储结构的

kaggle竞赛宝典 | Mamba模型综述!

本文来源公众号“kaggle竞赛宝典”,仅用于学术分享,侵权删,干货满满。 原文链接:Mamba模型综述! 型语言模型(LLMs),成为深度学习的基石。尽管取得了令人瞩目的成就,Transformers仍面临固有的局限性,尤其是在推理时,由于注意力计算的平方复杂度,导致推理过程耗时较长。 最近,一种名为Mamba的新型架构应运而生,其灵感源自经典的状态空间模型,成为构建基础模型的有力替代方案

浙大数据结构:02-线性结构4 Pop Sequence

这道题我们采用数组来模拟堆栈和队列。 简单说一下大致思路,我们用栈来存1234.....,队列来存输入的一组数据,栈与队列进行匹配,相同就pop 机翻 1、条件准备 stk是栈,que是队列。 tt指向的是栈中下标,front指向队头,rear指向队尾。 初始化栈顶为0,队头为0,队尾为-1 #include<iostream>using namespace std;#defi

深度学习与大模型第3课:线性回归模型的构建与训练

文章目录 使用Python实现线性回归:从基础到scikit-learn1. 环境准备2. 数据准备和可视化3. 使用numpy实现线性回归4. 使用模型进行预测5. 可视化预测结果6. 使用scikit-learn实现线性回归7. 梯度下降法8. 随机梯度下降和小批量梯度下降9. 比较不同的梯度下降方法总结 使用Python实现线性回归:从基础到scikit-learn 线性

C#中的各种画刷, PathGradientBrush、线性渐变(LinearGradientBrush)和径向渐变的区别

在C#中,画刷(Brush)是用来填充图形(如形状或文本)内部区域的对象。在.NET框架中,画刷是System.Drawing命名空间的一部分,通常用于GDI+绘图操作。以下是一些常用的画刷类型: SolidBrush:用于创建单色填充的画刷。HatchBrush:用于创建具有图案填充的画刷。TextureBrush:用于创建具有图像纹理填充的画刷。LinearGradientBrush:用于创