Python數據預處理:機器學習、人工智能通用技術(1)


Python數據預處理:機器學習、人工智能通用技術

白寧超  2018年12月24日17:28:26 

摘要:大數據技術與我們日常生活越來越緊密,要做大數據,首要解決數據問題。原始數據存在大量不完整、不一致、有異常的數據,嚴重影響到數據建模的執行效率,甚至可能導致模型結果的偏差,因此要數據預處。數據預處理主要是將原始數據經過文本抽取、數據清理、數據集成、數據處理、數據變換、數據降維等處理后,不僅提高了數據質量,而且更好的提升算法模型性能。數據預處理在數據挖掘、自然語言處理、機器學習、深度學習算法中起着重要的作用。(本文原創,轉載必須注明出處.)

1 什么是數據預處理

數據預處理簡而言之就是將原始數據裝進一個預處理的黑匣子之后,產生出高質量數據用來適應相關技術或者算法模型。為了大家更明確的了解數據預處理,我們舉個新聞分類的例子:

  • 將原始的數據直接進行分類模型訓練,分類器准確率和召回率都比較低。因為我們原始數據存在很多干擾項,比如,等這些所謂停用詞特征對分類起的作用不大,很難達到工程應用。
  • 我們將原始數據放假預處理黑匣子后,會自動過濾掉干擾數據,並且還會按照規約的方法體現每個詞特征的重要性,然后將詞特征壓縮變換在數值型矩陣中,再通過分類器就會取得不錯的效果,可以進行工程應用。

總結:數據預處理前的數據存在不完整、偏態、噪聲、特征比重、特征維度、缺失值、錯誤值等問題;數據預處理后的數據存在完整、正態、干凈、特征比重合適、特征維度合理、無缺失值等優點。

數據預處理方法

  • 數據清理:通過填寫缺失的值、光滑噪聲數據、識別或刪除離群點並解決不一致性來清理數據。主要目標:格式標准化,異常數據清除,錯誤糾正,重復數據的清除。
  • 數據集成:將數據由多個數據源合並成一個一致的數據存儲,如數據倉庫。
  • 數據變換:通過平滑聚集,數據概化,規范化等方式將數據轉換成適用於的形式。如把數據壓縮到0.0-1.0區間。
  • 數據歸約:往往數據量非常大,在少量數據上進行挖掘分析需要很長的時間,數據歸約技術可以用來得到數據集的歸約表示,它小得多,但仍然接近於保持原數據的完整性,並結果與歸約前結果相同或幾乎相同。可以通過如聚集、刪除冗余特征或聚類來降低數據的規模。

2 為什么做這門課程

在初期學習階段,大家精力着重於算法模型和調參上。實際情況是,有時候在算法改進上花費很多功夫,卻不如在數據質量上的些許提高來的明顯。另外,習慣於數據語料的拿來主義之后,當面對新的任務時候,卻不知道如何下手?有的同學在處理英語時候游刃有余,面對中文數據預處理卻不知所措。基於以上幾個問題,結合作者工程經驗,整理出了‘數據預處理’學習資料,本教程主要面對文本信息處理,在圖片語音等數據語料處理上是有所區別的。

3 本課程能學到什么

  • 文本批量抽取:涉及技術點包括pywin32插件安裝使用、文檔文本提取、PDF文本提取、文本抽取器的封裝、方法參數的使用、遍歷文件夾、編碼問題、批量抽取文本信息。
  • 數據清洗:包括yield生成器、高效讀取文件、正則表達式的使用、清洗網頁數據、清洗字符串、中文的繁簡互相轉換、缺失值的處理、噪聲數據、異常數據清洗、批量清洗30萬條新聞數據。
  • 數據處理:包括結巴分詞精講、HanLP精講、停用詞的處理、NLTK的安裝使用、高頻詞和低頻詞的處理、詞性的選擇、特征數據的提取、批量預處理30萬條新聞數據。
  • 數據向量化:包括詞袋模型、詞集模型、詞向量的轉化、缺失值和數據均衡、語料庫技術、TFIDF、特征詞比重、主成分分析、主題模型等、批量進行30萬條數據向量化。
  • 可視化技術:包括條形圖、柱形圖、散點圖、餅圖、熱力圖等,還有matplotlib、seabom、Axes3D綜合使用進行三維可視化。
  • XGBoost競賽神器:包括監督學習、文本分類、XGBoost原理、XGBoost算法實現、XGBoost調參、算法性能評估、30萬條文檔生成詞典、30萬條文檔轉化TFIDF、30萬條文檔轉化生成LSI、訓練分類器模型、抽樣改進模型算法、特征維度改進模型算法、XGBoost實現30萬條新聞數據文本分類

