金融數(shù)據(jù)分析 課件 第11、12章 深度學(xué)習(xí)與數(shù)據(jù)分析、文本數(shù)據(jù)分析_第1頁
金融數(shù)據(jù)分析 課件 第11、12章 深度學(xué)習(xí)與數(shù)據(jù)分析、文本數(shù)據(jù)分析_第2頁
金融數(shù)據(jù)分析 課件 第11、12章 深度學(xué)習(xí)與數(shù)據(jù)分析、文本數(shù)據(jù)分析_第3頁
金融數(shù)據(jù)分析 課件 第11、12章 深度學(xué)習(xí)與數(shù)據(jù)分析、文本數(shù)據(jù)分析_第4頁
金融數(shù)據(jù)分析 課件 第11、12章 深度學(xué)習(xí)與數(shù)據(jù)分析、文本數(shù)據(jù)分析_第5頁
已閱讀5頁,還剩92頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第十一章

深度學(xué)習(xí)與數(shù)據(jù)分析

學(xué)習(xí)目標(biāo)

熟悉不同類型的神經(jīng)網(wǎng)絡(luò)模型的特點與區(qū)別掌握神經(jīng)網(wǎng)絡(luò)模型搭建原理并能將其應(yīng)用于金融市場分析中

本章導(dǎo)讀

深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個分支,其主要采用的模型是神經(jīng)網(wǎng)絡(luò)模型,因此,本章節(jié)將主要介紹有關(guān)人工神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)的基本概念、相關(guān)模型以及優(yōu)化策略。人工神經(jīng)網(wǎng)絡(luò)(artificialneuralnetworks,ANN),簡稱神經(jīng)網(wǎng)絡(luò)(neuralnetwork,NN),是一種模擬人腦神經(jīng)元網(wǎng)絡(luò)處理信息的數(shù)學(xué)模型。從機(jī)器學(xué)習(xí)的角度來看,神經(jīng)網(wǎng)絡(luò)模型本質(zhì)上是由具有非線性激活函數(shù)的神經(jīng)元組成的模型。通過大量神經(jīng)元之間的連接,神經(jīng)網(wǎng)絡(luò)成為一種高度非線性的模型,神經(jīng)元之間的連接權(quán)重就是需要學(xué)習(xí)的參數(shù)。11.1神經(jīng)元11.2BP神經(jīng)網(wǎng)絡(luò)11.3卷積神經(jīng)網(wǎng)絡(luò)11.4循環(huán)神經(jīng)網(wǎng)絡(luò)11.5深度學(xué)習(xí)模型優(yōu)化策略11.6

專題11基于深度學(xué)習(xí)的上市公司財務(wù)風(fēng)險預(yù)警研究目錄CONTENTS神經(jīng)元11.1

11.1神經(jīng)元一個典型的神經(jīng)元學(xué)習(xí)訓(xùn)練模型可抽象為如下過程

11.2BP神經(jīng)網(wǎng)絡(luò)1.前饋神經(jīng)網(wǎng)絡(luò)

前饋神經(jīng)網(wǎng)絡(luò)至少有三層,第一層為輸入層,最后一層為輸出層,其他中間層為隱藏層。

11.2BP神經(jīng)網(wǎng)絡(luò)

11.2BP神經(jīng)網(wǎng)絡(luò)通??捎商荻认陆捣ㄇ蠼馍鲜鰞?yōu)化問題。即首先初始化參數(shù),然后根據(jù)式(11.4)和式(11.5)迭代更新,逐漸縮小誤差:其中α為學(xué)習(xí)率,決定著目標(biāo)函數(shù)能否收斂到局部最小值以及何時收斂到最小值。

11.2BP神經(jīng)網(wǎng)絡(luò)2.BP算法

11.2BP神經(jīng)網(wǎng)絡(luò)

11.2BP神經(jīng)網(wǎng)絡(luò)圖11-3BP神經(jīng)網(wǎng)絡(luò)預(yù)測效果例11.1

BP神經(jīng)網(wǎng)絡(luò)應(yīng)用實例以滬深300股指為例,建立BP神經(jīng)網(wǎng)絡(luò)模型。預(yù)測步長設(shè)為15天,即用前15天的數(shù)據(jù)通過滑動窗口不斷預(yù)測下一天的收盤價及漲跌情況。特征變量包括開盤價、收盤價、最高價、最低價、交易量和交易額。為消除異常值和量綱影響,對數(shù)據(jù)進(jìn)行歸一化處理。在Python中可利用tensorflow庫調(diào)用KerasAPI構(gòu)建BP神經(jīng)網(wǎng)絡(luò)。模型預(yù)測效果如圖11-3所示,可以看到股票漲跌在訓(xùn)練集與測試集上的誤差,模型在測試集上的MAE、MSE較訓(xùn)練集高,MAPE較訓(xùn)練集低,測試集的整體預(yù)測準(zhǔn)確率為67%,模型預(yù)測效果較好。

11.2BP神經(jīng)網(wǎng)絡(luò)Python代碼演示#讀取數(shù)據(jù)df1=pd.read_excel(r'E//jrj1/Chapter10/hs300.xlsx',0)#df1=df1.iloc[3600:-10,1:]df1=df1.iloc[:,1:]df1.tail()##進(jìn)行數(shù)據(jù)歸一化fromsklearnimportpreprocessingmin_max_scaler=preprocessing.MinMaxScaler()df0=min_max_scaler.fit_transform(df1)df=pd.DataFrame(df0,columns=df1.columns)#構(gòu)造訓(xùn)練集測試集y=pd.DataFrame(y.values,columns=['goal'])x=Xcut=10#取最后cut=10天為測試集X_train,X_test=x.iloc[:-cut],x.iloc[-cut:]y_train,y_test=y.iloc[:-cut],y.iloc[-cut:]X_train,X_test,y_train,y_test=X_train.values,X_test.values,y_train.values,y_test.valuesX=df.drop('close',axis=1)y=df['close']

