版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
能源經(jīng)濟(jì)與管理大數(shù)據(jù)處理與分析案例09能源政策文本分析EnergyPolicyText
Analysis9.1.1案例描述能源政策對于政府、企業(yè)等均具有重要影響,對于政策的把握有助于進(jìn)行科學(xué)決策,文本大數(shù)據(jù)處理與分析技術(shù)為能源政策的研究提供了一種新的工具。本案例通過爬蟲程序爬取能源網(wǎng)站能源要聞頁面的文本,繪制詞云圖,根據(jù)詞云圖中關(guān)鍵詞的出現(xiàn)頻率分析能源政策的關(guān)注重點(diǎn)。本案例主要介紹能源政策文本數(shù)據(jù)采集和分析技術(shù)的實(shí)現(xiàn)方法,包括新聞文本的爬取、文本處理和存儲(chǔ)、詞云圖生成與結(jié)果分析等。9.1.2能源政策文本數(shù)據(jù)采集案例文本數(shù)據(jù)可從國家能源局網(wǎng)站的能源要聞頁面采集,該頁面包含大量關(guān)于能源政策和發(fā)展動(dòng)態(tài)的信息,能夠反映我國能源政策的導(dǎo)向與實(shí)踐效果。本節(jié)僅采集2023年的文本數(shù)據(jù)進(jìn)行案例展示,其他時(shí)間的數(shù)據(jù)可采用相同方法獲取并分析。在編寫Python爬蟲前,需明確目標(biāo)頁面的URL,然后利用urllib+正則表達(dá)式爬取能源要聞的內(nèi)容,并解析網(wǎng)頁獲取標(biāo)題和正文。最終,將爬取的文本數(shù)據(jù)保存至TXT文件,以便后續(xù)分析和處理。9.1.2能源政策文本數(shù)據(jù)采集Python爬蟲程序包含三個(gè)部分的內(nèi)容。發(fā)送請求能源政策文本數(shù)據(jù)采集使用urllib庫,主要使用的是urllib.request,使用前需要提前導(dǎo)入這個(gè)庫。使用response對象接收打開的頁面,之后用定義過的空字符串讀取response中的HTML頁面代碼,注意使用“UTF-8”形式。為了避免異常情況發(fā)生,在訪問頁面時(shí),可以增加try、except方法進(jìn)行異常處理。發(fā)送請求的代碼如下。9.1.2能源政策文本數(shù)據(jù)采集爬取能源要聞標(biāo)題和正文爬取能源要聞標(biāo)題和正文需要調(diào)用Python中的re庫,可以使用import提前導(dǎo)入這個(gè)庫。使用pile()結(jié)合findall()函數(shù)解析response,爬取能源要聞標(biāo)題和正文并輸出,其中正文爬取了兩次,分別用于縮小范圍和爬取正文內(nèi)容。編寫代碼之前需要提前找好網(wǎng)址中標(biāo)題和正文內(nèi)容所在的位置。首先在能源要聞頁面使用F12鍵,打開頁面調(diào)試窗口。在頁面調(diào)試窗口上的導(dǎo)航欄中找到元素,單擊框選的位置,然后分別單擊標(biāo)題和正文,可以發(fā)現(xiàn)標(biāo)題在“<divclass=”titles“></div>”元素之間,正文在“<p></p>”元素之間,如下圖所示。9.1.2能源政策文本數(shù)據(jù)采集爬取能源要聞標(biāo)題和正文的代碼如下。9.1.2能源政策文本數(shù)據(jù)采集主函數(shù)主函數(shù)部分需要調(diào)用Python的BeautifulSoup庫,可以使用import提前導(dǎo)入這個(gè)庫。程序中通過指定能源要聞頁面的URL地址,進(jìn)行遍歷爬取。此處僅爬取2023年的能源要聞,共需要爬取6個(gè)頁面,因此需要將所有頁面網(wǎng)址存入urls_news列表。利用同樣的方法可以獲取標(biāo)題鏈接(在特征為“class=box01”的div標(biāo)簽中的li標(biāo)簽中),其中urls即鏈接所在列表。最后使用for循環(huán)遍歷列表中的所有鏈接,調(diào)用上文中的get_page()和get_parser()兩個(gè)函數(shù)爬取標(biāo)題和正文。9.1.3能源政策詞云圖將上文爬取的能源要聞標(biāo)題和正文的文本內(nèi)容進(jìn)行分詞,并繪制詞云圖。Python程序代碼編寫共分為以下三個(gè)階段。準(zhǔn)備階段需要提前安裝matplotlib庫、jieba庫和WordCloud庫。因?yàn)閃ordCloud庫默認(rèn)不支持中文,所以這里需要下載好中文字庫,本文使用的是“思源屏顯臻宋.ttf”。同時(shí),由于語氣詞、虛詞、標(biāo)點(diǎn)符號等在文本中出現(xiàn)頻率較高,但并沒有實(shí)際意義,而且影響詞頻分析結(jié)果,因此需要添加停用詞,以排除掉這些詞語,可以使用停用詞詞庫文件或手動(dòng)添加停用詞(本書使用的是“cn_stopwords.txt”詞庫文件,文件中可以繼續(xù)添加停用詞)的方法。最后需要準(zhǔn)備詞云圖呈現(xiàn)形狀的圖片,一般為白底黑色填充的圖片樣式。讀取文本并分詞將上文中爬取的能源要聞標(biāo)題和正文文本保存進(jìn)“word_cloud_text.txt”文件中,通過read()函數(shù)讀取文件內(nèi)容。利用jieba庫進(jìn)行分詞形成列表(使用導(dǎo)入的jieba庫),將列表里面的詞用空格分開,并拼接成長字符串,最后導(dǎo)入停用詞。讀取文本并分分詞的代碼如下。9.1.3能源政策詞云圖9.1.3能源政策詞云圖生成詞云圖并保存先導(dǎo)入下載好的中文字庫和形狀圖片,再使用np.array()函數(shù)處理圖片(此處需要導(dǎo)入numpy庫),使用WordCloud()函數(shù)設(shè)定好詞云圖的字體、背景色、背景寬和高、最大最小字號等(需要提前導(dǎo)入WordCloud庫),生成詞云圖并保存,最終以圖片形式顯示。生成詞云圖并保存的代碼如下。9.1.3能源政策詞云圖詞云圖如下圖所示。由上面的詞云圖能夠看出,“項(xiàng)目”“發(fā)展”“企業(yè)”“技術(shù)”“創(chuàng)新”“新能源”“綠色”“低碳”“電力”“儲(chǔ)能”是出現(xiàn)較多的詞,說明我國能源政策仍以項(xiàng)目驅(qū)動(dòng)發(fā)展,技術(shù)創(chuàng)新與綠色低碳是重要導(dǎo)向,能源系統(tǒng)中新能源發(fā)展、儲(chǔ)能等是當(dāng)前的重點(diǎn)領(lǐng)域。本節(jié)僅根據(jù)2023年的能源要聞數(shù)據(jù)制作了一個(gè)詞云圖,讀者可以根據(jù)不同年份的能源要聞數(shù)據(jù)制作不同的詞云圖,觀察政策和能源行業(yè)的演化特征,也可以進(jìn)一步使用主題識別技術(shù),研究能源政策的主題演化。國際LNG貿(mào)易網(wǎng)絡(luò)分析AnalysisOfinternationalLNGTradeNetwork9.2.1案例描述本案例基于圖神經(jīng)網(wǎng)絡(luò)技術(shù)對全球各國LNG貿(mào)易網(wǎng)絡(luò)的特點(diǎn)進(jìn)行研究,使用節(jié)點(diǎn)中心性方法研究各國在LNG貿(mào)易網(wǎng)絡(luò)中的地位和影響力,通過分析歷年的節(jié)點(diǎn)中心性探究LNG貿(mào)易格局的演變趨勢,并且使用圖嵌入技術(shù)實(shí)現(xiàn)節(jié)點(diǎn)的向量化,將LNG貿(mào)易網(wǎng)絡(luò)中的各國進(jìn)行向量化表示,這種向量化表示可以為后續(xù)的研究提供幫助。本案例的理論基礎(chǔ)參考6.6節(jié)相關(guān)內(nèi)容,案例數(shù)據(jù)來源于《BP世界能源統(tǒng)計(jì)年鑒》。9.2.2數(shù)據(jù)預(yù)處理與圖的生成數(shù)據(jù)預(yù)處理從《BP世界能源統(tǒng)計(jì)年鑒》“Gas-TrademovtsLNG”表單中提取數(shù)據(jù),單獨(dú)創(chuàng)建“relation”表單來保存案例中的“節(jié)點(diǎn)”和“邊”,“relation”表單部分內(nèi)容如下圖所示。9.2.2數(shù)據(jù)預(yù)處理與圖的生成圖的生成首先使用openpyxl庫導(dǎo)入數(shù)據(jù),使用networkx庫來生成圖,將“relation”表單中的貿(mào)易關(guān)系信息作為“邊”導(dǎo)入,無數(shù)據(jù)的則認(rèn)為不存在貿(mào)易關(guān)系,表單中對應(yīng)的國家或地區(qū)設(shè)置為“節(jié)點(diǎn)”,然后生成圖。圖生成的代碼如下。9.2.2數(shù)據(jù)預(yù)處理與圖的生成2013年各國的LNG貿(mào)易網(wǎng)絡(luò)可以繪制為一個(gè)圖,如下所示。9.2.3LNG貿(mào)易網(wǎng)絡(luò)節(jié)點(diǎn)中心性使用networkx庫可以直接生成LNG貿(mào)易網(wǎng)絡(luò)中各節(jié)點(diǎn)的點(diǎn)度中心性、中介中心性、接近中心性、特征向量中心性,并將中心性結(jié)果保存為Excel文件,代碼如下。9.2.3LNG貿(mào)易網(wǎng)絡(luò)節(jié)點(diǎn)中心性利用同樣的方法可以輸出2022年各國的LNG貿(mào)易網(wǎng)絡(luò)中各節(jié)點(diǎn)的中心性,從而可以從時(shí)間維度對比分析中心性指標(biāo)的變化。下圖展示了2013年和2022年LNG貿(mào)易網(wǎng)絡(luò)中各國的點(diǎn)度中心性對比結(jié)果。觀察點(diǎn)度中心性對比結(jié)果可以得出如下結(jié)論:2013年全球LNG貿(mào)易的重心主要在卡塔爾、日本、韓國等地,2022年LNG貿(mào)易的重心發(fā)生了變化,美國的中心性明顯提升,主要源于美國LNG出口的快速增長。9.2.4LNG貿(mào)易網(wǎng)絡(luò)的圖嵌入圖嵌入是指將圖節(jié)點(diǎn)進(jìn)行向量化表示,獲取更多的特征嵌入編碼,這可以幫助以后的任務(wù)獲得更好的結(jié)果。運(yùn)用圖嵌入方法可以將上述的LNG貿(mào)易網(wǎng)絡(luò)節(jié)點(diǎn)進(jìn)行向量化表示。本節(jié)以DeepWalk方法為例,對圖嵌入方法的使用進(jìn)行介紹。首先需要實(shí)現(xiàn)deep_walk()函數(shù),輸入?yún)?shù)為圖的節(jié)點(diǎn)集合和最大游走步數(shù)。先通過G.nodes()函數(shù)獲取圖中節(jié)點(diǎn)集合,通過G.neighbors(node)函數(shù)獲取當(dāng)前節(jié)點(diǎn)的鄰居節(jié)點(diǎn),再通過random方法隨機(jī)選取鄰居節(jié)點(diǎn),持續(xù)到規(guī)定的最大游走步數(shù),即完成一個(gè)節(jié)點(diǎn)的采樣。deep_walk()函數(shù)代碼如下。9.2.4LNG貿(mào)易網(wǎng)絡(luò)的圖嵌入調(diào)用Gensim庫的Word2Vec方法,對上述隨機(jī)游走獲得的訓(xùn)練語料進(jìn)行訓(xùn)練,獲取詞嵌入結(jié)果,此處為了便于圖形化展示,將vector_size設(shè)置為2,即將每個(gè)國家或地區(qū)節(jié)點(diǎn)表示成一個(gè)2維特征向量,在現(xiàn)實(shí)應(yīng)用中,vector_size的值會(huì)比較大。實(shí)現(xiàn)代碼如下。9.2.4LNG貿(mào)易網(wǎng)絡(luò)的圖嵌入各個(gè)國家在圖上的信息可以使用如下圖所示的向量來表示,圖嵌入可以較好地表示節(jié)點(diǎn)在圖上的信息,使得國家之間具有較好的差異性表示,圖上具有相似性特征的國家的向量較為接近,這為后續(xù)的應(yīng)用提供了較好的基礎(chǔ)。Thankyou!煤炭大數(shù)據(jù)分析案例10CaseofCoalBigDataAnalysis10.1煤炭類型識別
案例描述:通過識別煤炭的類型,可以幫助礦工和科學(xué)家更好地了解煤炭的特性和用途,若將煤炭類型自動(dòng)識別技術(shù)應(yīng)用于機(jī)器,則可以實(shí)現(xiàn)對煤炭的自動(dòng)識別與揀選。本案例描述了如何使用卷積神經(jīng)網(wǎng)絡(luò)(CNN)來實(shí)現(xiàn)煤炭類型的自動(dòng)識別。本案例采用的數(shù)據(jù)集為4類煤炭的圖片數(shù)據(jù)集,包括無煙煤(Anthracite)、煙煤(Bituminous)、褐煤(Lignite)和泥煤(Peat),數(shù)據(jù)來源于Kaggle。10.1.2實(shí)現(xiàn)步驟CNN模型的訓(xùn)練共包含7步。步驟1:數(shù)據(jù)收集和準(zhǔn)備。收集煤炭圖片數(shù)據(jù)集,確保每個(gè)類別都有足夠數(shù)量的圖片。將數(shù)據(jù)集劃分為訓(xùn)練集和測試集,通??梢詫?0%或30%的數(shù)據(jù)作為測試集。步驟2:數(shù)據(jù)預(yù)處理。對圖片進(jìn)行預(yù)處理,包括調(diào)整圖片大小、歸一化像素值等,可以通過Python的圖片處理庫(OpenCV)來完成。步驟3:建立CNN模型。使用Python的深度學(xué)習(xí)框架(TensorFlow)建立CNN模型。CNN模型應(yīng)包括卷積層、池化層和全連接層,以及適當(dāng)?shù)募せ詈瘮?shù)(如ReLU)和正則化技術(shù)(Dropout)。步驟4:模型訓(xùn)練。使用訓(xùn)練集對CNN模型進(jìn)行訓(xùn)練,通過將圖片數(shù)據(jù)傳遞給模型并提供相應(yīng)的標(biāo)簽,模型將學(xué)習(xí)如何區(qū)分不同類型的煤炭。步驟5:模型評估。使用測試集評估訓(xùn)練后的CNN模型的性能,計(jì)算準(zhǔn)確率、精確率、召回率等指標(biāo),以衡量模型在識別不同煤炭類型方面的表現(xiàn)。步驟6:模型優(yōu)化(可選)。根據(jù)評估結(jié)果,可能需要調(diào)整CNN模型的超參數(shù),如學(xué)習(xí)率、層數(shù)、卷積核大小等,以獲得更好的性能。步驟7:預(yù)測新數(shù)據(jù)。當(dāng)CNN模型完成訓(xùn)練并優(yōu)化后,可以使用它來預(yù)測新的煤炭圖片類型。將新的煤炭圖片輸入模型,并獲取模型的預(yù)測結(jié)果。10.1.3程序?qū)崿F(xiàn)與結(jié)果分析首先需要導(dǎo)入CNN模型使用的包,os用于識別文件路徑,cv2用來讀取和處理圖片文件,pickle用于存儲(chǔ)和讀取數(shù)據(jù)(也可不使用),keras用于建立CNN模型。importnumpyasnpimportmatplotlib.pyplotaspltimportosimportcv2importpicklefromtensorflowimportkerasfromkeras.modelsimportSequentialfromkeras.layersimportDense,Activation,Flatten,Conv2D,MaxPooling2Dimportrandom10.1.3程序?qū)崿F(xiàn)與結(jié)果分析對所有圖片數(shù)據(jù)進(jìn)行預(yù)處理,將所有圖片處理成IMG_SIZE定義的像素大小的灰度圖片。DATADIR="Coal_Classification"CATEGPRIES=["Anthracite","Bituminous","Lignite","Peat"]IMG_SIZE=50training_data=[]defcreate_training_data():forcategoryinCATEGPRIES:path=os.path.join(DATADIR,category)class_num=CATEGPRIES.index(category)forimginos.listdir(path):try:img_array=cv2.imread(os.path.join(path,img),cv2.IMREAD_GRAYSCALE)new_array=cv2.resize(img_array,(IMG_SIZE,IMG_SIZE))training_data.append([new_array,class_num])exceptExceptionase:passcreate_training_data()10.1.3程序?qū)崿F(xiàn)與結(jié)果分析然后打亂圖片數(shù)據(jù)集的順序,對所有圖片提取特征(像素值)和標(biāo)簽,將數(shù)據(jù)序列化,并保存為X.pickle、y.pickle二進(jìn)制文件。random.shuffle(training_data)X=[]y=[]forfeatures,labelintraining_data:X.append(features)y.append(label)pickle_out=open('X.pickle',"wb")pickle.dump(X,pickle_out)pickle_out.close()pickle_out=open('y.pickle',"wb")pickle.dump(y,pickle_out)pickle_out.close()10.1.3程序?qū)崿F(xiàn)與結(jié)果分析加載X.pickle、y.pickle數(shù)據(jù),利用Keras框架建立CNN模型,訓(xùn)練CNN模型。模型結(jié)構(gòu)中采用了128個(gè)3×3的卷積核,模型結(jié)構(gòu)并不是固定的,可以根據(jù)訓(xùn)練效果對卷積層進(jìn)行增加或減少。Flatten后建立一個(gè)128個(gè)神經(jīng)元的隱藏層(使用ReLU激活函數(shù)),輸出層為4個(gè)神經(jīng)元(使用Sigmoid型激活函數(shù))。模型訓(xùn)練中使用SGD算法進(jìn)行參數(shù)更新,其中學(xué)習(xí)率設(shè)置為0.05,將20%的數(shù)據(jù)作為驗(yàn)證集。最后進(jìn)行繪圖。X=pickle.load(open('X.pickle','rb'))y=pickle.load(open('y.pickle','rb'))X=np.array(X).reshape(-1,IMG_SIZE,IMG_SIZE,1)y=keras.utils.to_categorical(np.array(y))X=X/255.0model=Sequential()model.add(Conv2D(128,(3,3),input_shape=X.shape[1:]))model.add(Activation('relu'))model.add(MaxPooling2D(pool_size=(2,2)))model.add(Conv2D(128,(3,3)))model.add(Activation('relu'))model.add(MaxPooling2D(pool_size=(2,2)))model.add(Flatten())model.add(Dense(128))10.1.3程序?qū)崿F(xiàn)與結(jié)果分析model.add(Activation('relu'))model.add(Dense(4))model.add(Activation('sigmoid'))sgd=keras.optimizers.SGD(learning_rate=0.05)pile(loss='categorical_crossentropy',optimizer=sgd,metrics=['accuracy'])history=model.fit(X,y,batch_size=10,epochs=30,validation_split=0.2)model.save('model_cnn.h5')loss=history.history['loss']val_loss=history.history['val_loss']plt.plot(loss,label='loss')plt.plot(val_loss,label='val_loss')plt.title('modelloss')plt.ylabel('loss')plt.xlabel('epoch')plt.legend(['train','valid'],loc='upperleft')plt.savefig('./loss.png')10.1.3程序?qū)崿F(xiàn)與結(jié)果分析model.save('model_cnn.h5')的作用是將模型結(jié)構(gòu)和訓(xùn)練結(jié)果存儲(chǔ)為H5類型的文件,需要安裝好h5py包,才能正常運(yùn)行該行代碼。h5py包是Python中用于讀取和寫入HDF5文件格式數(shù)據(jù)的軟件包,HDF5指的是層次型數(shù)據(jù)格式,主要用于存儲(chǔ)和管理大數(shù)據(jù)集和復(fù)雜數(shù)據(jù)對象。這種存儲(chǔ)模型的方式既可以存儲(chǔ)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),又可以存儲(chǔ)訓(xùn)練結(jié)果。訓(xùn)練完成后,可以使用存儲(chǔ)的H5類型的文件進(jìn)行新的應(yīng)用。CNN模型的訓(xùn)練結(jié)果如圖
10-1所示??梢钥闯?,在訓(xùn)練集上CNN模型的準(zhǔn)確率可以達(dá)到90%以上,而在驗(yàn)證集上并不理想,這主要是驗(yàn)證集的樣本量不足導(dǎo)致的。圖10-1CNN模型的訓(xùn)練結(jié)果10.1.3程序?qū)崿F(xiàn)與結(jié)果分析訓(xùn)練完成后,可以加載CNN模型,利用CNN模型對新的圖片進(jìn)行識別分類,并輸出分類結(jié)果。本案例中建立了名為to_predict_Bituminous的文件夾,隨機(jī)挑選幾張煙煤圖片(復(fù)制幾張圖片粘貼于to_predict_Bituminous文件夾即可),加載模型并進(jìn)行預(yù)測,代碼如下。fromkeras.modelsimportload_modelimportnumpyasnpimportcv2importosIMG_SIZE=50DATADIR="Coal_Classification"CATEGPRIES=["Anthracite","Bituminous","Lignite","Peat"]model=load_model('model_cnn.h5')predict_imgs=[]DATADIR="Coal_Classification"path=os.path.join(DATADIR,"to_predict_Bituminous")10.1.3程序?qū)崿F(xiàn)與結(jié)果分析forimginos.listdir(path):try:img_predict_array=cv2.imread(os.path.join(path,img),cv2.IMREAD_GRAYSCALE)#將圖片的大小統(tǒng)一為50像素×50像素new_array=cv2.resize(img_predict_array,(IMG_SIZE,IMG_SIZE))predict_imgs.append(new_array)exceptExceptionase:passpredict_imgs=np.array(predict_imgs).reshape(-1,IMG_SIZE,IMG_SIZE,1)predict_imgs=predict_imgs/255.0predict=model.predict(predict_imgs)print('5張煙煤圖片的識別結(jié)果為:')forpredict_iinpredict:print("概率為%.3f,判斷為%s"%(max(predict_i),CATEGPRIES[np.argmax(predict_i)]))10.2煤礦地震預(yù)測案例描述煤礦開采是一項(xiàng)非常危險(xiǎn)的作業(yè),如易燃?xì)怏w積聚、巖石爆炸和隧道坍塌等,安全問題對煤礦生產(chǎn)影響巨大。因此,礦業(yè)公司必須考慮并盡可能規(guī)避這些危險(xiǎn),為礦工提供安全的工作條件。其中一類危險(xiǎn)被稱為“煤礦地震”或“煤礦誘發(fā)地震”,這是采煤活動(dòng)引起的地下巖層應(yīng)力重新分布和釋放導(dǎo)致的,會(huì)危害礦工安全和造成設(shè)備損壞。但是,煤礦地震一般難以有效防范,甚至難以確定性地預(yù)測。當(dāng)前,預(yù)測煤礦地震是機(jī)器學(xué)習(xí)和預(yù)測分析領(lǐng)域的一個(gè)難題。10.2.2模型方法與數(shù)據(jù)集本案例的目標(biāo)是使用Logistic回歸算法來預(yù)測地震中的能量讀數(shù)和撞擊次數(shù)是否會(huì)導(dǎo)致嚴(yán)重的地震危險(xiǎn)并評估其預(yù)測準(zhǔn)確性,以驗(yàn)證Logistic回歸算法在解決這一問題上的效果。本案例使用了UCI機(jī)器學(xué)習(xí)庫中一個(gè)名為“SeismicBumps”的數(shù)據(jù)集,其中包含大量的記錄,涵蓋各種分類和數(shù)值變量,可用于預(yù)測煤礦地震。這些數(shù)據(jù)來自波蘭的Zabrze-Bielszowice煤礦的儀器,總共包括2584個(gè)記錄。建立數(shù)據(jù)集的目的是使用一個(gè)工作班次期間的能量讀數(shù)和撞擊計(jì)數(shù)來預(yù)測下一個(gè)工作班次期間是否會(huì)發(fā)生“危險(xiǎn)性撞擊”。在這里,被定義為“危險(xiǎn)性撞擊”的事件是指地震事件的能量大于10000J,并且一個(gè)工作班次是指一個(gè)8小時(shí)的時(shí)間段。數(shù)據(jù)集中主要包含18個(gè)輸入變量(特征)和1個(gè)二進(jìn)制輸出變量(標(biāo)簽),其說明如表
10-1所示。序號特征或標(biāo)簽變量說明1seismic表示通過地震方法獲得的礦山工作中的班次地震危險(xiǎn)評估結(jié)果,包含4個(gè)可能的值,分別表示不同的危險(xiǎn)程度:a—無危險(xiǎn),b—低危險(xiǎn),c—高危險(xiǎn),d—危險(xiǎn)狀態(tài)2seismoacoustic表示通過聲波地震方法獲得的礦山工作中的班次地震危險(xiǎn)評估結(jié)果,包含4個(gè)可能的值,分別表示不同的危險(xiǎn)程度:a—無危險(xiǎn),b—低危險(xiǎn),c—高危險(xiǎn),d—危險(xiǎn)狀態(tài)3shift表示班次類型的信息,其中W代表采煤班次,N代表準(zhǔn)備班次4genergy表示前一個(gè)班次中由最活躍的地震儀(GMax)記錄的地震能量5gpuls表示前一個(gè)班次中GMax記錄的地震脈沖的數(shù)量6gdenergy表示了前一個(gè)班次中GMax記錄的能量與前八個(gè)班次中平均能量的差異7gdpuls表示前一個(gè)班次中GMax記錄的脈沖數(shù)量與前八個(gè)班次中平均脈沖數(shù)量的差異8ghazard表示僅基于來自GMax的記錄通過聲波地震方法獲得的礦山工作中的班次地震危險(xiǎn)評估結(jié)果9nbumps表示前一個(gè)班次中記錄的地震撞擊的數(shù)量10nbumps2表示前一個(gè)班次中記錄的撞擊能量在范圍[102,103)內(nèi)的地震數(shù)量11nbumps3表示前一個(gè)班次中記錄的撞擊能量在范圍[103,104)內(nèi)的地震數(shù)量12nbumps4表示前一個(gè)班次中記錄的撞擊能量在范圍[104,105)內(nèi)的地震數(shù)量13nbumps5表示前一個(gè)班次中記錄的撞擊能量在范圍[105,106)內(nèi)的地震數(shù)量14nbumps6表示前一個(gè)班次中記錄的撞擊能量在范圍[106,107)內(nèi)的地震數(shù)量15nbumps7表示前一個(gè)班次中記錄的撞擊能量在范圍[107,108)內(nèi)的地震數(shù)量16nbumps89表示前一個(gè)班次中記錄的撞擊能量在范圍[108,1010)內(nèi)的地震數(shù)量17energy表示前一個(gè)班次中記錄的地震撞擊的總能量18maxenergy表示前一個(gè)班次中記錄的地震撞擊的最大能量19class數(shù)據(jù)集的標(biāo)簽,其中“1”表示在下一個(gè)班次中發(fā)生了高能量地震撞擊(被認(rèn)為是“危險(xiǎn)狀態(tài)”),而“0”表示在下一個(gè)班次中沒有發(fā)生高能量地震撞擊(被認(rèn)為是“非危險(xiǎn)狀態(tài)”)表10-1數(shù)據(jù)集的特征和標(biāo)簽說明10.1.3程序?qū)崿F(xiàn)與結(jié)果分析(1)數(shù)據(jù)集明顯具有不均衡性,存在地震可能的記錄明顯少于正常情況,因此需要考慮對不均衡數(shù)據(jù)進(jìn)行處理,以提升模型預(yù)測的準(zhǔn)確性,原因在于Logistic回歸算法對樣本不均衡比較敏感。Logistic回歸算法采用經(jīng)驗(yàn)風(fēng)險(xiǎn)最小化作為模型的學(xué)習(xí)準(zhǔn)則,即它的優(yōu)化目標(biāo)是最小化模型在訓(xùn)練集上的平均損失,這種算法天然地會(huì)將關(guān)注點(diǎn)更多地放在多數(shù)類別的擬合情況上,因?yàn)槎鄶?shù)類別的分類正確與否,更加影響最終的整體損失情況。而在樣本不均衡的建模任務(wù)中,人們常常更關(guān)注的是少數(shù)類別的分類正確與否,這就導(dǎo)致實(shí)際的建模目標(biāo)和模型本身的優(yōu)化目標(biāo)是不一致的。10.1.3程序?qū)崿F(xiàn)與結(jié)果分析(2)處理樣本不均衡問題的方法一般分為兩種:權(quán)重法和采樣法。權(quán)重法分為類別權(quán)重法和樣本權(quán)重法。類別權(quán)重法將權(quán)重加在類別上,若類別的樣本量多,則類別的權(quán)重設(shè)低一些,反之類別的權(quán)重設(shè)高一些;樣本權(quán)重法的權(quán)重加在樣本上,若類別的樣本量多,則其每個(gè)樣本的權(quán)重低,反之每個(gè)樣本的權(quán)重高。采樣法可以分為上采樣(或過采樣)、下采樣(或子采樣)。上采樣對樣本量少的類別進(jìn)行采樣,直到和樣本量多的類別量級差不多,SMOTE(SyntheticMinorityOver-samplingTechnique)是一種流行的過采樣方法之一,它通過在少數(shù)類別樣本之間合成新的樣本來增加樣本量,從而均衡數(shù)據(jù)集;下采樣對樣本量多的類別進(jìn)行采樣,直到和樣本量少的類別量級差不多。10.2.3程序?qū)崿F(xiàn)與結(jié)果分析1)數(shù)據(jù)的導(dǎo)入與清洗首先需要導(dǎo)入相關(guān)的庫,然后使用arff.loadarff()函數(shù)加載剛剛下載的ARFF文件,這將返回兩個(gè)值:data和meta,data是包含數(shù)據(jù)的結(jié)構(gòu)化對象,meta是與數(shù)據(jù)相關(guān)的元數(shù)據(jù)(如特征信息)。使用pandas庫創(chuàng)建一個(gè)DataFrame對象df,將data中的數(shù)據(jù)轉(zhuǎn)換為DataFrame,使數(shù)據(jù)更容易分析和處理。將數(shù)據(jù)集中的類別變量轉(zhuǎn)化為數(shù)值變量,這里使用Scikit-Learn(sklearn)庫中的LabelEncoder類來將類別變量轉(zhuǎn)換為標(biāo)簽編碼。通過調(diào)用fit_transform方法,將每列中的類別變量轉(zhuǎn)換為標(biāo)簽編碼形式。數(shù)據(jù)的導(dǎo)入與清洗代碼如下defETL_data():data,meta=arff.loadarff("seismic-bumps.arff")df=pd.DataFrame(data)label_encoder=LabelEncoder()df['seismic']=label_encoder.fit_transform(df['seismic'])df['seismoacoustic']=label_encoder.fit_transform(df['seismoacoustic'])df['shift']=label_encoder.fit_transform(df['shift'])df['ghazard']=label_encoder.fit_transform(df['ghazard'])mlb=MultiLabelBinarizer()df['class']=mlb.fit_transform(df['class'])returndf10.2.3程序?qū)崿F(xiàn)與結(jié)果分析2)Logistic回歸模型訓(xùn)練創(chuàng)建特征變量和目標(biāo)變量的數(shù)據(jù)集,特征變量X定義為df中除'class'列外的所有其他列,使用drop方法從df中刪除'class'列,目標(biāo)變量y定義為'class'列。將數(shù)據(jù)集劃分為訓(xùn)練集和測試集。使用train_test_split函數(shù)從特征變量X和目標(biāo)變量y中創(chuàng)建4個(gè)數(shù)據(jù)集:X_train(訓(xùn)練集特征)、X_test(測試集特征)、y_train(訓(xùn)練集目標(biāo))、y_test(測試集目標(biāo))。10.2.3程序?qū)崿F(xiàn)與結(jié)果分析2)Logistic回歸模型訓(xùn)練test_size=0.2表示將數(shù)據(jù)集劃分成80%的訓(xùn)練集和20%的測試集。這是一種常見的劃分比例,但可以根據(jù)需要進(jìn)行調(diào)整。LogisticRegression方法中penalty是正則化選項(xiàng),主要有兩種:“l(fā)1”和“l(fā)2”,默認(rèn)為“l(fā)2”;C是正則化系數(shù)的倒數(shù),其值越小,正則化越強(qiáng),通常默認(rèn)為1;solver用來指定Logistic回歸的優(yōu)化方法,liblinear表示使用坐標(biāo)軸下降法來迭代優(yōu)化損失函數(shù),也可以選擇其他方法;max_iter用來設(shè)置最大的迭代次數(shù);random_state是隨機(jī)種子,用于確保每次運(yùn)行代碼時(shí)都獲得相同的隨機(jī)劃分。10.2.3程序?qū)崿F(xiàn)與結(jié)果分析deftrain_and_predict(df):X=df.drop('class',axis=1)y=df['class']X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=42)model=LogisticRegression(penalty='l2',C=1.0,solver='liblinear',max_iter=100,random_state=42)model.fit(X_train,y_train)y_pred=model.predict(X_test)accuracy=accuracy_score(y_test,y_pred)print(f"準(zhǔn)確率:{accuracy:.2f}")print(classification_report(y_test,y_pred))10.2.3程序?qū)崿F(xiàn)與結(jié)果分析defsmote_train_predict(df):X=df.drop('class',axis=1)y=df['class']oversampler=SMOTE(sampling_strategy=0.5,random_state=0)os_features,os_labels=oversampler.fit_resample(X,y)counter=Counter(os_labels)print(counter)X_train_smote_sample,X_test_smote_sample,y_train_smote_sample,y_test_smote_sample=\train_test_split(os_features,os_labels,test_size=0.3,random_state=0)model=LogisticRegression(penalty='l2',C=1,solver='liblinear',max_iter=100,random_state=0)model.fit(X_train_smote_sample,y_train_smote_sample)y_pred=model.predict(X_test_smote_sample)accuracy=accuracy_score(y_test_smote_sample,y_pred)print(f"準(zhǔn)確率:{accuracy:.2f}")print(classification_report(y_test_smote_sample,y_pred))上述代碼未對不均衡數(shù)據(jù)進(jìn)行處理,可以使用SMOTE方法對不均衡數(shù)據(jù)進(jìn)行處理,代碼如下。10.2.3程序?qū)崿F(xiàn)與結(jié)果分析defsmote_train_predict(df):X=df.drop('class',axis=1)y=df['class']oversampler=SMOTE(sampling_strategy=0.5,random_state=0)os_features
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度公益慈善晚會(huì)活動(dòng)策劃與實(shí)施合同4篇
- 2025年度互聯(lián)網(wǎng)內(nèi)容提供商ICP證年審全權(quán)委托服務(wù)合同3篇
- 二零二五年度生物科技研發(fā)農(nóng)民工就業(yè)服務(wù)合同4篇
- 電子商務(wù)平臺(tái)消費(fèi)者權(quán)益保護(hù)2025年度國際協(xié)調(diào)合同2篇
- 2025年度牛肝菌有機(jī)認(rèn)證與市場拓展合同
- 二零二五版昆明滇池度假區(qū)酒店管理合同3篇
- 二零二五年度農(nóng)業(yè)種植勞務(wù)作業(yè)承包合同范本3篇
- 2025年度塑料管材國際貿(mào)易爭端解決合同
- 2025年度私立學(xué)校校長任期教育科研成果轉(zhuǎn)化合同
- 二零二五年度企業(yè)員工期權(quán)激勵(lì)合同范本
- 廣東省佛山市2025屆高三高中教學(xué)質(zhì)量檢測 (一)化學(xué)試題(含答案)
- 人教版【初中數(shù)學(xué)】知識點(diǎn)總結(jié)-全面+九年級上冊數(shù)學(xué)全冊教案
- 四川省成都市青羊區(qū)成都市石室聯(lián)合中學(xué)2023-2024學(xué)年七上期末數(shù)學(xué)試題(解析版)
- 2024-2025學(xué)年人教版七年級英語上冊各單元重點(diǎn)句子
- 2025新人教版英語七年級下單詞表
- 公司結(jié)算資金管理制度
- 2024年小學(xué)語文教師基本功測試卷(有答案)
- 未成年入職免責(zé)協(xié)議書
- 項(xiàng)目可行性研究報(bào)告評估咨詢管理服務(wù)方案1
- 5歲幼兒數(shù)學(xué)練習(xí)題
- 2024年全國體育單招英語考卷和答案
評論
0/150
提交評論