<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          獨家 | 基于新聞標題的股價走勢分析(附鏈接)

          共 4353字,需瀏覽 9分鐘

           ·

          2021-05-19 04:07


          作者:  Ronil Patil

          翻譯:王闖 (Chuck)

          校對:詹好


          本文約1900字,建議閱讀5分鐘
          作者基于Kaggle上的新聞頭條和股票指數(shù)數(shù)據集,用Python演示了如何利用NLP技術對新聞標題進行情感分析,從而預測股價走勢。


          標簽:自然語言處理、情感分析、股價預測


          本文曾作為數(shù)據科學博客松(https://datahack.analyticsvidhya.com/contest/data-science-blogathon-7/)的部分內容發(fā)表。

          “不要在草堆里找一根藏針,而是要買下整個草堆!”


          本次的主題與上述的引文有關,是一項對于股票市場的數(shù)據研究工作(譯者注:引文是美國指數(shù)基金先驅John Bogle的名言,簡述了指數(shù)型基金的概念,即與其花昂貴的費用請經理人從股市里大海撈針,不如用最簡單的方法、最少的手續(xù)費,投資整個市場。)

          本文介紹了基于自然語言處理(NLP)技術,如何創(chuàng)建一個利用新聞標題來分析股價的模型。具體而言,利用NLP來對新聞標題進行情感分析,從而預測股價漲跌。因此,本文的所有內容都是圍繞如何用情感分析來預測股價展開的。

          數(shù)據集介紹

           
          這里我們使用了Kaggle數(shù)據集。你可以從這里(https://github.com/ronil068/Stock-Sentiment-Analysis)直接下載。該數(shù)據集是Kaggle上可用的世界新聞和股票價格的組合數(shù)據。數(shù)據框中包括其中25列分別對應每一天的25條TOP新聞,日期列(Date)和標簽列(Label, 因變量特征)。數(shù)據范圍是2008年至2016年,數(shù)據框2000年至2008年是從雅虎財經抓取的。標簽基于道瓊斯工業(yè)平均指數(shù)。

          • 標簽為1–股價上漲。

          • 標簽為0–股價持平或下跌。


          開始

           

          首先引入相關庫


          import pandas as pdfrom sklearn.feature_extraction.text import CountVectorizerfrom sklearn.ensemble import RandomForestClassifierfrom sklearn.metrics import classification_report,confusion_matrix,accuracy_score


          讀取數(shù)據集


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



          我們可以觀察一下該數(shù)據集的一些特征:Label(標簽)是我們的因變量特征(目標值),其余26個特征是自變量。當Label特征的值為1時,代表股價上漲,值為0時,代表股價持平或下跌;Top1到Top25,則是當日的25個Top新聞的標題;Date是時間信息。以上我們用來進行分析的數(shù)據集了。我們將利用NLP來對文章標題進行情感分析,從而預測股價將上漲還是下跌。

          將數(shù)據集劃分為訓練集和測試集

           
          train = df[df['Date'] < '20150101']test = df[df['Date'] > '20141231']
           
          我們將根據日期劃分數(shù)據集。日期小于20150101的數(shù)據集為訓練數(shù)據集,日期大于20141231的數(shù)據集為測試數(shù)據集。

          特征工程


          首先,我們需要從Top1到Top25的這些文本數(shù)據集中刪除句號、感嘆號等符號,只保留文字信息。因為進行情感分析不需要符號之類的信息。這里使用了正則表達式來進行處理。如前文所述,除了小寫字母a-z和大寫字母A-Z之外,所有內容都被替換為空白。如果有任何特殊字符出現(xiàn),它將被自動刪除并被替換為空格。
           
           # Removing special charactersdata=train.iloc[:,2:27]data.replace("[^a-zA-Z]"," ",regex=True, inplace=True)# Renaming column names for better understanding and ease of accesslist1= [i for i in range(25)]new_Index=[str(i) for i in list1]data.columns= new_Indexdata.head(5)

          更新后的數(shù)據集如下所示:


          同時,我們還需要統(tǒng)一字符的大小寫。這是非常關鍵的一步,因為每當我們嘗試創(chuàng)建詞袋模型或TF-IDF模型時,如果一個單詞以大寫字母開頭,同時當它在另一個句子中以小寫出現(xiàn),模型將認為這是兩個不同的單詞。也就是說本來是同一個單詞,但僅僅由于大小寫的不同,卻被視為不同的單詞。這是我們需要避免的。

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

          因此,請始終確保已將所有字母都轉換為小寫。當然也可以將它們轉換為大寫字母,但是如果決定將所有字母都轉換為大寫,則應當確保每個字母都應大寫。

          根據索引來合并所有新聞標題:


          現(xiàn)在我們將某一天的25個Top新聞標題合并在一起,成為一個段落。這是為了方面我們后續(xù)應用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]))

          現(xiàn)在,某一天的Top新聞標題就變成了這樣:


          應用CountVectorizer和RandomForestClassifier方法


          此處,文本詞頻統(tǒng)計向量會將這些句子向量化。這便是詞袋的含義。

           ## implement BAG OF WORDScountvector=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'])

          在測試集上進行預測

           
          現(xiàn)在我們將對測試集進行與訓練集相同的特征轉換。
           
           ## Predict for the Test Datasettest_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)

          最后,檢查準確性 

           
          在這里,我們將利用分類報告,混淆矩陣和準確率分數(shù)來檢查模型的準確性。

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


          我們終于完成了所有步驟。

          現(xiàn)在,假設你想預測明天股價漲跌,只需對排名前25的頭條新聞應用本文中介紹的轉換方法,然后將其輸入到模型中,模型就會輸出0或1,來表示明天的股票會不會上漲。

          這就是如何利用新聞標題來進行股票情感分析的方法。

          關于作者


          Ronil Patil是一個終身學習者,對深度學習,NLP,機器學習和物聯(lián)網充滿熱情。

          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),臺灣清華大學資訊工程碩士。曾任奧浦諾管理咨詢公司數(shù)據分析主管,現(xiàn)任尼爾森市場研究公司數(shù)據科學經理。很榮幸有機會通過數(shù)據派THU微信公眾平臺和各位老師、同學以及同行前輩們交流學習。

          翻譯組招募信息

          工作內容:需要一顆細致的心,將選取好的外文文章翻譯成流暢的中文。如果你是數(shù)據科學/統(tǒng)計學/計算機類的留學生,或在海外從事相關工作,或對自己外語水平有信心的朋友歡迎加入翻譯小組。

          你能得到:定期的翻譯培訓提高志愿者的翻譯水平,提高對于數(shù)據科學前沿的認知,海外的朋友可以和國內技術應用發(fā)展保持聯(lián)系,THU數(shù)據派產學研的背景為志愿者帶來好的發(fā)展機遇。

          其他福利:來自于名企的數(shù)據科學工作者,北大清華以及海外等名校學生他們都將成為你在翻譯小組的伙伴。


          點擊文末“閱讀原文”加入數(shù)據派團隊~



          轉載須知

          如需轉載,請在開篇顯著位置注明作者和出處(轉自:數(shù)據派ID:DatapiTHU),并在文章結尾放置數(shù)據派醒目二維碼。有原創(chuàng)標識文章,請發(fā)送【文章名稱-待授權公眾號名稱及ID】至聯(lián)系郵箱,申請白名單授權并按要求編輯。

          發(fā)布后請將鏈接反饋至聯(lián)系郵箱(見下方)。未經許可的轉載以及改編者,我們將依法追究其法律責任。



          點擊“閱讀原文”擁抱組織



          瀏覽 49
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  黄色成人网站免费在线观看 | 亚洲AⅤ网站 | 色色五月丁香婷婷 | 久久91电影 | 成人A级免费视频 |