11.2BP神經(jīng)網(wǎng)絡(luò)#建立BP模型訓(xùn)練:fromtensorflow.keras.modelsimportSequentialfromtensorflow.keras.layersimportDense,Activationfromtensorflow.keras.optimizersimportAdammodel=Sequential()#層次模型model.add(Dense(16,input_dim=5))#輸入層model.add(Activation('relu'))#添加激活函數(shù)model.add(Dense(4))#中間層model.add(Activation('sigmoid'))#添加激活函數(shù)model.add(Dense(1))#輸出層pile(loss='mean_squared_error',optimizer='Adam')#編譯模型model.fit(X_train,y_train,epochs=50,batch_size=256) #模型擬合:#在訓(xùn)練集上的擬合結(jié)果y_train_predict=model.predict(X_train)y_train_predict=y_train_predict[:,0]y_train=y_train#在測試集上的擬合結(jié)果y_test_predict=model.predict(X_test)y_test_predict=y_test_predict[:,0]fromsklearn.metricsimportmean_absolute_errorfromsklearn.metricsimportmean_squared_errorimportmathdefmape(y_true,y_pred): returnnp.mean(np.abs((y_pred-y_true)/y_true))*100print('訓(xùn)練集上的MAE/MSE/MAPE')print(mean_absolute_error(y_train_predict,y_train))print(mean_squared_error(y_train_predict,y_train))print(mape(y_train_predict,y_train))print('測試集上的MAE/MSE/MAPE')print(mean_absolute_error(y_test_predict,y_test))print(mean_squared_error(y_test_predict,y_test))print(mape(y_test_predict,y_test))#預(yù)測漲跌y_var_test=y_test[1:]-y_test[:len(y_test)-1]y_var_predict=y_test_predict[1:]-y_test_predict[:len(y_test_predict)-1]txt=np.zeros(len(y_var_test))foriinrange(len(y_var_test-1)): txt[i]=np.sign(y_var_test[i])==np.sign(y_var_predict[i])result=sum(txt)/len(txt)print('預(yù)測漲跌正確:',result)

11.3卷積神經(jīng)網(wǎng)絡(luò)卷積神經(jīng)網(wǎng)絡(luò)一般由卷積層、池化層和全連通層組成,如圖11-4所示圖11-4

CNN網(wǎng)絡(luò)流程圖

11.3卷積神經(jīng)網(wǎng)絡(luò)

卷積神經(jīng)網(wǎng)絡(luò)中卷積層(Convolutionallayer)由若干卷積核(即可學(xué)習(xí)的權(quán)重向量)組成,每個卷積單元的參數(shù)都經(jīng)由反向傳播算法優(yōu)化得到。

卷積層的特點在于局部連接性與權(quán)值共享。如圖11-5所示,卷積層中的每一個神經(jīng)元都只和前一層中某個局部窗口內(nèi)的神經(jīng)元相連,構(gòu)成一個局部連接網(wǎng)絡(luò),可以大幅減少訓(xùn)練的參數(shù)。圖11-5全連通神經(jīng)網(wǎng)絡(luò)與卷積神經(jīng)網(wǎng)絡(luò)對比

11.3卷積神經(jīng)網(wǎng)絡(luò)2.池化層

池化層(PoolingLayer),也叫匯聚層、子采樣層(SubsamplingLayer),其作用主要就是壓縮數(shù)據(jù)和參數(shù)的量,或者說是保留最顯著的特征,通過特征映射去除其中不重要的樣本,進(jìn)一步減少參數(shù)數(shù)量。

由于卷積層可以減少網(wǎng)絡(luò)中連接的數(shù)量,但特征映射組中的神經(jīng)元個數(shù)并沒有顯著減少,如果后面接一個分類器,分類器的輸入維數(shù)依然很高,很容易出現(xiàn)過擬合。為了解決這個問題,可以在卷積層之后加上一個池化層,從而降低特征維數(shù),避免過擬合。目前,池化的方法有很多,常用的池化方法有最大池化和平均池化兩種。

11.3卷積神經(jīng)網(wǎng)絡(luò)3.全連通層

全連通層(fullyconnectedlayer,F(xiàn)C),即前面一層的每個神經(jīng)元都與后面一層的相連接,在整個卷積神經(jīng)網(wǎng)絡(luò)中起到“分類器”的作用。卷積層與池化層的作用在于提取分布式特征,而全連通層則將學(xué)到的“分布式特征表示”映射到樣本標(biāo)記空間,對多次卷積后高度抽象化的特征進(jìn)行整合。在CNN中,它可以直接把圖像降維成一堆序列。全連通層主要通過總層數(shù)、單個全連通層的神經(jīng)元數(shù)和激活函數(shù)三個參數(shù)影響模型。

11.3卷積神經(jīng)網(wǎng)絡(luò)例11.2CNN模型實例

卷積神經(jīng)網(wǎng)絡(luò)(CNN)模型被廣泛應(yīng)用于圖片識別技術(shù),本例將采用內(nèi)置手寫數(shù)字集作為示例數(shù)據(jù),通過keras模塊搭建CNN模型來進(jìn)行手寫數(shù)字體識別。內(nèi)置數(shù)據(jù)集已劃分出訓(xùn)練集與測試集,訓(xùn)練集中的輸入信息x為手寫數(shù)字的圖片,輸出信息y為圖片的標(biāo)簽。如圖11-6所示,訓(xùn)練集的第一張圖片為數(shù)字“5”的手寫體,其對應(yīng)的y標(biāo)簽也是類別數(shù)字“5”。圖11-6手寫數(shù)據(jù)集示例

11.3卷積神經(jīng)網(wǎng)絡(luò)Python代碼演示importnumpyasnp;importpandasaspd;importmatplotlib.pyplotaspltfromkeras.datasetsimportmnistfromkeras.modelsimportSequentialfromkeras.layersimportDense,Dropout,Activation,Flattenfromkeras.optimizersimportadam_v2fromkeras.layers.normalization.batch_normalization_v1importBatchNormalizationfromkeras.utilsimportnp_utilsfromkeras.layersimportConv2D,MaxPooling2D,ZeroPadding2D,GlobalAveragePooling2Dfromkeras.layers.advanced_activationsimportLeakyReLUfromkeras.preprocessing.imageimportImageDataGenerator#圖像基本變換(X_train,y_train),(X_test,y_test)=mnist.load_data()#劃分訓(xùn)練集和測試集plt.imshow(X_train[0],cmap='gray')plt.title('Class'+str(y_train[0]))#尺寸轉(zhuǎn)換X_train=X_train.reshape(X_train.shape[0],28,28,1)#尺寸變換X_test=X_test.reshape(X_test.shape[0],28,28,1)X_train=X_train.astype('float32')#類型轉(zhuǎn)換X_test=X_test.astype('float32')X_train/=255;X_test/=255;X_train.shape;number_of_classes=10Y_train=np_utils.to_categorical(y_train,number_of_classes)#類別變換Y_test=np_utils.to_categorical(y_test,number_of_classes)