綜上所述:數據預處理整體包括數據抽取-->數據清洗-->數據處理-->數據向量化-->可視化分析-->模型構建。在整個過程中,我們每個章節相關性很強,首先對整個章節最終實現效果進行演示,然后拆分知識點分別講解,最后將所有知識點整合起來做小節的實戰。每個小節實戰數據為下一個章節做鋪墊,最后,一個綜合實戰分類案例串聯所有知識點。

4 開發環境說明

  • 開發語言: Python3.5.3
  • 系統環境:window10操作系統
  • 編程環境:Sublime
  • 軟件環境:Anaconda4.4.0
  • 插件版本:均支持最新版本

sublime激活:打開Help >Enter LICENSE

----- BEGIN LICENSE -----
sgbteam
Single User License
EA7E-1153259
8891CBB9 F1513E4F 1A3405C1 A865D53F
115F202E 7B91AB2D 0D2A40ED 352B269B
76E84F0B CD69BFC7 59F2DFEF E267328F
215652A3 E88F9D8F 4C38E3BA 5B2DAAE4
969624E7 DC9CD4D5 717FB40C 1B9738CF
20B3C4F1 E917B5B3 87C38D9C ACCE7DD8
5F7EF854 86B9743C FADC04AA FB0DA5C0
F913BE58 42FEA319 F954EFDD AE881E0B
------ END LICENSE ------

解決Package Control報錯:Package Control.sublime-settings]修改方法:Preferences > Package Settings > Package Control > Settings - User 添加:

"channels":
    [
        "http://cst.stu.126.net/u/json/cms/channel_v3.json",
        //"https://packagecontrol.io/channel_v3.json",
        //"https://web.archive.org/web/20160103232808/https://packagecontrol.io/channel_v3.json",
        //"https://gist.githubusercontent.com/nick1m/660ed046a096dae0b0ab/raw/e6e9e23a0bb48b44537f61025fbc359f8d586eb4/channel_v3.json"
    ]

5 項目演示

5.1 原始數據

5.2 數據預覽

5.3 數據清洗

5.4 生成詞典

5.5 生成特征向量

5.6 生成LSI

 

5.7 XGBoost新聞數據文本分類


6 目錄列表

☆ 理論介紹
★ 實戰演練

第1章 課程介紹

  • 1-1 為什么做這門課--☆
  • 1-2 課程整體介紹與導學--☆☆
  • 1-3 學習建議--☆☆
  • 1-4 課程開發環境介紹--☆
  • 1-5 文本分類項目演示--☆
  • 1-6 源碼獲取說明--☆☆☆
  • 1-7 總結與擴展--☆

第2章 Python數據預處理之抽取文本信息

  • 2.1 數據類型與采集方法--☆☆☆
  • 2.2 一堆雜亂無章的數據--☆
  • 2.3 文本抽取問題(3種方法對比)--☆
  • 2.4 Pywin32實現格式轉換--☆☆
  • 2.3 Word轉換TXT算法--★
  • 2.6 PDF轉換TXT算法--★
  • 2.7 文本抽取工具--★★
  • 2.8 文本批量編碼--★
  • 2.9 遍歷讀取文件--★★★
  • 2.10 實戰案例1:遍歷文件批量抽取新聞文本內容--★★★
  • 2.11 總結與擴展--☆☆

