具体描述
內容介紹
基本信息
| 書名: | Python機器學習及實踐-從零開始通往Kaggle競賽之路 |
| 作者: | 範淼 | 開本: | |
| YJ: | 49 | 頁數: | |
| 現價: | 見1;CY =CY部 | 齣版時間 | 2016-10 |
| 書號: | 9787302442875 | 印刷時間: | |
| 齣版社: | 清華大學齣版社 | 版次: | |
| 商品類型: | 正版圖書 | 印次: | |
內容提要 作者簡介 範淼 :清華大學計算機係人工智能研究所博士,研究方嚮涉及機器學習與自然語言處理技術。2015年3月受國傢留學基金委公派至美國紐約大學計算機係聯閤培養。攻讀博士期間,於所在研究領域內多個重要GJ會議與期刊上發錶論文近20篇。先後在Hulu、MSRA(微軟亞洲研究院)、百度自然語言處理部、Bosch(博世)北美矽榖研究院等多個公司的研發部門實習,並承擔機器學習與自然語言處理相關的研究任務。
李超: 工學博士,清華大學副研究員,信息技術研究院Web 與軟件技術研究中心副主任。中國計算機學會信息存儲技術專委會WY、中國計算機學會GJ會員、全國文獻影像技術標準化技術WY會(SAC/TC86/SC6)WY、IEEE 會員。研究領域包括海量數據存儲、組織與管理、分析,及其在數字圖書館/檔案館/教育/醫療/金融等領域的應用。主持及參與多項國傢973、863、科技支撐、自然基金等縱嚮項目及橫嚮閤作項目。已發錶學術論文50 餘篇、獲得授權發明專利10 餘項。
精彩導讀 D3章 進階篇 在D2章中,我們嚮讀者介紹瞭大量經典的機器學習模型,並且使用Python編程語言分析這些模型在許多不同現實數據上的性能錶現。然而,細心的讀者在深入研究這些數據或者查閱Scikit-learn的文檔之後J會發現: 所有我們在D2章中使用過的數據幾乎都經過瞭規範化處理,而且模型也大多隻是采用瞭默認的初始化配置。換言之,盡管我們可以使用經過處理之後的數據,在默認配置下學習到一套用以擬閤這些數據的參數,並且使用這些參數和默認配置取得一些看似良好的性能錶現;但是我們仍然無法迴答幾個Z為關鍵的問題: 實際研究和工作中接觸到的數據都是這樣規整的嗎?難道這些默認配置J是ZJ的麼?我們的模型性能是否還有提升的空間?本章“3.1模型使用技巧”節將會幫助讀者朋友解答上述疑問。閱讀完這一節,相信各位讀者朋友J會掌握如何通過抽取或者篩選數據特徵、優化模型配置,進一步提升經典模型的性能錶現。 然而,隨著近些年機器學習研究與應用的快速發展,經典模型漸漸無法滿足日益增長的數據量和復雜的數據分析需求。因此,越來越多更加高效而且強力的學習模型以及對應的程序庫正逐漸被設計和編寫,並慢慢被科研圈和工業界所廣泛接受與采用。這些模型和程序庫包括: 用於自然語言處理的NLTK程序包;詞嚮量技術Word2Vec;能夠提供強大預測能力的XGBoost模型,以及Google發布的用於深度學習的Tensorflow框架等等。更加令人振奮的是,上述這些Z為流行的程序庫和模型, 不但提供瞭Python的編程接口API,而且有些成為Python編程語言的工具包,更是方便瞭我們後續的學習和使用。因此,在“3.2流行庫/模型實踐”節將會帶領各位讀者一同領略這些時下Z為流行的程序庫和新模型的奧妙。
3.1模型實用及技巧 這一節將嚮讀者朋友傳授一係列更加偏嚮於實戰的模型使用技巧。相信各位讀者在D2章中品味瞭多個經典的機器學習模型之後,J會發現: 一旦我們確定使用某個模型,本書所提供的程序庫J可以幫助我們從標準的訓練數據中,依靠默認的配置學習到模型所需要的參數(Parameters);接下來,我們便可以利用這組得來的參數指導模型在測試數據集上進行預測,進而對模型的錶現性能進行評價。 但是,這套方案並不能保證: (1) 所有用於訓練的數據特徵都是Z好的;(2) 學習得到的參數一定是Z優的;(3) 默認配置下的模型總是ZJ的。也J是說,我們可以從多個角度對在前麵所使用過的模型進行性能提升。本節將嚮大傢介紹多種提升模型性能的方式,包括如何預處理數據、控製參數訓練以及優化模型配置等方法。 3.1.1特徵提升 早期機器學習的研究與應用,受模型種類和運算能力的限製。因此,大部分研發人員把更多的精力放在對數據的預處理上。他們期望通過對數據特徵的抽取或者篩選來達到提升模型性能的目的。所謂特徵抽取,J是逐條將原始數據轉化為特徵嚮量的形式,這個過程同時涉及對數據特徵的量化錶示;而特徵篩選則更進一步,在高維度、已量化的特徵嚮量中選擇對指定任務更有效的特徵組閤,進一步提升模型性能。 3.1.1.1特徵抽取 原始數據的種類有很多種,除瞭數字化的信號數據(聲紋、圖像),還有大量符號化的文本。然而,我們無法直接將符號化的文字本身用於計算任務,而是需要通過某些處理手段,預先將文本量化為特徵嚮量。 有些用符號錶示的數據特徵已經相對結構化,並且以字典這種數據結構進行存儲。這時,我們使用DictVectorizer對特徵進行抽取和嚮量化。比如下麵的代碼55。
代碼55: DictVectorizer對使用字典存儲的數據進行特徵抽取與嚮量化 >>> # 定義一組字典列錶,用來錶示多個數據樣本(每個字典代錶一個數據樣本)。 >>>measurements= [{'city': 'Dubai', 'temperature': 33.}, {'city': 'London', 'temperature': 12.}, {'city': 'San Fransisco', 'temperature': 18.}] >>> # 從sklearn.feature_extraction 導入 DictVectorizer >>>from sklearn.feature_extraction import DictVectorizer >>> # 初始化DictVectorizer特徵抽取器 >>>vec=DictVectorizer() >>> # 輸齣轉化之後的特徵矩陣。 >>>print vec.fit_transform(measurements).toarray() >>> # 輸齣各個維度的特徵含義。 >>>print vec.get_feature_names()[[1. 0 0.33] [0. 1. 0.12.] [0. 0. 1.18.]] ['city=Dubai', 'city=London', 'city=San Fransisco', 'temperature']
從代碼55的輸齣可以看到: 在特徵嚮量化的過程中,DictVectorizer對於類彆型(Categorical)與數值型(Numerical)特徵的處理方式有很大差異。由於類彆型特徵無法直接數字化錶示,因此需要藉助原特徵的名稱,組閤産生新的特徵,並采用0/1二值方式進行量化;而數值型特徵的轉化則相對方便,一般情況下隻需要維持原始特徵值即可。 另外一些文本數據則錶現得更為原始,幾乎沒有使用特殊的數據結構進行存儲,隻是一係列字符串。我們處理這些數據,比較常用的文本特徵錶示方法為詞袋法(Bag of Words): 顧名思義,不考慮詞語齣現的順序,隻是將訓練文本中的每個齣現過的詞匯單D視作一列特徵。我們稱這些不重復的詞匯集閤為詞錶(Vocabulary),於是每條訓練文本都可以在高維度的詞錶上映射齣一個特徵嚮量。而特徵數值的常見計算方式有兩種,分彆是: CountVectorizer和TfidfVectorizer。對於每一條訓練文本,CountVectorizer隻考慮每種詞匯(Term)在該條訓練文本中齣現的頻率(Term Frequency)。而TfidfVectorizer除瞭考量某一詞匯在D前文本中齣現的頻率(Term Frequency)之外,同時關注包含這個詞匯的文本條數的倒數(Inverse Document Frequency)。相比之下,訓練文本的條目越多,TfidfVectorizer這種特徵量化方式J更有優勢。因為我們計算詞頻(Term Frequency)的目的在於找齣對所在文本的含義更有貢獻的重要詞匯。然而,如果一個詞匯幾乎在每篇文本中齣現,說明這是一個常用詞匯,反而不會幫助模型對文本的分類;在訓練文本量較多的時候,利用TfidfVectorizer壓製這些常用詞匯的對分類決策的乾擾,往往可以起到提升模型性能的作用。 我們通常稱這些在每條文本中都齣現的常用詞匯為停用詞(Stop Words),如英文中的the、a等。這些停用詞在文本特徵抽取中經常以黑名單的方式過濾掉,並且用來提高模型的性能錶現。下麵的代碼讓我們重新對“20類新聞文本分類”問題進行分析處理,這一次的重點在於列舉上述兩種文本特徵量化模型的使用方法,並比較他們的性能差異。 ……
目錄
●D1章簡介篇1
1.1機器學習綜述1
1.1.1任務3
1.1.2經驗5
1.1.3性能5
1.2Python編程庫8
1.2.1為什麼使用Python8
1.2.2Python機器學習的優勢9
1.2.3NumPy & SciPy10
1.2.4Matplotlib11
1.2.5Scikit�瞝earn11
1.2.6Pandas11
1.2.7Anaconda12
1.3Python環境配置12
1.3.1Windows係統環境12
1.3.2Mac OS 係統環境17
1.4Python編程基礎18
1.4.1Python基本語法19
1.4.2Python 數據類型20
1.4.3Python 數據運算22
1.4.4Python 流程控製26
1.4.5Python 函數(模塊)設計28
1.4.6Python 編程庫(包)的導入29
1.4.7Python 基礎綜閤實踐30
1.5章末小結33〖1〗Python機器學習及實踐〖1〗目錄●D2章基礎篇34
2.1監督學習經典模型34
2.1.1分類學習35
2.1.2迴歸預測64
2.2無監督學習經典模型81
2.2.1數據聚類81
2.2.2特徵降維91
2.3章末小結97
●D3章進階篇98
3.1模型實用技巧98
3.1.1特徵提升99
3.1.2模型正則化111
3.1.3模型檢驗121
3.1.4超參數搜索122
3.2流行庫/模型實踐129
3.2.1自然語言處理包(NLTK)131
3.2.2詞嚮量(Word2Vec)技術133
3.2.3XGBoost模型138
3.2.4Tensorflow框架140
3.3章末小結152
●D4章實戰篇153
4.1Kaggle平颱簡介153
4.2Titanic罹難乘客預測157
4.3IMDB影評得分估計165
4.4MNIST手寫體數字圖片識彆174
4.5章末小結180
●後記181
●參考文獻182
目錄
。。。。。。。。。。
《Python機器學習與數據科學實戰:探索數據驅動的智能世界》 內容概要 本書是一本麵嚮數據科學和機器學習初學者的綜閤性指南,旨在引導讀者從零開始,掌握Python語言在數據科學領域的應用,並逐步深入到機器學習的核心概念和實用技術。本書不局限於單一算法的講解,而是強調實際應用與理論的結閤,通過豐富的案例和實踐項目,幫助讀者構建解決實際問題的能力。 第一部分:Python數據科學基礎 本部分將為你打下堅實的數據科學基礎,讓你能夠熟練運用Python進行數據處理、分析和可視化。 Python語言入門與進階: 基礎語法迴顧與強化: 即使你對Python已有一定瞭解,我們也會快速迴顧關鍵概念,如變量、數據類型、運算符、控製流(條件語句、循環)、函數定義與調用等,並重點講解在數據科學中常用的高級特性,例如列錶推導式、生成器、裝飾器以及麵嚮對象編程的基本思想,確保你擁有編寫高效、可讀性強的Python代碼的能力。 數據結構精講: 深入剖析Python內置數據結構(列錶、元組、字典、集閤)的特性、常用方法以及在不同場景下的適用性。特彆強調列錶推導式和字典推導式在數據轉換中的強大之處,以及元組在不可變性上的優勢。 模塊與包管理: 詳細介紹Python的模塊化編程理念,如何導入和使用標準庫及第三方庫。重點講解pip的使用,包括安裝、卸載、升級庫,以及虛擬環境(如venv, conda)的創建與管理,這是保證項目依賴獨立性和可復現性的關鍵。 NumPy:科學計算的基石 N維數組對象(ndarray): 深入理解NumPy的核心——ndarray,包括其創建、索引、切片、重塑(reshape)、軸(axis)的概念以及廣播(broadcasting)機製。我們將演示如何高效地執行數學運算,避免顯式循環,從而顯著提升計算速度。 嚮量化操作: 重點講解NumPy的嚮量化操作,展示如何用簡潔的代碼實現對大量數據的批量處理,例如逐元素運算、邏輯運算、聚閤運算(sum, mean, std, max, min)等,並與傳統的Python循環進行性能對比,直觀感受嚮量化的優勢。 常用函數與統計: 介紹NumPy提供的豐富數學函數、綫性代數函數、隨機數生成器等,並演示如何利用NumPy進行基本的數據統計分析。 Pandas:數據處理與分析的利器 Series與DataFrame: 詳細講解Pandas的核心數據結構——Series(一維帶標簽數組)和DataFrame(二維帶標簽錶格),包括它們的創建、索引(iloc, loc)、數據類型(dtypes)以及內存占用。 數據加載與存儲: 學習如何從各種常見數據源(CSV, Excel, JSON, SQL數據庫)加載數據到DataFrame,以及如何將DataFrame保存到這些格式。重點介紹不同參數的配置,以應對各種復雜的數據文件。 數據清洗與預處理: 這是數據科學實踐中最耗時但至關重要的一環。本書將詳細介紹: 缺失值處理: 如何識彆、統計和處理缺失值(NaN),包括刪除(dropna)、填充(fillna)等策略,並討論不同填充方法的優劣。 重復值處理: 如何查找和刪除重復的行。 數據類型轉換: 如何將字符串、數字、日期等數據轉換為正確的數據類型,以方便後續分析。 異常值檢測與處理: 介紹使用統計方法(如Z-score, IQR)和可視化手段來識彆異常值,並討論如何選擇閤適的處理方式(刪除、替換、視為特殊值)。 數據閤並與連接: 學習使用`merge`, `join`, `concat`等函數將多個DataFrame進行靈活組閤,以構建完整的數據集。 數據分組與聚閤: 深入理解`groupby()`操作,實現對數據進行分組後進行各種聚閤計算(如求和、平均值、計數、最大/最小值),這是進行探索性數據分析(EDA)和特徵工程的關鍵。 數據透視錶與交叉錶: 掌握`pivot_table()`和`crosstab()`的使用,快速生成多維度的匯總統計報錶。 Matplotlib與Seaborn:數據可視化之道 Matplotlib基礎: 學習如何使用Matplotlib繪製各種基本圖錶,包括摺綫圖、散點圖、柱狀圖、餅圖、直方圖等。掌握圖錶的元素(標題、軸標簽、圖例、網格綫)的設置,以及如何調整圖錶的樣式和布局。 Seaborn高級繪圖: 介紹Seaborn,一個基於Matplotlib的更高級、更美觀的繪圖庫。學習使用Seaborn繪製更復雜的統計圖錶,如箱綫圖(boxplot)、小提琴圖(violinplot)、熱力圖(heatmap)、分布圖(distplot)、分類圖(countplot, catplot)等,它們能更直觀地展示數據分布、關係和模式。 探索性數據分析(EDA)可視化: 重點演示如何結閤NumPy、Pandas和可視化庫,通過多樣的圖錶來探索數據的特徵、分布、相關性、異常值等,為後續的建模打下基礎。 第二部分:機器學習核心理論與實踐 本部分將帶領你走進機器學習的世界,理解核心算法的原理,並學會如何將其應用於解決實際問題。 機器學習基礎概念: 監督學習、無監督學習與強化學習: 清晰界定這三大類機器學習的範疇、目標和典型應用場景。 特徵工程: 強調特徵工程的重要性,它是決定模型性能的關鍵。我們將講解: 特徵提取: 如何從原始數據中提取有用的特徵,例如文本數據的TF-IDF,圖像數據的SIFT/HOG等。 特徵創建: 如何組閤現有特徵或創建新特徵,例如多項式特徵、交互特徵。 特徵編碼: 如何處理類彆型特徵,包括獨熱編碼(One-Hot Encoding)、標簽編碼(Label Encoding)、目標編碼(Target Encoding)等。 特徵縮放: 為什麼要進行特徵縮放(標準化 Standardization, 歸一化 Normalization),以及常見的縮放方法。 特徵選擇: 如何從高維特徵空間中選擇最相關的特徵,以提高模型效率和泛化能力,介紹過濾法、包裹法和嵌入法。 模型評估與選擇: 講解評估模型性能的各種指標: 分類: 準確率(Accuracy)、精確率(Precision)、召迴率(Recall)、F1分數(F1-Score)、ROC麯綫與AUC值、混淆矩陣。 迴歸: 均方誤差(MSE)、均方根誤差(RMSE)、平均絕對誤差(MAE)、R²分數(R-squared)。 過擬閤與欠擬閤: 深入理解這兩個模型訓練中的常見問題,以及如何通過調整模型復雜度、正則化、交叉驗證等方法來解決。 交叉驗證: 詳細介紹K摺交叉驗證(K-Fold Cross-Validation),它是評估模型泛化能力、避免過擬閤的黃金標準。 經典監督學習算法解析與實現: 綫性迴歸(Linear Regression): 理論基礎: 最小二乘法原理,代價函數。 模型實現: 使用Scikit-learn實現綫性迴歸,並介紹其參數。 正則化: 講解L1(Lasso)和L2(Ridge)正則化如何防止過擬閤,以及它們的應用。 邏輯迴歸(Logistic Regression): 理論基礎: Sigmoid函數,概率建模,損失函數(交叉熵)。 模型實現: 使用Scikit-learn實現邏輯迴歸,理解其用於二分類和多分類。 決策樹(Decision Tree): 理論基礎: 節點劃分標準(信息增益,基尼不純度),剪枝。 模型實現: 使用Scikit-learn實現決策樹,並講解如何可視化樹結構。 支持嚮量機(Support Vector Machine - SVM): 理論基礎: 間隔最大化,核函數(綫性核,多項式核,徑嚮基核 RBF)。 模型實現: 使用Scikit-learn實現SVM,理解不同核函數的選擇。 K近鄰(K-Nearest Neighbors - KNN): 理論基礎: 距離度量(歐氏距離,曼哈頓距離),K值的選擇。 模型實現: 使用Scikit-learn實現KNN,並討論其優缺點。 集成學習(Ensemble Learning): 概念介紹: Bagging(裝袋)與Boosting(提升)的區彆與聯係。 隨機森林(Random Forest): Bagging的代錶,如何通過多棵決策樹的投票來提高模型魯棒性和準確性。 梯度提升(Gradient Boosting): Boosting的代錶,如AdaBoost, XGBoost, LightGBM。重點介紹XGBoost和LightGBM,它們是現代機器學習競賽中的利器,講解它們的模型原理、調參技巧和性能優化。 經典無監督學習算法解析與實踐: 聚類(Clustering): K-Means: 算法原理、初始化方法、收斂條件。 層次聚類(Hierarchical Clustering): 凝聚型與分裂型聚類。 DBSCAN: 基於密度的聚類算法,適用於發現任意形狀的簇。 聚類評估: 輪廓係數(Silhouette Coefficient)。 降維(Dimensionality Reduction): 主成分分析(Principal Component Analysis - PCA): 理論基礎,特徵提取,方差解釋。 t-SNE: 用於高維數據可視化。 第三部分:機器學習項目實戰與高級技巧 本部分將帶領讀者進行端到端項目實踐,並介紹一些在實際應用中非常重要的進階技巧。 一個完整的機器學習項目流程: 問題定義與數據理解: 如何清晰地定義問題,並進行深入的數據探索性分析。 數據預處理與特徵工程: 細緻講解如何根據數據特性進行特徵工程。 模型選擇與訓練: 如何根據問題類型選擇閤適的模型,並進行有效訓練。 模型評估與調優: 使用交叉驗證和網格搜索/隨機搜索進行超參數調優。 模型部署與解釋: (可選,根據內容範圍)簡要介紹模型部署的思路和模型解釋性工具。 文本數據處理與自然語言處理(NLP)基礎: 文本預處理: 分詞、去除停用詞、詞乾提取/詞形還原。 文本錶示: 詞袋模型(Bag-of-Words, BoW),TF-IDF。 文本分類示例: 使用樸素貝葉斯(Naive Bayes)或邏輯迴歸進行情感分析等。 模型調優與性能提升: 超參數調優: 網格搜索(Grid Search),隨機搜索(Random Search),貝葉斯優化。 模型集成: Stacking(堆疊),Voting(投票)。 機器學習中的實踐考量: 計算效率與內存優化: 如何處理大規模數據集,使用更高效的庫或方法。 可復現性: 版本控製(Git),依賴管理,隨機種子設置。 學習目標 通過本書的學習,你將能夠: 1. 精通Python數據科學核心庫: 熟練運用NumPy、Pandas進行高效的數據處理與分析。 2. 掌握數據可視化技能: 利用Matplotlib和Seaborn生成有洞察力的數據圖錶,輔助決策。 3. 理解機器學習基本原理: 深入掌握監督學習和無監督學習的核心算法。 4. 具備模型構建能力: 能夠獨立完成從數據預處理到模型訓練、評估、優化的完整機器學習流程。 5. 應用多種機器學習算法: 能夠根據實際問題選擇並應用綫性模型、樹模型、集成模型等。 6. 初步掌握文本數據處理: 瞭解基本的NLP技術。 7. 構建解決實際問題的能力: 通過豐富的案例和實踐,將理論知識轉化為解決現實世界數據問題的能力。 本書的目標是讓你不僅僅掌握算法,更能理解算法背後的原理,並學會如何在實際項目中靈活運用這些工具和技術,從而自信地開啓你的數據科學之旅。