11.3卷積神經(jīng)網(wǎng)絡(luò)model.summary()#模型匯總pile(loss='categorical_crossentropy',optimizer=adam_v2.Adam(),metrics=['accuracy'])gen=ImageDataGenerator(rotation_range=8,width_shift_range=0.08,shear_range=0.3,height_shift_range=0.08,zoom_range=0.08)#圖像變換test_gen=ImageDataGenerator()#圖像處理train_generator=gen.flow(X_train,Y_train,batch_size=64)test_generator=test_gen.flow(X_test,Y_test,batch_size=64)#模型訓(xùn)練model.fit_generator(train_generator,steps_per_epoch=60000//64,epochs=5,validation_data=test_generator,validation_steps=10000//64)score=model.evaluate(X_test,Y_test)#模型評估print('Testaccuracy:',score[1])#準(zhǔn)確率得分predictions=model.predict(X_test)#模型預(yù)測classes=np.argmax(predictions,axis=1)predictions=list(predictions)actuals=list(y_test)#輸出預(yù)測值與實際值sub=pd.DataFrame({'Actual':actuals,'Predictions':predictions})sub.to_csv('./output_cnn.csv',index=False)

11.4循環(huán)神經(jīng)網(wǎng)絡(luò)1.RNN單隱藏層的簡單循環(huán)網(wǎng)絡(luò)在時刻t的更新公式為h(t)=f(Whh(t-1)+Wxx(t)+bh)(11.9)其中,Wh為狀態(tài)-狀態(tài)權(quán)重矩陣,Wx為狀態(tài)-輸入權(quán)重矩陣,bh為偏置向量,f(·)為激活函數(shù)。將最終時刻輸出的隱藏層狀態(tài)h(T)看作整個序列的最終表示,輸入到分類器g(·)進(jìn)行分類,即y(t)=g(h(T))(11.10)

11.4循環(huán)神經(jīng)網(wǎng)絡(luò)2.LSTM

11.4循環(huán)神經(jīng)網(wǎng)絡(luò)三個門it、ft、ot的取值均在0到1之間,表示以一定的比例允許信息通過。計算公式分別如下:it=σ(Wxi·xt+Whi·ht-1+bi)ft=σ(Wxf·xt+Whf·ht-1+bf)ot=σ(Wxo·xt+Who·ht-1+bo)其中σ(·)為Logistic函數(shù),其輸出區(qū)間為(0,1),W為對應(yīng)的權(quán)重矩陣,bi為偏置矩陣。

11.4循環(huán)神經(jīng)網(wǎng)絡(luò)圖9-15LSTM原理圖

11.4循環(huán)神經(jīng)網(wǎng)絡(luò)3.GRU模型

11.4循環(huán)神經(jīng)網(wǎng)絡(luò)圖9-16GRU原理圖

深度學(xué)習(xí)模型優(yōu)化策略11.511.5深度學(xué)習(xí)模型優(yōu)化策略在應(yīng)用深度學(xué)習(xí)模型時通常面臨網(wǎng)絡(luò)優(yōu)化與網(wǎng)絡(luò)正則化兩大難題。一方面,神經(jīng)網(wǎng)絡(luò)模型的優(yōu)化目標(biāo)是能找到一個全局最優(yōu)解或較好的局部最優(yōu)解;另一方面模型優(yōu)化達(dá)到最優(yōu)解時可能帶來過擬合問題。11.5深度學(xué)習(xí)模型優(yōu)化策略網(wǎng)絡(luò)優(yōu)化:改善神經(jīng)網(wǎng)絡(luò)優(yōu)化的目標(biāo)是找到更好的局部最小值和提高優(yōu)化效率。目前比較有效的優(yōu)化思路有如下幾種:使用更有效的優(yōu)化算法來提高梯度下降優(yōu)化方法的效率和穩(wěn)定性。通過參數(shù)初始化和數(shù)據(jù)預(yù)處理來提高優(yōu)化效率。通過逐層歸一化來提高優(yōu)化效率。使用更好的超參數(shù)優(yōu)化方法。11.5深度學(xué)習(xí)模型優(yōu)化策略網(wǎng)絡(luò)正則化,即通過限制神經(jīng)網(wǎng)絡(luò)模型復(fù)雜度,避免模型過擬合并提高模型泛化能力。在傳統(tǒng)的機(jī)器學(xué)習(xí)中,提高泛化能力的方法主要是限制模型復(fù)雜度,比如可通過約束參數(shù)的L1和L2范數(shù)來減小模型在訓(xùn)練數(shù)據(jù)集上的過擬合現(xiàn)象。在訓(xùn)練深度學(xué)習(xí)模型時,除L1和L2正則化外還會使用其他正則化方法:數(shù)據(jù)增強。主要應(yīng)用于圖像數(shù)據(jù),通過算法對圖像進(jìn)行旋轉(zhuǎn)、翻轉(zhuǎn)、縮放、平移等轉(zhuǎn)變,或引入噪聲等方法來增加數(shù)據(jù)多樣性。提前停止。其基本思想是設(shè)置一個和訓(xùn)練集獨立的樣本集合,即驗證集(ValidationSet),并用驗證集上的錯誤來代替期望錯誤,當(dāng)驗證集上的錯誤率不再下降或滿足停止條件時,停止迭代。丟棄法(Dropout)。在訓(xùn)練時,隨機(jī)丟棄一部分神經(jīng)元及其對應(yīng)的連接邊,以避免過擬合。專題11基于深度學(xué)習(xí)的上市公司財務(wù)風(fēng)險預(yù)警研究

11.6基于深度學(xué)習(xí)的上市公司財務(wù)風(fēng)險預(yù)警研究我國“十四五”規(guī)劃將“健全金融風(fēng)險預(yù)防、預(yù)警、處置、問責(zé)制度體系”列為實施金融安全戰(zhàn)略的重要舉措之一,2021年中央經(jīng)濟(jì)工作會議同樣指出要“正確認(rèn)識和把握防范化解重大風(fēng)險”,并“完善金融風(fēng)險處置機(jī)制”。近年來黑天鵝事件時有發(fā)生,全球系統(tǒng)性風(fēng)險隱患不斷凸顯,進(jìn)一步加劇企業(yè)的財務(wù)風(fēng)險。在此背景下,結(jié)合系統(tǒng)性風(fēng)險指標(biāo)與前沿的深度學(xué)習(xí)算法,優(yōu)化我國企業(yè)財務(wù)危機(jī)的預(yù)測模型,提升企業(yè)財務(wù)風(fēng)險預(yù)警效力,對優(yōu)化投資決策、強化企業(yè)風(fēng)險管理、健全風(fēng)險監(jiān)測預(yù)警機(jī)制、完善金融風(fēng)險處置機(jī)制均有重要顯示意義。