第3章 Python數據預處理之清洗文本信息

  • 3.1 准備30萬條新聞數據--☆
  • 3.2 yield生成器--★
  • 3.3 高效讀取文件--★★
  • 3.4 數據缺失值--★★
  • 3.5 臟數據與噪聲數據--★★
  • 3.6 正則清洗數據--★★
  • 3.7 清洗HTML數據--★★
  • 3.8 簡繁字體轉換--★★
  • 3.9 實戰案例2:30萬條新聞文本數據清洗--★★★
  • 3.10 總結與擴展--☆☆

第4章 Python數據預處理之文本處理

  • 4.1 常見分詞工具--☆
  • 4.2 jieba分詞(推薦)--★★★
  • 4.3 HanLP分詞(擴展)--★★
  • 4.4 自定義去停詞--★★
  • 4.5 詞頻統計--★★
  • 4.6 自定義去高低詞頻--★★
  • 4.7 自定義規則提取特征詞--★★
  • 4.8 實戰案例3:6萬條新聞文本處理--★★★
  • 4.9 總結與擴展--☆☆

第5章 Python數據預處理之文本特征向量化

  • 5.1 解析數據文件--★★
  • 5.2 詞集模型--★★
  • 5.3 詞袋模型--★★
  • 5.4 特征詞轉文本向量--★★★
  • 5.5 不均衡數據歸一化處理--★★
  • 5.6 處理數據缺失值--★★
  • 5.7 實戰案例4:新聞文本特征向量化--★★★
  • 5.8 總結與擴展--☆☆

第6章 Python數據預處理之gensim文本向量化

  • 6.1 gensim介紹--☆☆
  • 6.2 gensim構建語料詞典--★
  • 6.3 gensim統計詞頻特征--★★
  • 6.4 gensim計算IF-IDF--★★
  • 6.5 潛在語義索引--★★★★
  • 6.6 生成主題模型--★★★★
  • 6.7 生成隨機映射--★★★★
  • 6.8 分層狄利克雷過程--★★★★
  • 6.9 實戰案例6:gensim實現新聞文本特征向量化--★★★★
  • 6.10 總結與擴展--☆☆☆

第7章 Python數據預處理之特征降維

  • 7.1 什么是降維--☆☆
  • 7.2 PCA 概述--☆☆☆
  • 7.3 PCA 應用場景--☆☆
  • 7.4 PCA 算法原理--★★★
  • 7.5 PCA 算法實現--★★★
  • 7.6 高維數據向低緯數據映射--★★
  • 7.7 前N個主成分特征--★★
  • 7.8 實戰案例5:PCA技術實現新聞文本特征降維--★★★★
  • 7.9 總結與擴展--☆☆

第8章 數據可視化分析

  • 8.1 matplotlib介紹--☆
  • 8.2 matplotlib繪制折線圖--★★
  • 8.3 matplotlib繪制散點圖--★★
  • 8.4 matplotlib繪制直方圖--★★
  • 8.5 matplotlib繪制氣溫圖表--★★
  • 8.6 matplotlib繪制三維圖--★★★
  • 8.7 總結與擴展--☆

第9章 XGBoost實現30萬條新聞數據文本分類

  • 9.1 有監督學習--☆☆☆
  • 9.2 文本分類方法--☆☆☆
  • 9.3 XGBoost 原理--★★★★
  • 9.4 XGBoost 算法實現--★★★★
  • 9.5 准確率與召回率--☆
  • 9.6 F度量值--☆
  • 9.7 30萬條文檔生成詞典--★★★
  • 9.8 30萬條文檔轉化TFIDF--★★★
  • 9.9 30萬條文檔轉化生成LSI--★★★★
  • 9.10 訓練分類器模型--★★★★
  • 9.11 測試分類器模型--★★
  • 9.12 抽樣改進模型算法--★★
  • 9.13 特征維度改進模型算法--★★
  • 9.14 訓練集和測試集比率改進模型算法--★★
  • 9.15 綜合實戰:XGBoost實現30萬條新聞數據文本分類--★★★★★
  • 9.11 總結與擴展--★★

7 源碼獲取

源碼請進【機器學習和自然語言QQ群:436303759】文件下載:自然語言處理和機器學習技術QQ交流

 



 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM