程俊英
(運(yùn)城師范高等專(zhuān)科學(xué)校 山西省運(yùn)城市 044000)
從技術(shù)特性來(lái)看,Python語(yǔ)言具有面向?qū)ο蟮膬?yōu)勢(shì),在數(shù)據(jù)分析處理中通過(guò)該技術(shù)可以完全面向函數(shù)、模塊、數(shù)字、字符串等,并且能夠支持重載運(yùn)算符與動(dòng)態(tài)類(lèi)型,為了實(shí)現(xiàn)這一功能,Python語(yǔ)言的數(shù)據(jù)處理可以按照以下技術(shù)流程來(lái)解讀。
在數(shù)據(jù)處理中,通過(guò)Python語(yǔ)言可以將分散在不同運(yùn)維數(shù)據(jù)庫(kù)中的數(shù)據(jù)整合在一起,將不同領(lǐng)域的數(shù)據(jù)經(jīng)DBLINK等連接在數(shù)據(jù)庫(kù)中,在后續(xù)的數(shù)據(jù)處理中即可直接從數(shù)據(jù)庫(kù)中提取原始資料。在數(shù)據(jù)集成中,通過(guò)將目標(biāo)數(shù)據(jù)做連續(xù)采集后,通過(guò)集成的方法可以采集數(shù)據(jù)的特征值,現(xiàn)階段相關(guān)學(xué)者提出通過(guò)大數(shù)據(jù)等技術(shù)處理方法對(duì)數(shù)據(jù)做深度集成,利用大數(shù)據(jù)技術(shù)所提供的數(shù)據(jù)處理過(guò)程來(lái)觀察數(shù)據(jù)的演化趨勢(shì),所集成的數(shù)據(jù)可以用于后續(xù)的數(shù)據(jù)深加工。
當(dāng)原始記錄被存儲(chǔ)在運(yùn)維數(shù)據(jù)庫(kù)中之后,通過(guò)Python語(yǔ)言可以直接將原始數(shù)據(jù)庫(kù)導(dǎo)入到CSV文件中,通過(guò)Python語(yǔ)言支持的“to-csv”方法將CSV格式文件指向內(nèi)存區(qū),之后根據(jù)數(shù)據(jù)多次處理的需求,可將數(shù)據(jù)庫(kù)中感興趣信息提取出來(lái),并將其轉(zhuǎn)變?yōu)閿?shù)據(jù)流形式(或者根據(jù)數(shù)據(jù)處理要求寫(xiě)入硬盤(pán)格式)。例如在模型數(shù)據(jù)源處理中,將產(chǎn)品ID、業(yè)務(wù)代碼、業(yè)務(wù)受理時(shí)間等數(shù)據(jù)整合在一起。此時(shí)在數(shù)據(jù)抽取過(guò)程中應(yīng)考慮以下幾方面問(wèn)題:
(1)所抽取的數(shù)據(jù)應(yīng)該可以適用于不同的業(yè)務(wù)場(chǎng)景,但是要避免盲目擴(kuò)大業(yè)務(wù)數(shù)據(jù)處理范疇;
(2)避免干擾業(yè)務(wù)系統(tǒng)正常運(yùn)行。因此為實(shí)現(xiàn)這一目標(biāo),則可以按照?qǐng)D1的技術(shù)7流程來(lái)抽取數(shù)據(jù)。
圖1:基于Python語(yǔ)言的數(shù)據(jù)抽取技術(shù)流程
數(shù)據(jù)清理的主要目的是對(duì)原始數(shù)據(jù)做第二次加工,在Python語(yǔ)言處理中需要清除與原始數(shù)據(jù)不一致的資料,最終提升數(shù)據(jù)庫(kù)的數(shù)據(jù)質(zhì)量。同時(shí)考慮到數(shù)據(jù)處理的基本要求,在Python語(yǔ)言處理中所有未竣工或者作廢的數(shù)據(jù)流程都應(yīng)該先消除,此時(shí)數(shù)據(jù)清理中可以通過(guò)以下過(guò)程做進(jìn)一步加工,包括識(shí)別數(shù)據(jù)庫(kù)的異常數(shù)據(jù)、填補(bǔ)數(shù)據(jù)中存在缺失數(shù)據(jù)、對(duì)數(shù)據(jù)做除噪處理等。
根據(jù)相關(guān)學(xué)者的研究可知,在數(shù)據(jù)處理中若任意一條業(yè)務(wù)數(shù)據(jù)流程缺失,那么在相關(guān)業(yè)務(wù)流程聚類(lèi)分析期間應(yīng)先忽略該記錄,并刪除數(shù)據(jù)庫(kù)中所有缺失屬性值的數(shù)據(jù)[1]。為了實(shí)現(xiàn)該目標(biāo),在本次研究中選擇在Python語(yǔ)言基礎(chǔ)上增設(shè)lambda函數(shù),根據(jù)函數(shù)演變過(guò)程檢查缺失值,此時(shí)在函數(shù)處理中發(fā)現(xiàn)數(shù)列中存在若干個(gè)缺失的屬性值來(lái)刪除無(wú)屬性的數(shù)據(jù)。
經(jīng)過(guò)數(shù)據(jù)清理之后,數(shù)據(jù)庫(kù)中不合格數(shù)據(jù)消失,之后即可將數(shù)據(jù)做進(jìn)一步加工,將其轉(zhuǎn)變?yōu)闈M足聚類(lèi)劃分方式的數(shù)據(jù)。例如在數(shù)據(jù)處理中可根據(jù)系統(tǒng)聚類(lèi)處理目標(biāo)來(lái)提取其中的特征值,例如在汽車(chē)的數(shù)據(jù)處理中,可以將汽車(chē)的品牌等信息等相關(guān)屬性做進(jìn)一步聚類(lèi),直至滿足數(shù)據(jù)挖掘的要求。
基于Python語(yǔ)言的數(shù)據(jù)挖掘通常采用分類(lèi)分析的方法,通過(guò)學(xué)習(xí)獲得的目標(biāo)函數(shù)將特定屬性集映射至預(yù)先設(shè)定的類(lèi)標(biāo)號(hào)中,根據(jù)數(shù)據(jù)庫(kù)的分析學(xué)習(xí)獲得分類(lèi)模型,根據(jù)葉貝斯網(wǎng)絡(luò)所提供的不確定性問(wèn)題處理能力,根據(jù)條件概率計(jì)算不同信息要素之間的關(guān)系,最終在有限的、不完整的信息中完成推理與學(xué)習(xí)[2]。
為滿足數(shù)據(jù)分析處理的功能要求,本文在Python語(yǔ)言的基礎(chǔ)上引入了scrapy爬蟲(chóng)技術(shù)(下文簡(jiǎn)稱爬蟲(chóng)技術(shù))通過(guò)兩個(gè)技術(shù)之間的結(jié)合可以顯著強(qiáng)化Python語(yǔ)言的數(shù)據(jù)處理能力,拓展數(shù)據(jù)的應(yīng)用范圍。
網(wǎng)絡(luò)爬蟲(chóng)技術(shù)是指通過(guò)設(shè)定好的規(guī)則,在網(wǎng)絡(luò)上完成信息數(shù)據(jù)抓取的程序或者腳本?,F(xiàn)階段Python語(yǔ)言技術(shù)不斷拓展,需要適應(yīng)海量來(lái)自Web網(wǎng)頁(yè)中的數(shù)據(jù)源,因此運(yùn)用網(wǎng)絡(luò)爬蟲(chóng)技術(shù)可以為數(shù)據(jù)分析處理提供數(shù)據(jù)集,保障了處理效果。為滿足Python語(yǔ)言的應(yīng)用要求,在本次網(wǎng)絡(luò)爬蟲(chóng)技術(shù)設(shè)計(jì)中對(duì)該技術(shù)作出新的界定,需要包含諸多功能,其對(duì)應(yīng)的框架資料如表1所示。
表1:網(wǎng)絡(luò)爬蟲(chóng)框架資料表
為滿足Python語(yǔ)言的數(shù)據(jù)處理要求,本文對(duì)網(wǎng)絡(luò)爬蟲(chóng)的爬行過(guò)程做出新的設(shè)計(jì),具體過(guò)程如下:
步驟1:配置“urls”后,界定網(wǎng)絡(luò)爬蟲(chóng)爬行過(guò)程中的初始目標(biāo),即可控制爬蟲(chóng)爬行。
步驟2:在引擎上設(shè)定初始爬取的地址目標(biāo),在系統(tǒng)操作過(guò)程中調(diào)整組件的網(wǎng)絡(luò)請(qǐng)求,并根據(jù)數(shù)據(jù)處理要求調(diào)度響應(yīng)過(guò)程。
步驟3:下載器模塊獲得請(qǐng)求信息后即可通過(guò)其他功能模塊向?qū)?yīng)的網(wǎng)絡(luò)地址請(qǐng)求數(shù)據(jù),此時(shí)所有響應(yīng)的對(duì)象都可以通過(guò)下載器組件發(fā)送給功能引擎。
步驟4:對(duì)下載的數(shù)據(jù)做數(shù)據(jù)體解析,獲得信息實(shí)體,將信息實(shí)體推送至對(duì)應(yīng)處理模塊進(jìn)一步加工;此時(shí)爬蟲(chóng)重復(fù)步驟1至步驟3的全部操作過(guò)程,直至無(wú)法挖掘數(shù)據(jù)即可。
步驟5:通過(guò)對(duì)數(shù)據(jù)的清洗、數(shù)據(jù)有效性驗(yàn)證以及數(shù)據(jù)持久化處理等方法,將識(shí)別的有用信息存入數(shù)據(jù)庫(kù)中用于下一階段處理。
步驟6:在持續(xù)循環(huán)上述過(guò)程,則產(chǎn)生響應(yīng)的數(shù)據(jù)均被成功解析,系統(tǒng)完成操作。
通過(guò)上述技術(shù)步驟過(guò)程,在Python語(yǔ)言數(shù)據(jù)分析處理中,工作人員可以通過(guò)網(wǎng)絡(luò)爬蟲(chóng)技術(shù)完成數(shù)據(jù)分析處理,數(shù)據(jù)處理效率更高,并且在經(jīng)過(guò)多次爬蟲(chóng)處理后,數(shù)據(jù)分析處理精準(zhǔn)度會(huì)明顯提升,這是傳統(tǒng)技術(shù)所難以實(shí)現(xiàn)的[3]。
同時(shí)在網(wǎng)絡(luò)爬蟲(chóng)爬行過(guò)程設(shè)計(jì)中,根據(jù)不同抓取目標(biāo)可以根據(jù)預(yù)處理數(shù)據(jù)的目標(biāo)特性來(lái)進(jìn)行編輯,此時(shí)的基本過(guò)程為:
(1)設(shè)定需要抓取的種子樣本流程;
(2)將給定的數(shù)據(jù)做分類(lèi),設(shè)定對(duì)應(yīng)的數(shù)據(jù)樣本結(jié)構(gòu);
(3)根據(jù)數(shù)據(jù)特性抓取目標(biāo)樣例,例如根據(jù)用戶日志挖掘關(guān)鍵數(shù)據(jù)資料等。
Python語(yǔ)言在數(shù)據(jù)處理中對(duì)數(shù)據(jù)庫(kù)提出了更高的要求,在本次研究中考慮到網(wǎng)絡(luò)爬蟲(chóng)爬行的要求,在構(gòu)建數(shù)據(jù)庫(kù)過(guò)程中應(yīng)考慮到不同數(shù)據(jù)庫(kù)的適用性。有學(xué)者研究指出,當(dāng)使用爬蟲(chóng)技術(shù)從網(wǎng)絡(luò)上獲取數(shù)據(jù)之后,受到網(wǎng)絡(luò)數(shù)據(jù)異構(gòu)性等因素影響,傳統(tǒng)數(shù)據(jù)庫(kù)無(wú)法存儲(chǔ)網(wǎng)絡(luò)上不同格式的數(shù)據(jù),所以可以選擇noSQL非關(guān)系型數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)數(shù)據(jù),這是因?yàn)榇祟?lèi)數(shù)據(jù)庫(kù)具有高可用性以及高可拓展性的特征,其數(shù)據(jù)模型結(jié)構(gòu)更加靈活多樣,并且數(shù)據(jù)讀寫(xiě)難度低,符合Python語(yǔ)言的數(shù)據(jù)處理要求[4]。
基于上述情況,本文使用pymongo數(shù)據(jù)庫(kù),該數(shù)據(jù)庫(kù)可以與本地以及遠(yuǎn)程服務(wù)器對(duì)接,當(dāng)網(wǎng)絡(luò)爬蟲(chóng)獲取數(shù)據(jù)之后,所有數(shù)據(jù)以文檔的形式直接存入到文檔中并導(dǎo)入數(shù)據(jù)庫(kù)。該數(shù)據(jù)庫(kù)的后續(xù)處理難度低。在后續(xù)的操作中也可以在數(shù)據(jù)庫(kù)中對(duì)數(shù)據(jù)資料做增刪改查等操作。同時(shí)值得關(guān)注的是,連接該數(shù)據(jù)庫(kù)的難度小,只需要幾行代碼即可滿足功能設(shè)定要求,這也是Python語(yǔ)言所帶來(lái)的便利。
為深入判斷本文所介紹方法的可行性,本文將基于某招聘信息網(wǎng)站,對(duì)基于Python語(yǔ)言的數(shù)據(jù)分析處理過(guò)程展開(kāi)深入分析。
在數(shù)據(jù)采集過(guò)程中,針對(duì)數(shù)據(jù)分析處理中需要面對(duì)多元化的冗余信息,在數(shù)據(jù)源數(shù)據(jù)篩選過(guò)程中,通過(guò)過(guò)濾其中的重復(fù)數(shù)據(jù)來(lái)提升數(shù)據(jù)處理效果。以公司的招聘信息為例,在相同的崗位上可能存在多個(gè)招聘數(shù)據(jù),但是招聘數(shù)據(jù)在時(shí)效性上存在一定差異,所以在數(shù)據(jù)采集中應(yīng)重點(diǎn)提取最新的招聘信息數(shù)據(jù)。同時(shí)在兼顧準(zhǔn)確性相關(guān)要求的基礎(chǔ)上,確保所采集的數(shù)據(jù)可以描述不同維度信息,這是提升數(shù)據(jù)質(zhì)量的關(guān)鍵點(diǎn)。
3.1.1 爬取信息采集的實(shí)現(xiàn)路徑
根據(jù)數(shù)據(jù)處理過(guò)程可以發(fā)現(xiàn),在招聘信息數(shù)據(jù)挖掘與分析中通過(guò)點(diǎn)擊“進(jìn)入詳情頁(yè)”可以查閱與崗位相關(guān)的信息,所以在數(shù)據(jù)爬取階段通過(guò)采集所有與招聘相關(guān)的信息資料后,打造出源數(shù)據(jù)集。
本次研究中數(shù)據(jù)采集的環(huán)境與工具的相關(guān)信息包括:windows 10運(yùn)行平臺(tái)、語(yǔ)言工具:Python 3.6.4語(yǔ)言、爬蟲(chóng)框架crapy。
在本次實(shí)例分析中發(fā)現(xiàn),在整個(gè)數(shù)據(jù)分析處理中較為關(guān)鍵的步驟,就是在網(wǎng)頁(yè)中設(shè)定元素分析節(jié)點(diǎn),這關(guān)乎數(shù)據(jù)分析處理的最終結(jié)果,該模塊應(yīng)該具有快速解讀“html”文件的功能,并且可以在dom結(jié)構(gòu)中快速定位目標(biāo)信息所對(duì)應(yīng)的dom節(jié)點(diǎn),并在短時(shí)間內(nèi)存取數(shù)據(jù)內(nèi)容。所以本文將借助元素選擇器Xpath來(lái)實(shí)現(xiàn)上述功能。該選擇器支持在爬取數(shù)據(jù)過(guò)程中,將解讀的樹(shù)狀結(jié)構(gòu)信息按照不同節(jié)點(diǎn)信息結(jié)構(gòu)進(jìn)行分類(lèi),即屬性節(jié)點(diǎn)、文本節(jié)點(diǎn)與元素節(jié)點(diǎn),這樣在數(shù)據(jù)處理中即可按照對(duì)應(yīng)的數(shù)據(jù)類(lèi)型快速查詢節(jié)點(diǎn)信息,并通過(guò)不同路徑將其對(duì)應(yīng)到對(duì)應(yīng)的頁(yè)面節(jié)點(diǎn)上,最后通過(guò)對(duì)數(shù)據(jù)進(jìn)行整理即可獲得需要的元數(shù)據(jù)資料。
通過(guò)審查頁(yè)面源碼信息獲得頁(yè)面dom結(jié)構(gòu)信息,此時(shí)在網(wǎng)絡(luò)爬蟲(chóng)數(shù)據(jù)挖掘中即可獲得本次數(shù)據(jù)分析處理的數(shù)據(jù)內(nèi)容,如招聘頁(yè)面的鏈接、招聘條目名稱以及詳情頁(yè)等資料。
在數(shù)據(jù)分析結(jié)束后,即可編寫(xiě)網(wǎng)絡(luò)爬蟲(chóng)項(xiàng)目對(duì)應(yīng)的spider模塊,具備的操作步驟流程為:
步驟1:選取需要進(jìn)行爬蟲(chóng)爬行的初始頁(yè)面,在“urls”屬性中填寫(xiě)頁(yè)面的url值。
步驟2:在確定后續(xù)自動(dòng)爬取的頁(yè)數(shù)之后,通過(guò)“_init_”方法將后續(xù)爬取的頁(yè)數(shù)添加至實(shí)例中。之后在后續(xù)的爬蟲(chóng)爬行過(guò)程中,可以按照實(shí)例中對(duì)應(yīng)的頁(yè)碼數(shù)來(lái)修改數(shù)值控制翻頁(yè)后網(wǎng)絡(luò)爬蟲(chóng)的爬行過(guò)程。
步驟3:將url請(qǐng)求后返回的數(shù)據(jù)進(jìn)行加工(采用parse方法),處理后可以獲得頁(yè)面鏈接等關(guān)鍵資料的解析結(jié)果,并且在保障有效鏈接的基礎(chǔ)上持續(xù)請(qǐng)求詳情頁(yè)數(shù)據(jù),可以按照指定callback指令返回?cái)?shù)據(jù)并回調(diào)控制函數(shù),這樣可以用于返回?cái)?shù)據(jù)的進(jìn)一步加工。
步驟4:在經(jīng)過(guò)回調(diào)函數(shù)處理后即可獲得網(wǎng)絡(luò)爬蟲(chóng)返回信息,通過(guò)在返回信息上的加工獲得對(duì)應(yīng)的“xpath”路徑信息,同時(shí)在返回值中提取關(guān)鍵數(shù)據(jù)信息。在經(jīng)過(guò)上述處理后即可將其綁定至對(duì)應(yīng)的屬性框架中,減少下一階段數(shù)據(jù)處理的操作難度。
步驟5:在獲取所有頁(yè)面信息之后,此時(shí)spider組件的工作流程完成,之后即可做數(shù)據(jù)格式重組以及錄入數(shù)據(jù)庫(kù)等系統(tǒng)操作。
3.1.2 數(shù)據(jù)格式設(shè)計(jì)與數(shù)據(jù)存儲(chǔ)
為滿足Python語(yǔ)言數(shù)據(jù)處理要求,所有數(shù)據(jù)都可以做格式轉(zhuǎn)換,再將其存儲(chǔ)至不同數(shù)據(jù)庫(kù)中,所以在本次設(shè)計(jì)中通過(guò)對(duì)上述數(shù)據(jù)整合,經(jīng)網(wǎng)絡(luò)爬蟲(chóng)挖掘后的數(shù)據(jù)直接上傳至數(shù)據(jù)庫(kù)中,此時(shí)編輯后的數(shù)據(jù)支持?jǐn)?shù)據(jù)挖掘以及轉(zhuǎn)存等操作要求。此時(shí)可以根據(jù)所挖掘數(shù)據(jù)的信息特征,可以將不同屬性信息以對(duì)應(yīng)的數(shù)據(jù)形式存入到數(shù)據(jù)庫(kù)中,以“招聘人數(shù)”為例,其對(duì)應(yīng)的json數(shù)據(jù)結(jié)構(gòu)為"person":"String"。
在確定數(shù)據(jù)結(jié)構(gòu)后即可連接數(shù)據(jù)庫(kù),此時(shí)通過(guò)在模塊中引入數(shù)據(jù)庫(kù)模式,通過(guò)在數(shù)據(jù)庫(kù)之間建立連接即可轉(zhuǎn)存。
在Python語(yǔ)言數(shù)據(jù)處理環(huán)節(jié),數(shù)據(jù)的預(yù)處理是其中的重點(diǎn)內(nèi)容,通過(guò)預(yù)處理可以將采集的數(shù)據(jù)轉(zhuǎn)變?yōu)榭梢宰R(shí)別的信息數(shù)據(jù)。
3.2.1 數(shù)據(jù)清洗
數(shù)據(jù)清洗的關(guān)鍵點(diǎn)包括:
(1)數(shù)據(jù)采集錯(cuò)誤。本環(huán)節(jié)的主要目的是對(duì)網(wǎng)絡(luò)爬蟲(chóng)挖掘的數(shù)據(jù)進(jìn)行分析,通過(guò)分析可以判斷所挖掘數(shù)據(jù)是否正確。在本次操作中,可按照每一條數(shù)據(jù)對(duì)應(yīng)的屬性值判斷其屬性,這個(gè)操作過(guò)程為:①控制“mongodb”導(dǎo)出數(shù)據(jù)后,所有數(shù)據(jù)的格式為“csv”;②利用功能軟件中將格式為“csv”數(shù)據(jù)做加工,載入數(shù)據(jù)值賦予變量data;③通過(guò)數(shù)據(jù)總數(shù)校驗(yàn)、數(shù)據(jù)列數(shù)校驗(yàn)等方法判斷所采集數(shù)據(jù)資料的準(zhǔn)確性。
上述數(shù)據(jù)采集錯(cuò)誤評(píng)估中共設(shè)有10項(xiàng)數(shù)據(jù)屬性,當(dāng)所有屬性顯示采集合格后,則證明未發(fā)生數(shù)據(jù)采集錯(cuò)誤的情況,可以做下一階段的數(shù)據(jù)處理。
(2)離群點(diǎn)檢測(cè)。開(kāi)展離群點(diǎn)檢測(cè)的主要目的,是清除嚴(yán)重偏離中心的數(shù)據(jù),在處理后有助于保障建模數(shù)據(jù)的穩(wěn)定性。例如在招聘信息數(shù)據(jù)分析處理中,可以針對(duì)招聘信息中的薪資進(jìn)行處理,所以離群點(diǎn)檢測(cè)的重點(diǎn),是通過(guò)檢測(cè)不同職位的薪資分布情況,并對(duì)離群點(diǎn)做進(jìn)一步加工,上述處理過(guò)程包括:①獲取視為類(lèi)別信息,期間可以根據(jù)“data”查詢不同數(shù)據(jù)列下的數(shù)據(jù)分布,此時(shí)考慮到每一職業(yè)的分析過(guò)程相同,只是對(duì)應(yīng)的薪酬存在差異,因此本文隨機(jī)以任意一個(gè)職位(以保潔員為例)進(jìn)行描述。②在確定需要分析的招聘信息職位為保潔員后,通過(guò)“value_counts”方法統(tǒng)計(jì)對(duì)應(yīng)的信息分布數(shù)據(jù),根據(jù)匯總結(jié)果發(fā)現(xiàn)整個(gè)網(wǎng)站中關(guān)于保潔員的招聘信息達(dá)到了852條,其中頻數(shù)為1的信息達(dá)到了37條,所占比例最小,無(wú)法體現(xiàn)數(shù)據(jù)集中存在的共享規(guī)律。因此系統(tǒng)可以認(rèn)定該數(shù)據(jù)存在離群特性,在后續(xù)處理中直接刪除即可。③重復(fù)上述過(guò)程,獲得離散特性最不明顯的數(shù)據(jù)后,隨著數(shù)據(jù)處理過(guò)程的深入,所剩下的數(shù)據(jù)更具有共性與代表性,直至完成離群點(diǎn)檢測(cè)。
(3)重復(fù)數(shù)據(jù)檢測(cè)。①檢查重復(fù)行數(shù)據(jù)。在本次數(shù)據(jù)處理中發(fā)現(xiàn),重復(fù)數(shù)據(jù)的出現(xiàn)會(huì)嚴(yán)重影響Python語(yǔ)言數(shù)據(jù)處理結(jié)果,所以在數(shù)據(jù)清理階段需要第一時(shí)間清除異常數(shù)據(jù)。為實(shí)現(xiàn)該目標(biāo),可利用duplicated方法檢測(cè)其中的重復(fù)數(shù)據(jù)內(nèi)容,通過(guò)遍歷生成檢測(cè)結(jié)果后,此時(shí)當(dāng)系統(tǒng)測(cè)試結(jié)果顯示為“True”時(shí),系統(tǒng)控制臺(tái)輸出提示信息。整個(gè)操作過(guò)程中,因?yàn)樵诰W(wǎng)絡(luò)爬蟲(chóng)挖掘期間產(chǎn)生重復(fù)請(qǐng)求數(shù)據(jù)的操作后,通過(guò)刪減重復(fù)的數(shù)據(jù)即可獲得唯一的數(shù)據(jù),組合成數(shù)據(jù)集后可以提升數(shù)據(jù)分析處理的精準(zhǔn)度。②檢查重復(fù)列信息。本次研究中所采集的數(shù)據(jù)中存在十條屬性列,通過(guò)對(duì)屬性列作逐一分析后即可發(fā)現(xiàn)其中有無(wú)重復(fù)描述的內(nèi)容,例如在招聘數(shù)據(jù)分析中,可以發(fā)現(xiàn)“招聘條目”與“招聘職業(yè)”之間存在著重復(fù)描述的情況,這樣上述兩種數(shù)據(jù)都無(wú)法做有效的數(shù)據(jù)分類(lèi),因此為保障數(shù)據(jù)處理精度,可以選擇直接刪除上述條目信息。
3.2.2 數(shù)據(jù)變換
根據(jù)采集的數(shù)據(jù)集信息可以發(fā)現(xiàn),所采集的數(shù)據(jù)值信息中呈現(xiàn)出多樣化的特征,這種現(xiàn)象會(huì)顯著增加數(shù)據(jù)分析處理的難度。所以為解決該問(wèn)題,可以利用Python語(yǔ)言,根據(jù)不同數(shù)據(jù)的屬性做出調(diào)整。以薪酬為例,在招聘信息上會(huì)將每月薪酬作為重點(diǎn)宣傳內(nèi)容,根據(jù)網(wǎng)絡(luò)爬蟲(chóng)所挖掘的信息可以發(fā)現(xiàn),薪酬屬性的區(qū)間值不同,有<5000、5000~8000、8000~10000等諸多區(qū)間,并且在上述區(qū)間中存在大量不同等級(jí)的薪資,這種離散值無(wú)法清除,會(huì)導(dǎo)致后續(xù)建模中會(huì)創(chuàng)建大量分類(lèi),最終增加了數(shù)據(jù)維度,影響效率。針對(duì)這一問(wèn)題,在本次數(shù)據(jù)處理中可將薪資范圍字符串轉(zhuǎn)變?yōu)橛行?shù)值信息,例如在上文介紹的“5000~8000”的收入崗位上,則可以取崗位的月薪的中間值為最終月薪制,再設(shè)定一定的增減幅度空間。在數(shù)值轉(zhuǎn)換結(jié)束后,對(duì)所有薪資做區(qū)間再劃分,而考慮到此階段的薪資數(shù)據(jù),可以將其重新劃分基礎(chǔ)條件,形成最終的月薪資料,并以薪資的平均值為中介線,再將其劃分為A、B兩個(gè)區(qū)間,在上述兩個(gè)區(qū)間中分別規(guī)劃五個(gè)等步長(zhǎng)區(qū)間。在經(jīng)過(guò)上述處理后,即可將薪資范圍劃分為十個(gè)區(qū)間單位,實(shí)現(xiàn)了對(duì)數(shù)據(jù)的進(jìn)一步加工與分級(jí)。
3.2.3 新增特征值的處理
新增特征值處理是在數(shù)據(jù)規(guī)約基礎(chǔ)上形成的一種可行手段,這是因?yàn)樵跀?shù)據(jù)處理中為了能夠更好地描述數(shù)據(jù)分類(lèi),則需要利用不同數(shù)據(jù)維度的方式來(lái)精準(zhǔn)定義數(shù)據(jù),但是傳統(tǒng)的數(shù)據(jù)種類(lèi)劃分難度高,有較高風(fēng)險(xiǎn)出現(xiàn)數(shù)據(jù)誤差,這種現(xiàn)象無(wú)法滿足數(shù)據(jù)處理的基本要求。所以尋找向數(shù)據(jù)中添加某些具有精準(zhǔn)性與代表性的新特征值,通過(guò)新的特征值對(duì)數(shù)據(jù)做深加工,這是保證數(shù)據(jù)處理效果的關(guān)鍵點(diǎn)。
本次基于Python語(yǔ)言的數(shù)據(jù)處理過(guò)程是在數(shù)據(jù)模型的基礎(chǔ)上完成的,為了可以更好地判斷數(shù)據(jù)信息內(nèi)容,可以在數(shù)據(jù)處理中增加新的評(píng)估項(xiàng)目,使分析結(jié)果更有代表性。例如在本次研究中主要分析招聘信息數(shù)據(jù)處理的問(wèn)題,所以在新增特征屬性時(shí)增加“招聘待遇”模塊,該屬性值主要以薪資待遇以及招聘職業(yè)等幾個(gè)維度進(jìn)行劃分的。上述新增特征值的處理過(guò)程可以描述為:
(1)篩選出position為職業(yè)的所有數(shù)據(jù);
(2)通過(guò)匯總篩選得出的數(shù)據(jù),總結(jié)數(shù)據(jù)變化背后的規(guī)律。
建模處理中使用決策樹(shù)分類(lèi)方法,該方法通過(guò)樹(shù)狀流程圖描述信息,在該結(jié)構(gòu)中,上層節(jié)點(diǎn)決定了下層節(jié)點(diǎn)的走向。
在決策樹(shù)中包含三種節(jié)點(diǎn),其中根節(jié)點(diǎn)代表無(wú)輸入的邊,但是存在若干條輸出邊,是決策的入手,可以根據(jù)根節(jié)點(diǎn)呈現(xiàn)出不同的路徑選擇與表達(dá)方式;內(nèi)部節(jié)點(diǎn)。可以按照數(shù)據(jù)的不同屬性對(duì)數(shù)據(jù)進(jìn)行深層次劃分,例如在招聘信息的數(shù)據(jù)處理中可以將“學(xué)歷”、“工作經(jīng)驗(yàn)”等作為內(nèi)部節(jié)點(diǎn),采用多條輸出邊做下一階段延伸。最后是葉節(jié)點(diǎn),只有一條輸入邊而沒(méi)有輸出邊,代表著數(shù)據(jù)處理中的最終分析結(jié)果。
在決策樹(shù)建模中,可以按照不同標(biāo)準(zhǔn)設(shè)定決策樹(shù)走向,如工作經(jīng)驗(yàn)小于等于3年時(shí),從決策中的右側(cè)內(nèi)部節(jié)點(diǎn)處;之后進(jìn)行學(xué)歷分類(lèi),例如求職者的學(xué)歷為大專(zhuān),則可以走向左側(cè)內(nèi)部節(jié)點(diǎn)處;之后決策樹(shù)顯示公司規(guī)模信息,根據(jù)小、中、大、特大等標(biāo)準(zhǔn)依次分類(lèi)。通過(guò)上述過(guò)程就完成了一次簡(jiǎn)單的數(shù)據(jù)分類(lèi)。同時(shí)在建模期間,按照決策樹(shù)方法可以采用“剪枝”等方法對(duì)模型內(nèi)部結(jié)構(gòu)做出調(diào)整,常見(jiàn)的剪枝方法主要分為:
(1)先剪枝方法。該方法是通過(guò)強(qiáng)行終止決策樹(shù)的演變過(guò)程達(dá)到控制剪枝的目的。一般在做先剪枝處理后所有末節(jié)點(diǎn)將改變?yōu)樽庸?jié)點(diǎn)。通過(guò)這種方法可以控制決策樹(shù)的高度,當(dāng)決策樹(shù)演變至該層次時(shí)即可停止。
(2)后剪枝。該方法是先構(gòu)建決策樹(shù)模型,當(dāng)決策樹(shù)構(gòu)建結(jié)束后對(duì)模型評(píng)估,并采用剪枝的方法清除其中置信度不足的節(jié)點(diǎn),或者用更高頻率的子節(jié)點(diǎn)替換等,提升信息模型的精準(zhǔn)度。
在建模處理過(guò)程中,采用sklearn可以降低建模難度,本次建模中主要通過(guò)訓(xùn)練集與測(cè)試集兩個(gè)維度入手來(lái)判斷其中的數(shù)據(jù)變化。根據(jù)現(xiàn)有的經(jīng)驗(yàn),在建模處理中如何實(shí)現(xiàn)構(gòu)建高質(zhì)量數(shù)據(jù)集是其中的關(guān)鍵點(diǎn),本文主要利用“split”函數(shù)劃分,具體的操作流程為:
from sklearn.tree import Decision Tree Classifier
from sklearn.cross_validation import train_test_split
處理的數(shù)據(jù)集以“#data”形式存在,在數(shù)據(jù)預(yù)處理后,剩余的數(shù)據(jù)總量明顯下降,通過(guò)剩余的數(shù)據(jù)即可分離測(cè)試集與訓(xùn)練集。設(shè)定“test_size”為0.2后,按照4:1的比重劃分訓(xùn)練集與測(cè)試集即可。
在建模后通過(guò)模型測(cè)試的方法判斷Python語(yǔ)言的數(shù)據(jù)處理結(jié)果,期間為保證測(cè)試結(jié)果的精準(zhǔn)性,本文引入混淆矩陣,混淆矩陣的生成方式為:
metrics.confusion_matrix(y_test,pre)
最終的測(cè)試結(jié)果顯示,模型數(shù)據(jù)處理的錯(cuò)誤率為2.15%,正確率97.85%,達(dá)到預(yù)期水平。
通過(guò)Python語(yǔ)言可以提升數(shù)據(jù)分析處理效果,作為一種簡(jiǎn)單、清晰的操作方法,該方法具有豐富的標(biāo)準(zhǔn)庫(kù)與第三方庫(kù),功能強(qiáng)大,可以最大限度上滿足數(shù)據(jù)分析的要求。在技術(shù)運(yùn)用中通過(guò)Python語(yǔ)言與網(wǎng)絡(luò)爬蟲(chóng)技術(shù)的整合可以優(yōu)化數(shù)據(jù)挖掘過(guò)程,借助該方法可以通過(guò)不間斷的數(shù)據(jù)處理與數(shù)據(jù)挖掘,完成不同類(lèi)型的數(shù)據(jù)歸類(lèi)處理,展現(xiàn)出了明顯的技術(shù)優(yōu)勢(shì),并且本文在該技術(shù)模擬測(cè)試中發(fā)現(xiàn),在利用Python語(yǔ)言構(gòu)建模型后,該模型的數(shù)據(jù)處理誤差率較低,準(zhǔn)確率高,充分滿足不同情況下的數(shù)據(jù)分析與處理需求,證明該技術(shù)科學(xué)有效,h值得推廣。