11.6基于深度學(xué)習(xí)的上市公司財務(wù)風(fēng)險預(yù)警研究傳統(tǒng)的財務(wù)風(fēng)險預(yù)警方法通常基于統(tǒng)計分析和規(guī)則模型,這些方法往往依賴于研究者對財務(wù)指標(biāo)之間關(guān)系的猜測和經(jīng)驗判斷。然而,隨著大數(shù)據(jù)技術(shù)的迅速發(fā)展和深度學(xué)習(xí)在各個領(lǐng)域的成功應(yīng)用,越來越多的研究者和從業(yè)者開始關(guān)注和探索利用深度學(xué)習(xí)技術(shù)改進(jìn)財務(wù)風(fēng)險預(yù)警的方法和模型。深度學(xué)習(xí)是一種以人工神經(jīng)網(wǎng)絡(luò)為基礎(chǔ)的機(jī)器學(xué)習(xí)方法,通過多層次的抽象和表示學(xué)習(xí),能夠從大規(guī)模、非結(jié)構(gòu)化、高維度的數(shù)據(jù)中提取有用的特征和模式。這使得深度學(xué)習(xí)在圖像識別、自然語言處理等領(lǐng)域取得了顯著的成就?;诖?,本專題將結(jié)合深度學(xué)習(xí)構(gòu)建上市公司財務(wù)風(fēng)險預(yù)警模型,對我國上市公司的財務(wù)風(fēng)險水平進(jìn)行監(jiān)測與評估。

11.6基于深度學(xué)習(xí)的上市公司財務(wù)風(fēng)險預(yù)警研究1.數(shù)據(jù)來源及預(yù)處理(1)數(shù)據(jù)來源及樣本選取本專題選取2020年到2022年A股上市公司為初始樣本,剔除金融行業(yè)公司后,“財務(wù)狀況異?!倍状伪籗T的上市公司總計115家。為正確預(yù)警公司財務(wù)困境,要通過比較ST公司與正常公司相關(guān)指標(biāo)的異同,并且利用模型將兩類公司準(zhǔn)確識別并且區(qū)分出來。本專題將以ST公司:非ST公司=1:2的比例選取正常公司作為配對樣本進(jìn)行研究,配對時采用資產(chǎn)規(guī)模相當(dāng)(總資產(chǎn)上下相差不超過20%)、所屬行業(yè)相同、會計年度一致的原則。最終樣本包含了115家ST公司和與之配對的230家正常公司,即總體的樣本公司數(shù)量為345家,三年樣本數(shù)據(jù)共1035個數(shù)據(jù)行。本專題中使用的公司財務(wù)數(shù)據(jù)來源于Wind數(shù)據(jù)庫。

11.6基于深度學(xué)習(xí)的上市公司財務(wù)風(fēng)險預(yù)警研究(2)

變量構(gòu)建本專題將采用公司是否被實施ST作為公司財務(wù)風(fēng)險的衡量標(biāo)準(zhǔn)。根據(jù)證監(jiān)會規(guī)定,若上市公司連續(xù)兩個會計年度凈利潤為負(fù)或者最近一個年度的每股凈資產(chǎn)低于股票面值,公司將被執(zhí)行ST處理。基于此,模型中的輸入數(shù)據(jù)和預(yù)測變量數(shù)據(jù)間隔設(shè)為兩年,即使用T年的財務(wù)數(shù)據(jù)和財報文本數(shù)據(jù),來預(yù)測T+2年公司是否會被實行ST。參考國內(nèi)學(xué)者的研究成果,從反映上市公司盈利能力、成長能力、營運能力、償債能力、現(xiàn)金流量五個方面選取了35個財務(wù)指標(biāo)作為特征變量。2.神經(jīng)網(wǎng)絡(luò)模型設(shè)計(1)BPNN模型:基于反向傳播算法來訓(xùn)練模型,并采用梯度下降法來調(diào)整網(wǎng)絡(luò)中的參數(shù),以最小化損失函數(shù)。(2)CNN模型:卷積層-池化層-卷積層-池化層-Flatten層-Dense層--Dropout層-全連接層-全連接層,第一層卷積層的神經(jīng)元個數(shù)為256,卷積核大小為3,第二層卷積層的神經(jīng)元個數(shù)為128,卷積核大小為3。池化層使用MaxPooling1D處理。最后一層Dense層的神經(jīng)元個數(shù)為1。(3)RNN模型:RNN層-Dropout層-RNN層-Dropout層-Flatten層-Dense層,其中第一層RNN神經(jīng)元個數(shù)設(shè)置為128個,第二層RNN神經(jīng)元個數(shù)設(shè)置為100個,第一層Dropout層丟棄0.2。第二層Dropout層丟棄0.3,最后搭建Flatten層和全連接層。

11.6基于深度學(xué)習(xí)的上市公司財務(wù)風(fēng)險預(yù)警研究2.神經(jīng)網(wǎng)絡(luò)模型設(shè)計(4)GRU模型:GRU層-Dropout層-Dense層--Dropout層-Dense層-Dropout層-Dense層,其中第一層GRU神經(jīng)元個數(shù)設(shè)置為256個,第一層Dropout層丟棄0.2,第二層Dropout層丟棄0.2,最后添加Dense層。(5)LSTM模型:LSTM層-Dense層-Dropout層-LSTM層-Dense層-Dropout層-Dense層-Dense層,其中第一層神經(jīng)元個數(shù)設(shè)置128個,添加全連接層,激活函數(shù)選擇relu,第一層Dropout層丟棄0.2,第二層Dropout層丟棄0.2,最后使用一個具有1個神經(jīng)元和使用sigmoid激活函數(shù)的全連接層,用于進(jìn)行二分類任務(wù)。所有模型使用develop_pile編譯模型,其中l(wèi)oss參數(shù)設(shè)置為binary_crossentropy表示二元交叉熵?fù)p失函數(shù),optimizer參數(shù)設(shè)置為adam表示使用Adam優(yōu)化器進(jìn)行參數(shù)更新,metrics參數(shù)設(shè)置為accuracy表示評估指標(biāo)為準(zhǔn)確率。

11.6基于深度學(xué)習(xí)的上市公司財務(wù)風(fēng)險預(yù)警研究3.模型比較與結(jié)果分析本專題研究基于Python3.0框架,使用Tensorflow搭建神經(jīng)網(wǎng)絡(luò)模型。

