推荐 :基于新闻标题的股价走势分析(附链接)

2023-11-10 00:20

本文主要是介绍推荐 :基于新闻标题的股价走势分析(附链接),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者:  Ronil Patil  翻译:王闯 (Chuck)。校对:詹好

本文约1900字,建议阅读5分钟

作者基于Kaggle上的新闻头条和股票指数数据集,用Python演示了如何利用NLP技术对新闻标题进行情感分析,从而预测股价走势。

本文曾作为数据科学博客松(https://datahack.analyticsvidhya.com/contest/data-science-blogathon-7/)的部分内容发表。

“不要在草堆里找一根藏针,而是要买下整个草堆!”

本次的主题与上述的引文有关,是一项对于股票市场的数据研究工作(译者注:引文是美国指数基金先驱John Bogle的名言,简述了指数型基金的概念,即与其花昂贵的费用请经理人从股市里大海捞针,不如用最简单的方法、最少的手续费,投资整个市场。)

本文介绍了基于自然语言处理(NLP)技术,如何创建一个利用新闻标题来分析股价的模型。具体而言,利用NLP来对新闻标题进行情感分析,从而预测股价涨跌。因此,本文的所有内容都是围绕如何用情感分析来预测股价展开的。

数据集介绍

 

这里我们使用了Kaggle数据集。你可以从这里(https://github.com/ronil068/Stock-Sentiment-Analysis)直接下载。该数据集是Kaggle上可用的世界新闻和股票价格的组合数据。数据框中包括其中25列分别对应每一天的25条TOP新闻,日期列(Date)和标签列(Label, 因变量特征)。数据范围是2008年至2016年,数据框2000年至2008年是从雅虎财经抓取的。标签基于道琼斯工业平均指数。

  • 标签为1–股价上涨。

  • 标签为0–股价持平或下跌。

开始

 

首先引入相关库
import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report,confusion_matrix,accuracy_score
读取数据集

df = pd.read_csv('F:Stock-Sentiment-Analysis-master/Stock News Dataset.csv', encoding = "ISO-8859-1")

我们可以观察一下该数据集的一些特征:Label(标签)是我们的因变量特征(目标值),其余26个特征是自变量。当Label特征的值为1时,代表股价上涨,值为0时,代表股价持平或下跌;Top1到Top25,则是当日的25个Top新闻的标题;Date是时间信息。以上我们用来进行分析的数据集了。我们将利用NLP来对文章标题进行情感分析,从而预测股价将上涨还是下跌。

将数据集划分为训练集和测试集

 

train = df[df['Date'] < '20150101']
test = df[df['Date'] > '20141231']

 

我们将根据日期划分数据集。日期小于20150101的数据集为训练数据集,日期大于20141231的数据集为测试数据集。

特征工程

首先,我们需要从Top1到Top25的这些文本数据集中删除句号、感叹号等符号,只保留文字信息。因为进行情感分析不需要符号之类的信息。这里使用了正则表达式来进行处理。如前文所述,除了小写字母a-z和大写字母A-Z之外,所有内容都被替换为空白。如果有任何特殊字符出现,它将被自动删除并被替换为空格。

 

 # Removing special characters
data=train.iloc[:,2:27]
data.replace("[^a-zA-Z]"," ",regex=True, inplace=True)
# Renaming column names for better understanding and ease of access
list1= [i for i in range(25)]
new_Index=[str(i) for i in list1]
data.columns= new_Index
data.head(5)

更新后的数据集如下所示:

同时,我们还需要统一字符的大小写。这是非常关键的一步,因为每当我们尝试创建词袋模型或TF-IDF模型时,如果一个单词以大写字母开头,同时当它在另一个句子中以小写出现,模型将认为这是两个不同的单词。也就是说本来是同一个单词,但仅仅由于大小写的不同,却被视为不同的单词。这是我们需要避免的。

 # Convertng headlines to lower case
for index in new_Index:data[index] = data[index].str.lower()
data.head(1)

因此,请始终确保已将所有字母都转换为小写。当然也可以将它们转换为大写字母,但是如果决定将所有字母都转换为大写,则应当确保每个字母都应大写。

根据索引来合并所有新闻标题:

现在我们将某一天的25个Top新闻标题合并在一起,成为一个段落。这是为了方面我们后续应用CountVectorizer方法,即词袋模型或TF-IDF模型。因此,我将遍历每个日期,并将每一个日期下的25个标题合并为一个段落。

 headlines = []
for row in range(0,len(data.index)):headlines.append(' '.join(str(x) for x in data.iloc[row,0:25]))

现在,某一天的Top新闻标题就变成了这样:


应用CountVectorizer和RandomForestClassifier方法

此处,文本词频统计向量会将这些句子向量化。这便是词袋的含义。

 ## implement BAG OF WORDS
countvector=CountVectorizer(ngram_range=(2,2))
traindataset=countvector.fit_transform(headlines)## implement RandomForest Classifier
randomclassifier=RandomForestClassifier(n_estimators=200,criterion='entropy')
randomclassifier.fit(traindataset,train['Label'])
在测试集上进行预测

 

现在我们将对测试集进行与训练集相同的特征转换。

 

 ## Predict for the Test Dataset
test_transform= []
for row in range(0,len(test.index)):test_transform.append(' '.join(str(x) for x in test.iloc[row,2:27]))
test_dataset = countvector.transform(test_transform)
predictions = randomclassifier.predict(test_dataset)
最后,检查准确性 

 

在这里,我们将利用分类报告,混淆矩阵和准确率分数来检查模型的准确性。

 matrix = confusion_matrix(test['Label'],predictions)
print(matrix)
score = accuracy_score(test['Label'],predictions)
print(score)
report = classification_report(test['Label'],predictions)
print(report)

我们终于完成了所有步骤。

现在,假设你想预测明天股价涨跌,只需对排名前25的头条新闻应用本文中介绍的转换方法,然后将其输入到模型中,模型就会输出0或1,来表示明天的股票会不会上涨。

这就是如何利用新闻标题来进行股票情感分析的方法。

关于作者

Ronil Patil是一个终身学习者,对深度学习,NLP,机器学习和物联网充满热情。

Ronil Patil

https://www.linkedin.com/in/ronil08/

原文标题:

Stock Price Movement Based On News Headline

原文链接:

https://www.analyticsvidhya.com/blog/2021/05/stock-price-movement-based-on-news-headline

译者简介:王闯(Chuck),台湾清华大学资讯工程硕士。曾任奥浦诺管理咨询公司数据分析主管,现任尼尔森市场研究公司数据科学经理。很荣幸有机会通过数据派THU微信公众平台和各位老师、同学以及同行前辈们交流学习。

END

版权声明:本号内容部分来自互联网,转载请注明原文链接和作者,如有侵权或出处有误请和我们联系。


合作请加QQ:365242293  

数据分析(ID : ecshujufenxi )互联网科技与数据圈自己的微信,也是WeMedia自媒体联盟成员之一,WeMedia联盟覆盖5000万人群。

这篇关于推荐 :基于新闻标题的股价走势分析(附链接)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

防近视护眼台灯什么牌子好?五款防近视效果好的护眼台灯推荐

在家里,灯具是属于离不开的家具,每个大大小小的地方都需要的照亮,所以一盏好灯是必不可少的,每个发挥着作用。而护眼台灯就起了一个保护眼睛,预防近视的作用。可以保护我们在学习,阅读的时候提供一个合适的光线环境,保护我们的眼睛。防近视护眼台灯什么牌子好?那我们怎么选择一个优秀的护眼台灯也是很重要,才能起到最大的护眼效果。下面五款防近视效果好的护眼台灯推荐: 一:六个推荐防近视效果好的护眼台灯的

智能交通(二)——Spinger特刊推荐

特刊征稿 01  期刊名称: Autonomous Intelligent Systems  特刊名称: Understanding the Policy Shift  with the Digital Twins in Smart  Transportation and Mobility 截止时间: 开放提交:2024年1月20日 提交截止日

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

MOLE 2.5 分析分子通道和孔隙

软件介绍 生物大分子通道和孔隙在生物学中发挥着重要作用,例如在分子识别和酶底物特异性方面。 我们介绍了一种名为 MOLE 2.5 的高级软件工具,该工具旨在分析分子通道和孔隙。 与其他可用软件工具的基准测试表明,MOLE 2.5 相比更快、更强大、功能更丰富。作为一项新功能,MOLE 2.5 可以估算已识别通道的物理化学性质。 软件下载 https://pan.quark.cn/s/57

衡石分析平台使用手册-单机安装及启动

单机安装及启动​ 本文讲述如何在单机环境下进行 HENGSHI SENSE 安装的操作过程。 在安装前请确认网络环境,如果是隔离环境,无法连接互联网时,请先按照 离线环境安装依赖的指导进行依赖包的安装,然后按照本文的指导继续操作。如果网络环境可以连接互联网,请直接按照本文的指导进行安装。 准备工作​ 请参考安装环境文档准备安装环境。 配置用户与安装目录。 在操作前请检查您是否有 sud

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

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