首先以7:3的比例將數(shù)據(jù)集劃分為訓(xùn)練集與測試集,基于訓(xùn)練集訓(xùn)練模型,然后基于搭建設(shè)計好的深度學(xué)習(xí)模型,對測試集進(jìn)行預(yù)測。

預(yù)測窗口長度設(shè)為7,即用前7天的股票交易數(shù)據(jù)預(yù)測未來一天的股票收盤價。

為考察不同模型對財務(wù)風(fēng)險的預(yù)測效果,選擇Accuracy、precision、recall、f1-score、roc值作為評價指標(biāo),對比不同模型在訓(xùn)練集與測試集上的預(yù)測效果。

11.6基于深度學(xué)習(xí)的上市公司財務(wù)風(fēng)險預(yù)警研究如表11-1所示,在本專題中,CNN模型在測試集上準(zhǔn)確率最高,達(dá)到了81%,對財務(wù)危機(jī)的預(yù)警較為準(zhǔn)確;其次是GRU模型,準(zhǔn)確率為79%,且AUC值較高,達(dá)到了86%,預(yù)警也較為準(zhǔn)確。除LSTM模型外,基于神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)模型預(yù)測準(zhǔn)確率均在75%以上,而邏輯回歸模型準(zhǔn)確率最低,預(yù)測準(zhǔn)確率為73%,不如多層迭代訓(xùn)練的深度學(xué)習(xí)模型。

11.6基于深度學(xué)習(xí)的上市公司財務(wù)風(fēng)險預(yù)警研究4.預(yù)測結(jié)果可視化前述分析中發(fā)現(xiàn)CNN、GRU這兩個模型對財務(wù)預(yù)警的預(yù)測效果較好,鑒于篇幅限制,該部分將把其中部分模型在訓(xùn)練集與測試集上的模型準(zhǔn)確度與模型損失可視化,直觀比較不同模擬的擬合效果。

11.6基于深度學(xué)習(xí)的上市公司財務(wù)風(fēng)險預(yù)警研究(1)CNN訓(xùn)練結(jié)果可視化分析根據(jù)圖11-10,CNN模型在訓(xùn)練集上整體表現(xiàn)優(yōu)秀,模型在訓(xùn)練集與測試集上的準(zhǔn)確率情況重合較高,趨勢一致,模型訓(xùn)練集值與測試集上的損失率情況也趨勢一致重合。

11.6基于深度學(xué)習(xí)的上市公司財務(wù)風(fēng)險預(yù)警研究(2)GRU訓(xùn)練結(jié)果可視化分析如圖11-11所示,GRU模型在訓(xùn)練集上整體表現(xiàn)優(yōu)秀,模型訓(xùn)練集值與測試集上的準(zhǔn)確率情況重合較高,趨勢一致,模型訓(xùn)練集值與測試集上的損失率情況也趨勢一致重合。

11.6基于深度學(xué)習(xí)的上市公司財務(wù)風(fēng)險預(yù)警研究(3)預(yù)測結(jié)果可視化分析由圖11-12可知,CNN模型的AUC值接近0.866,預(yù)測效果最好,GRU模型次之,邏輯回歸的效果最差。

11.6基于深度學(xué)習(xí)的上市公司財務(wù)風(fēng)險預(yù)警研究(3)預(yù)測結(jié)果可視化分析由圖11-12可知,CNN模型的AUC值接近0.866,預(yù)測效果最好,GRU模型次之,邏輯回歸的效果最差。

11.6基于深度學(xué)習(xí)的上市公司財務(wù)風(fēng)險預(yù)警研究(3)預(yù)測結(jié)果可視化分析由圖11-12可知,CNN模型的AUC值接近0.866,預(yù)測效果最好,GRU模型次之,邏輯回歸的效果最差。

11.6基于深度學(xué)習(xí)的上市公司財務(wù)風(fēng)險預(yù)警研究5.研究結(jié)論本專題基于RNN、LSTM、GRU、CNN、BPNN五個神經(jīng)網(wǎng)絡(luò)模型與邏輯回歸模型對上市公司財務(wù)危機(jī)進(jìn)行預(yù)測研究,并考察不同模型對上市公司財務(wù)危機(jī)的預(yù)測效力。主要結(jié)論如下:考察的五個深度神經(jīng)網(wǎng)絡(luò)模型中,CNN模型對上市公司財務(wù)危機(jī)的預(yù)測效果最好,在測試集上擬合優(yōu)度最大且預(yù)測誤差最?。籊RU模型次之,在測試集上能夠較好地擬合上證指數(shù)的變化趨勢;LSTM模型的表現(xiàn)最差。而機(jī)器學(xué)習(xí)中的經(jīng)典分類模型邏輯回歸效果不如深度學(xué)習(xí)模型。因此,可以選擇合適的神經(jīng)網(wǎng)絡(luò)模型應(yīng)用于風(fēng)險預(yù)警相關(guān)研究。

11.6基于深度學(xué)習(xí)的上市公司財務(wù)風(fēng)險預(yù)警研究習(xí)題1.LSTM與GRU模型如何解決RNN模型的梯度消失和爆炸問題?二者的區(qū)別與聯(lián)系是什么?2.試?yán)?021年1月1日至2022年5月31日平安銀行的日交易數(shù)據(jù)建立BP神經(jīng)網(wǎng)絡(luò)、RNN與LSTM模型,并比較三個模型對股價的預(yù)測效果。Theending第十二章

文本數(shù)據(jù)分析

學(xué)習(xí)目標(biāo)

了解文本數(shù)據(jù)挖掘流程;掌握文本數(shù)據(jù)采集、文本切分和文本特征詞選擇的常用方法;掌握文本情感分析方法并能將該方法運用于金融市場分析。

本章導(dǎo)讀

金融大數(shù)據(jù)為金融業(yè)態(tài)創(chuàng)新注入了新的活力,被銀行、證券、保險等多個行業(yè)廣泛應(yīng)用于交易欺詐識別、精準(zhǔn)營銷、信貸風(fēng)險評估、智能投顧、風(fēng)險定價等具體業(yè)務(wù)中。未來金融業(yè)的核心競爭力將很大程度上依賴于從數(shù)據(jù)資產(chǎn)向市場競爭力轉(zhuǎn)化的速度與能力,而這種速度和能力,取決于數(shù)據(jù)分析、挖掘和應(yīng)用水平。上一章將詳細(xì)介紹金融大數(shù)據(jù)的特征以及大數(shù)據(jù)處理流程,且重點研究幾類常用的數(shù)據(jù)挖掘方法,本章重點介紹文本數(shù)據(jù)挖掘相關(guān)技術(shù)及其在金融風(fēng)險計量中的應(yīng)用。通過本章內(nèi)容學(xué)習(xí),學(xué)生應(yīng)掌握文本數(shù)據(jù)分析的基本知識與技術(shù),進(jìn)一步提升運用大數(shù)據(jù)技術(shù)分析和解決金融實際問題的能力。通過金融文本挖掘技術(shù)的學(xué)習(xí),了解中國政府保持金融穩(wěn)定的決心和信心。12.1文本獲取12.2文本預(yù)處理12.3文本表示12.4文本特征選擇12.5模式挖掘12.6專題12金融網(wǎng)絡(luò)輿情指數(shù)構(gòu)建與應(yīng)用目錄CONTENTS文本獲取12.112.1文本數(shù)據(jù)挖掘概述文本數(shù)據(jù)挖掘流程可概括為如下七個步驟:(1)文本獲?。唬?)文本預(yù)處理;(3)文本表示;(4)文本特征選擇;(5)模式挖掘;(6)結(jié)果評價;(7)模式輸出與應(yīng)用。12.1文本獲取網(wǎng)絡(luò)爬蟲的本質(zhì)即模擬瀏覽器向網(wǎng)站服務(wù)器發(fā)送請求,然后從服務(wù)器返回的相應(yīng)數(shù)據(jù)中篩選目標(biāo)數(shù)據(jù)。Python是最為常用的爬蟲程序語言之一,利用Python爬蟲獲取文本數(shù)據(jù)的基本工作流程包含四個步驟:發(fā)起HTTP請求;獲取HTTP響應(yīng);解析內(nèi)容;保存數(shù)據(jù)。12.1文本獲取例12.1Python簡單爬蟲實例

運用Python爬取2023年政府工作報告全文。在爬取數(shù)據(jù)前應(yīng)先觀察數(shù)據(jù)所在的網(wǎng)站結(jié)構(gòu)。進(jìn)入2023年政府工作報告網(wǎng)頁,在瀏覽器中按F12鍵打開開發(fā)者模式(有些電腦需同時按下Fn與F12鍵),查看網(wǎng)頁的“元素”菜單,如圖12-2所示??梢钥吹?,想要爬取政府工作報告正文內(nèi)容,只需將其從HTML文檔中提取出來即可。最終采集的政府工作報告文本輸出結(jié)果如圖12-3所示。圖12-22023年政府工作報告網(wǎng)頁HTML文檔圖12-3采集的政府工作報告文本數(shù)據(jù)12.1文本獲取例12.1Python簡單爬蟲實例Python代碼演示importrequestsfrombs4importBeautifulSoup#導(dǎo)入BeautifulSoup4importosos.chdir(r'E:/jrj1/Chapter12/')#修改工作目錄head={'Host':'','User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/99.0.4844.74Safari/537.36Edg/99.0.1150.55'}url='/zhuanti/2023lhzfgzbg/index.htm'#1發(fā)起HTTP請求r=requests.get(url,headers=head);print(r)#2獲取HTTP響應(yīng)html=r.content.decode('utf-8')#設(shè)置編碼方式為utf-8以正確顯示中文;print(html)#3解析內(nèi)容soup=BeautifulSoup(html,"html.parser")#HTML文件解析content=soup.find("div",class_="zhj-bbqw-cont").text#篩選目標(biāo)print(content)#4儲存文件file=open('政府工作報告.txt','w',encoding="utf-8")file.write(content)file.close()12.2文本預(yù)處理分詞分詞,也稱詞條化(Tokenization),即將文檔切分為詞匯的單位。英語、法語、西班牙語等拉丁文語系的語言最小單位均是獨立的詞語,例如“Iamastudent”,詞與詞可通過空格符切分。而中文文本中,詞與詞之間沒有固定的間隔符,因此需要分詞處理。當(dāng)前主要的分詞技術(shù)可劃分為三個流派:基于詞典的分詞技術(shù)(也稱機(jī)械分詞方法、基于理解的分詞技術(shù)、基于統(tǒng)計的分詞技術(shù)。隨著大規(guī)模語料庫的建立以及統(tǒng)計機(jī)器學(xué)習(xí)方法的研究和發(fā)展,基于統(tǒng)計的中文分詞方法逐漸成為主流。Python的中文分詞工具有很多,較為流行的有jieba(結(jié)巴分詞)、THULAC(清華大學(xué)自然語言處理與社會人文計算實驗室)、pkuseg(北京大學(xué)語言計算與機(jī)器學(xué)習(xí)研究組)、SnowNLP等。12.2文本預(yù)處理2.停用詞過濾在漢語中,有一類沒有多少實際意義的詞,例如“啊”“阿”“的”“以及”等詞,被稱為停用詞。停用詞對理解文本沒有太大作用,因此,在進(jìn)行自然語言處理時一般將停用詞過濾掉。停用詞過濾一方面可以對文本數(shù)據(jù)降維,另一方面也可提高文本的信息含量。過濾停用詞可通過建立停用詞表來實現(xiàn),如果詞匯位于停用詞表中,則將其刪除。常用的停用詞表有哈工大停用詞詞庫、四川大學(xué)機(jī)器學(xué)習(xí)智能實驗室停用詞庫、百度停用詞表等。12.2文本預(yù)處理例12.2對《中國金融穩(wěn)定報告(2022)》(節(jié)選)文本進(jìn)行預(yù)處理本例選取《中國金融穩(wěn)定報告(2022)》(節(jié)選)文本進(jìn)行預(yù)處理。首先利用jieba工具包進(jìn)行分詞,然后利用停用詞表stopword.txt對停用詞進(jìn)行過濾。預(yù)處理后結(jié)果如圖12-4所示??梢钥吹?,返回的result對象中為過濾掉停用詞后的詞匯組合。圖12-4《中國金融穩(wěn)定報告(2022)》(節(jié)選)文本預(yù)處理結(jié)果12.2文本預(yù)處理例12.2對《中國金融穩(wěn)定報告(2022)》(節(jié)選)文本進(jìn)行預(yù)處理Python代碼演示importjieba#使用jieba分詞fileContent=open(r'E:/jrj1/Chapter12/金融穩(wěn)定報告節(jié)選.txt','r',encoding="utf-8").read()words=jieba.lcut(fileContent)#分詞后返回一個列表stopwords=[line.strip()forlineinopen('stopword.txt','r',encoding='UTF-8').readlines()]#加載停用詞表result=""forwinwords:ifwnotinstopwords:#停用詞過濾

ifwnotin'\n\t\r\f':#去除特殊符號

result+=w+""print(result)12.3文本表示

圖12-5向量空間模型12.3文本表示例12.3簡單向量空間模型的Python實現(xiàn)比較兩段文本d1“我喜歡投資,不喜歡消費?!迸cd2“我不喜歡投資,也不喜歡消費?!钡南嗨菩?。并在基于這兩段文本的向量空間模型基礎(chǔ)上,比較新句子d3“他討厭投資,但喜歡消費?!迸c已有文本的相似性。在Python中可利用gensim庫構(gòu)建向量空間模型,并利用gensim.similarities模塊計算文本的余弦相似度。最后可得文本d1與d2的相似度為92.45%,即兩段文本高度相似。新文本d3與d1文本的余弦相似度為83.33%,與d2文本的相似度為69.34%。由于向量空間模型無法處理新詞,新文本d3與已有文本d1和d2之間的相似度大幅降低。12.3文本表示importjiebafromgensimimportcorpora,modelsfromgensim.similaritiesimportMatrixSimilarityd1="我喜歡投資,不喜歡消費。"#1.讀取文檔d2=我不喜歡投資,也不喜歡消費。"defstopword_filter(words):#2.分詞result=[]forwinwords:ifwnotin',

。':result.append(w)returnresultw1=jieba.lcut(d1);w2=jieba.lcut(d2)w1=stopword_filter(w1)w2=stopword_filter(w2)texts=[w1,w2]#3.生成字典和向量語料dictionary=corpora.Dictionary(texts)#生成字典corpus=[dictionary.doc2bow(text)fortextintextstfidf=models.TfidfModel(corpus)#利用TF-IDF方法vector=tfidf[corpus[1]]#文本d2表達(dá)。#4.相似性比較featurenums=len(dictionary.token2id)index=MatrixSimilarity(corpus,num_features=featurenums)sim12=index[corpus[1]]#文本d2與文本d1和自身的余弦相似度。print('文本d2與文本d1余弦相似度為:')print(sim12[0])#5.比較新文本d3='他討厭投資,但喜歡消費?!痺3=stopword_filter(jieba.lcut(d3))new3=dictionary.doc2bow(w3)sim=index[new3]print('文本d3與文本d1和文本d2的余弦相似度分別為:')print(sim) 12.3文本表示2.主題模型主題模型(TopicModel)是一種概率生成模型,旨在挖掘文本中隱含的主題或概念。主題可以定義為文檔集中具有相同詞境的詞的集合通過捕獲文本中的主題分布,主題模型可以部分地解決一詞多義和一義多詞的問題。同時,主題提供了一種高維文本數(shù)據(jù)維數(shù)的約減方式,將傳統(tǒng)向量空間模型中的高維稀疏向量轉(zhuǎn)化為低維稠密向量,以緩解維數(shù)災(zāi)難問題。代表性的主題模型有概率潛在語義分析(Probabilisticlatentsemanticanalysis,PLSA)和潛在狄利克雷分布(LatentDirichletallocation,LDA)。12.3文本表示2.主題模型(1)PLSA12.3文本表示2.主題模型(1)PLSA12.3文本表示例12.4LDA簡單模型的Python實現(xiàn)

在本例中,仍利用《中國金融穩(wěn)定報告(2022)》(節(jié)選)數(shù)據(jù)作為文檔集,抽取文檔集的主題。最后輸出結(jié)果如圖12-6所示,輸出結(jié)果中包含10個主題,每個主題囊括了該類別下最相關(guān)的5個詞語及該詞匯在主題中出現(xiàn)的概率。圖12-6LDA主題模型提取結(jié)果12.3文本表示Python代碼演示fromgensim.modelsimportLdaModel,TfidfModel;fromgensim.corporaimportDictionaryimportpandasaspd;importjieba;importrefileContent=open(r'E:/jrj1/Chapter12/金融穩(wěn)定報告節(jié)選.txt','r',encoding="utf-8").read()word=fileContent.split();word=pd.Series(word)jieba_output=(word.astype(str)).apply(jieba.lcut)stopwords=[line.strip()forlineinopen('stopword.txt','r',encoding='UTF-8').readlines()]#建立停用詞表df1=jieba_output.apply(lambdax:[iforiinxifinotinstopwords])#停用詞過濾

df1=df1.apply(lambdax:[re.sub('[\d]','',i)foriinx])texts=[wforwindf1];dictionary=Dictionary(texts)corpus=[dictionary.doc2bow(text)fortextintexts];tfidf=TfidfModel(corpus)lda=LdaModel(corpus=corpus,id2word=dictionary,num_topics=10,random_state=1)x1=lda.show_topics(num_words=5)print("LDA主題類,詞出現(xiàn)概率*詞")forxinx1:print(x)lda=LdaModel(corpus=tfidf[corpus],id2word=dictionary,num_topics=10,random_state=1)x2=lda.show_topics(num_words=5)print("LDA主題類(tfidf優(yōu)化),詞出現(xiàn)概率*詞")forxinx2:print(x)12.3文本表示3.基于神經(jīng)網(wǎng)絡(luò)的詞嵌入模型12.3文本表示例12.5利用Word2vec對股票的文本評論進(jìn)行詞向量編碼本例中利用文件comment_sample.csv進(jìn)行詞向量訓(xùn)練,comment_sample.csv是東方財富網(wǎng)上證股指股吧中2022年的20000條評論,數(shù)據(jù)結(jié)構(gòu)如表12-2所示。12.3文本表示例12.5利用Word2vec對股票的文本評論進(jìn)行詞向量編碼

利用gensim.modelsm模塊中的Word2Vec模塊,采用CBOW模型進(jìn)行詞向量訓(xùn)練,在訓(xùn)練完模型后輸出詞語“漲”的詞向量,以及與“漲”最相關(guān)的10個詞語。輸出結(jié)果如圖12-7所示??梢钥吹?,最終詞向量中一共包含6078個詞,特征向量維度為100。與“漲”最相關(guān)的十個詞分別是“指數(shù)”“個股”“紅”“股票”“跌成”。圖12-7利用Word2vec對股票的文本評論進(jìn)行詞向量編碼12.3文本表示Python代碼演示fromgensim.modelsimportWord2Vecimportpandasaspd;

importjieba;importredf=pd.read_csv(r'E:/jrj1/Chapter12/comment_sample.csv',encoding='utf-8')jieba_output=(df['標(biāo)題'].astype(str)).apply(jieba.lcut)stopwords=[line.strip()forlineinopen('stopword.txt','r',encoding='UTF-8').readlines()]#建立停用詞表df1=jieba_output.apply(lambdax:[iforiinxifinotinstopwords])#停用詞過濾

df1=df1.apply(lambdax:[re.sub('[\d]','',i)foriinx])common_texts=[wforwindf1]model=Word2Vec(sentences=common_texts,vector_size=100,window=5,min_count=2,workers=4)print(model)#summarizevocabularywords=list(model.wv.key_to_index)#print(words[:10])model.save("word2vec.model")model=Word2Vec.load("word2vec.model")vector=model.wv['漲']#getnumpyvectorofawordprint('“漲”的詞向量為:')print(vector)sims=model.wv.most_similar('漲',topn=5)print('和“漲”最相關(guān)的5個詞:')forwinsims:print(w)12.4文本特征選擇TF-IDF法如果某個文本特征詞在某文檔中出現(xiàn)的頻率高,并且在其他文檔中很少出現(xiàn),則認(rèn)為該詞具有很好的類別其區(qū)分能力,適合用來分類。在TF-IDF中,TF代表文本特征詞w在文檔Di中出現(xiàn)的頻率;IDF表示如果包含文本特征詞w的文檔越少,則說明w具有很好的類別區(qū)分能力。表達(dá)式如下所示:12.4文本特征選擇2.互信息法3.信息增益法在文本挖掘中,信息增益代表文本中包含某一文本特征詞時文本類型的平均信息量,體現(xiàn)了某一個特征詞的存在與否對類別預(yù)測的影響能力。因此,一個特征詞w能夠為系統(tǒng)帶來的信息越多,則表示特征詞w越重要。在文本分析中,信息增益的計算式可定義為熵與條件熵的差值:12.4文本特征選擇

12.4文本特征選擇12.4文本特征選擇例12.6文本特征選擇下面介紹基于jieba.analyse.extract_tags()方法的文本特征選擇,從《中國金融穩(wěn)定報告(2022)》(節(jié)選)中抽出TF-IDF權(quán)重最大的20個關(guān)鍵詞。抽取結(jié)果如圖12-8所示。圖12-8文本特征選擇結(jié)果示例12.4文本特征選擇Python代碼演示importjiebaimportjieba.analysefileContent=open(r'E:/jrj1/Chapter12/金融穩(wěn)定報告節(jié)選.txt','r',encoding="utf-8").read()keywords=jieba.analyse.extract_tags(fileContent,topK=20,withWeight=True,allowPOS=('n','nr','ns'))foriteminkeywords:print(item[0],item[1])12.5模式挖掘1.情感分析例如,“雖然目前大盤處于上升周期,但這支股票仍在下跌,投資者極其不看好它,認(rèn)為不能扭虧為盈”,這樣一條評論對應(yīng)的消費者情緒是積極的還是消極的?(1)對評論進(jìn)行分詞:“雖然/目前/大盤/處于/上升/周期/,但/這支/股票/仍/在/下跌/,投資者/極其/不/看好/它/,認(rèn)為/不能/扭虧為盈”。(2)找出句子中的情感詞,并對其賦值。積極的情感詞如“好”“好看”“上漲”等,消極的情感詞如“差”“爛”“下跌”等,出現(xiàn)一個積極詞分值加1,出現(xiàn)一個消極詞分值就減1。(3)往情緒詞前查找程度副詞,并為程度副詞設(shè)置調(diào)整權(quán)重。例如,當(dāng)存在“太”、“無比”等反映強情感的程度副詞時,該詞權(quán)重設(shè)定為2;存在“僅僅”、“有點”等反映弱情感的程度副詞時,該詞權(quán)重設(shè)為0.5。(4)尋找情感詞前是否存在否定詞,如存在,則情感傾向發(fā)生改變,將該條評論的情感權(quán)重設(shè)定為-1。(5)計算一條評論所有分詞的情感值,記錄下來。例句最后綜合情感得分為-3分,即該評論中負(fù)面情緒占主導(dǎo)地位。12.5模式挖掘例12.7用Python實現(xiàn)對一段評論文本的情感分析

利用情感詞典對評論文本進(jìn)行情感分析。Python代碼演示importpandasaspd;importjieba;importosos.chdir(r'E:/jrj1/Chapter12/')#修改工作目錄#加載詞典score=pd.read_table("emotion1.txt",header=None,delimiter=",",encoding='utf-8',names=['word','score'])adv_words=pd.read_csv("fdandcd.txt",header=None,delimiter="\t",encoding='utf-8',names=['term','score'])stopwords=[line.strip()forlineinopen('stopwords.txt','r',encoding='UTF-8').readlines()]#建立停用詞表#找出語料a中的情感詞和程度副詞,計算句子的情感得分defcount_score(a):b=pd.DataFrame(a,columns=['word'])b_score=pd.merge(b,score,how='left',left_on='word',right_on='word')c_score=pd.merge(b_score,adv_words,how='left',left_on='word',right_on='term')delc_score['term']ind=c_score['score_y'].notnull()#布爾向量c_score.loc[ind,'score_x']=012.5模式挖掘Python代碼演示(續(xù))ind2=[iforiinrange(len(c_score))ifind[i]]#定位程度副詞#程度副詞調(diào)整foriinind2:ifi!=(len(c_score)-1):c_score.loc[i+1,'score_x']=c_score.loc[i+1,'score_x']*c_score.loc[i,'score_y']returnc_score['score_x'].sum()#文本預(yù)處理得到語料comment=‘雖然目前大盤處于上升周期,但這支股票仍在下跌,投資者極其不看好它,認(rèn)為不能扭虧為盈'words=jieba.lcut(comment)result=[]forwinwords:ifwnotinstopwords:result.append(w)#調(diào)用count_score()函數(shù)計算情感得分emo=count_score(result)print('當(dāng)前情感得分值為:'+str(emo))12.5模式挖掘2.可視化詞云例12.8用Python生成“詞云”圖在本例中,利用《中國金融穩(wěn)定報告(2022)》(節(jié)選)文本數(shù)據(jù),構(gòu)建詞云提取報告中的關(guān)鍵詞,運行結(jié)果如圖12-9所示。可以看到“同業(yè)業(yè)務(wù)”“銀行”“業(yè)務(wù)”“金融機(jī)構(gòu)”等詞均為報告中的高頻詞匯,凸顯出防范化解金融風(fēng)險的重要性。圖12-9“詞云”運行結(jié)果12.5模式挖掘Python代碼演示

fromwordcloudimportWordCloudimportcollections#詞頻統(tǒng)計庫importjiebaimportmatplotlib.pyplotaspltimportosos.chdir(r'E:/jrj1/Chapter12

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論