❶ 機器學習實戰的作品目錄
目錄第一部分分類第1章機器學習基礎21.1 何謂機器學習31.1.1 感測器和海量數據41.1.2 機器學習非常重要51.2 關鍵術語51.3 機器學習的主要任務71.4 如何選擇合適的演算法81.5 開發機器學習應用程序的步驟91.6 python語言的優勢101.6.1 可執行偽代碼101.6.2 Python比較流行101.6.3 Python語言的特色111.6.4 Python語言的缺點111.7 NumPy函數庫基礎121.8 本章小結13第2章k-近鄰演算法 152.1 k-近鄰演算法概述152.1.1 准備:使用Python導入數據172.1.2 從文本文件中解析數據192.1.3 如何測試分類器202.2 示例:使用k-近鄰演算法改進約會網站的配對效果202.2.1 准備數據:從文本文件中解析數據212.2.2 分析數據:使用Matplotlib創建散點圖232.2.3 准備數據:歸一化數值252.2.4 測試演算法:作為完整程序驗證分類器262.2.5 使用演算法:構建完整可用系統272.3 示例:手寫識別系統282.3.1 准備數據:將圖像轉換為測試向量292.3.2 測試演算法:使用k-近鄰演算法識別手寫數字302.4 本章小結31第3章決策樹 323.1 決策樹的構造333.1.1 信息增益353.1.2 劃分數據集373.1.3 遞歸構建決策樹393.2 在Python中使用Matplotlib註解繪制樹形圖423.2.1 Matplotlib註解433.2.2 構造註解樹443.3 測試和存儲分類器483.3.1 測試演算法:使用決策樹執行分類493.3.2 使用演算法:決策樹的存儲503.4 示例:使用決策樹預測隱形眼鏡類型503.5 本章小結52第4章基於概率論的分類方法:樸素貝葉斯 534.1 基於貝葉斯決策理論的分類方法534.2 條件概率554.3 使用條件概率來分類564.4 使用樸素貝葉斯進行文檔分類574.5 使用Python進行文本分類584.5.1 准備數據:從文本中構建詞向量584.5.2 訓練演算法:從詞向量計算概率604.5.3 測試演算法:根據現實情況修改分類器624.5.4 准備數據:文檔詞袋模型644.6 示例:使用樸素貝葉斯過濾垃圾郵件644.6.1 准備數據:切分文本654.6.2 測試演算法:使用樸素貝葉斯進行交叉驗證664.7 示例:使用樸素貝葉斯分類器從個人廣告中獲取區域傾向684.7.1 收集數據:導入RSS源684.7.2 分析數據:顯示地域相關的用詞714.8 本章小結72第5章Logistic回歸 735.1 基於Logistic回歸和Sigmoid函數的分類745.2 基於最優化方法的最佳回歸系數確定755.2.1 梯度上升法755.2.2 訓練演算法:使用梯度上升找到最佳參數775.2.3 分析數據:畫出決策邊界795.2.4 訓練演算法:隨機梯度上升805.3 示例:從疝氣病症預測病馬的死亡率855.3.1 准備數據:處理數據中的缺失值855.3.2 測試演算法:用Logistic回歸進行分類865.4 本章小結88第6章支持向量機896.1 基於最大間隔分隔數據896.2 尋找最大間隔916.2.1 分類器求解的優化問題926.2.2 SVM應用的一般框架936.3 SMO高效優化演算法946.3.1 Platt的SMO演算法946.3.2 應用簡化版SMO演算法處理小規模數據集946.4 利用完整Platt SMO演算法加速優化996.5 在復雜數據上應用核函數1056.5.1 利用核函數將數據映射到高維空間1066.5.2 徑向基核函數1066.5.3 在測試中使用核函數1086.6 示例:手寫識別問題回顧1116.7 本章小結113第7章利用AdaBoost元演算法提高分類性能 1157.1 基於數據集多重抽樣的分類器1157.1.1 bagging:基於數據隨機重抽樣的分類器構建方法1167.1.2 boosting1167.2 訓練演算法:基於錯誤提升分類器的性能1177.3 基於單層決策樹構建弱分類器1187.4 完整AdaBoost演算法的實現1227.5 測試演算法:基於AdaBoost的分類1247.6 示例:在一個難數據集上應用AdaBoost1257.7 非均衡分類問題1277.7.1 其他分類性能度量指標:正確率、召回率及ROC曲線1287.7.2 基於代價函數的分類器決策控制1317.7.3 處理非均衡問題的數據抽樣方法1327.8 本章小結132第二部分利用回歸預測數值型數據第8章預測數值型數據:回歸 1368.1 用線性回歸找到最佳擬合直線1368.2 局部加權線性回歸1418.3 示例:預測鮑魚的年齡1458.4 縮減系數來「理解」數據1468.4.1 嶺回歸1468.4.2 lasso1488.4.3 前向逐步回歸1498.5 權衡偏差與方差1528.6 示例:預測樂高玩具套裝的價格1538.6.1 收集數據:使用Google購物的API1538.6.2 訓練演算法:建立模型1558.7 本章小結158第9章樹回歸1599.1 復雜數據的局部性建模1599.2 連續和離散型特徵的樹的構建1609.3 將CART演算法用於回歸1639.3.1 構建樹1639.3.2 運行代碼1659.4 樹剪枝1679.4.1 預剪枝1679.4.2 後剪枝1689.5 模型樹1709.6 示例:樹回歸與標准回歸的比較1739.7 使用Python的Tkinter庫創建GUI1769.7.1 用Tkinter創建GUI1779.7.2 集成Matplotlib和Tkinter1799.8 本章小結182第三部分無監督學習第10章利用K-均值聚類演算法對未標注數據分組18410.1 K-均值聚類演算法18510.2 使用後處理來提高聚類性能18910.3 二分K-均值演算法19010.4 示例:對地圖上的點進行聚類19310.4.1 Yahoo! PlaceFinder API19410.4.2 對地理坐標進行聚類19610.5 本章小結198第11章使用Apriori演算法進行關聯分析20011.1 關聯分析20111.2 Apriori原理20211.3 使用Apriori演算法來發現頻繁集20411.3.1 生成候選項集20411.3.2 組織完整的Apriori演算法20711.4 從頻繁項集中挖掘關聯規則20911.5 示例:發現國會投票中的模式21211.5.1 收集數據:構建美國國會投票記錄的事務數據集21311.5.2 測試演算法:基於美國國會投票記錄挖掘關聯規則21911.6 示例:發現毒蘑菇的相似特徵22011.7 本章小結221第12章使用FP-growth演算法來高效發現頻繁項集22312.1 FP樹:用於編碼數據集的有效方式22412.2 構建FP樹22512.2.1 創建FP樹的數據結構22612.2.2 構建FP樹22712.3 從一棵FP樹中挖掘頻繁項集23112.3.1 抽取條件模式基23112.3.2 創建條件FP樹23212.4 示例:在Twitter源中發現一些共現詞23512.5 示例:從新聞網站點擊流中挖掘23812.6 本章小結239第四部分其他工具第13章利用PCA來簡化數據24213.1 降維技術24213.2 PCA24313.2.1 移動坐標軸24313.2.2 在NumPy中實現PCA24613.3 示例:利用PCA對半導體製造數據降維24813.4 本章小結251第14章利用SVD簡化數據25214.1 SVD的應用25214.1.1 隱性語義索引25314.1.2 推薦系統25314.2 矩陣分解25414.3 利用Python實現SVD25514.4 基於協同過濾的推薦引擎25714.4.1 相似度計算25714.4.2 基於物品的相似度還是基於用戶的相似度?26014.4.3 推薦引擎的評價26014.5 示例:餐館菜餚推薦引擎26014.5.1 推薦未嘗過的菜餚26114.5.2 利用SVD提高推薦的效果26314.5.3 構建推薦引擎面臨的挑戰26514.6 基於SVD的圖像壓縮26614.7 本章小結268第15章大數據與MapRece27015.1 MapRece:分布式計算的框架27115.2 Hadoop流27315.2.1 分布式計算均值和方差的mapper27315.2.2 分布式計算均值和方差的recer27415.3 在Amazon網路服務上運行Hadoop程序27515.3.1 AWS上的可用服務27615.3.2 開啟Amazon網路服務之旅27615.3.3 在EMR上運行Hadoop作業27815.4 MapRece上的機器學習28215.5 在Python中使用mrjob來自動化MapRece28315.5.1 mrjob與EMR的無縫集成28315.5.2 mrjob的一個MapRece腳本剖析28415.6 示例:分布式SVM的Pegasos演算法28615.6.1 Pegasos演算法28715.6.2 訓練演算法:用mrjob實現MapRece版本的SVM28815.7 你真的需要MapRece嗎?29215.8 本章小結292附錄A Python入門294附錄B 線性代數303附錄C 概率論復習309附錄D 資源312索引313版權聲明316
❷ 我用了100行Python代碼,實現了與女神尬聊微信(附代碼)
朋友圈很多人都想學python,有一個很重要的原因是它非常適合入門。對於 人工智慧演算法 的開發,python有其他編程語言所沒有的獨特優勢, 代碼量少 ,開發者只需把精力集中在演算法研究上面。
本文介紹一個用python開發的,自動與美女尬聊的小軟體。以下都是滿滿的干貨,是我工作之餘時寫的,經過不斷優化,現在分享給大家。那現在就讓我們抓緊時間開始吧!
准備:
編程工具IDE:pycharm
python版本: 3.6.0
首先新建一個py文件,命名為:ai_chat.py
PS: 以下五步的代碼直接復制到單個py文件裡面就可以直接運行。為了讓讀者方便寫代碼,我把代碼都貼出來了,但是排版存在問題,我又把在pycharm的代碼排版給截圖出來。
第一步: 引入關鍵包
簡單介紹一下上面幾個包的作用: pickle 包 是用來對數據序列化存文件、反序列化讀取文件,是人類不可讀的,但是計算機去讀取時速度超快。(就是用記事本打開是亂碼)。 而 json包 是一種文本序列化,是人類可讀的,方便你對其進行修改(記事本打開,可以看到裡面所有內容,而且都認識。) gensim 包 是自然語言處理的其中一個python包,簡單容易使用,是入門NLP演算法必用的一個python包。 jieba包 是用來分詞,對於演算法大咖來說效果一般般,但是它的速度非常快,適合入門使用。
以上這些包,不是關鍵,學習的時候,可以先跳過。等理解整個程序流程後,可以一個一個包有針對性地去看文檔。
第二步:靜態配置
這里path指的是對話語料(訓練數據)存放的位置,model_path是模型存儲的路徑。
這里是個人編程的習慣,我習慣把一些配置,例如:文件路徑、模型存放路徑、模型參數統一放在一個類中。當然,實際項目開發的時候,是用config 文件存放,不會直接寫在代碼里,這里為了演示方便,就寫在一起,也方便運行。
第三步: 編寫一個類,實現導數據、模型訓練、對話預測一體化
首次運行的時候,會從靜態配置中讀取訓練數據的路徑,讀取數據,進行訓練,並把訓練好的模型存儲到指定的模型路徑。後續運行,是直接導入模型,就不用再次訓練了。
對於model類,我們一個一個來介紹。
initialize() 函數和 __init__() 函數 是對象初始化和實例化,其中包括基本參數的賦值、模型的導入、模型的訓練、模型的保存、最後返回用戶一個對象。
__train_model() 函數,對問題進行分詞,使用 gesim 實現詞袋模型,統計每個特徵的 tf-idf , 建立稀疏矩陣,進而建立索引。
__save_model() 函數 和 __load_model() 函數 是成對出現的,很多項目都會有這兩個函數,用於保存模型和導入模型。不同的是,本項目用的是文件存儲的方式,實際上線用的是資料庫
get_answer() 函數使用訓練好的模型,對問題進行分析,最終把預測的回答內容反饋給用戶。
第四步:寫三個工具類型的函數,作為讀寫文件。
其中,獲取對話材料,可以自主修改對話內容,作為機器的訓練的數據。我這里只是給了幾個簡單的對話語料,實際上線的項目,需要大量的語料來訓練,這樣對話內容才飽滿。
這三個工具函數,相對比較簡單一些。其中 get_data() 函數,裡面的數據是我自己編的,大家可以根據自己的習慣,添加自己的對話數據,這樣最終訓練的模型,對話方式會更貼近自己的說話方式。
第五步: 調用模型,進行對話預測
主函數main(), 就是你整個程序運行的起點,它控制著所有步驟。
運行結果:
程序後台運行結果:
如果有疑問想獲取源碼( 其實代碼都在上面 ),可以後台私信我,回復:python智能對話。 我把源碼發你。最後,感謝大家的閱讀,祝大家工作生活愉快!
❸ vscode Python環境調試輸出很多沒用的東西,怎麼把這些東西去掉,如圖
我的解決方案:用瀏覽器打開 txt文本,復制。在vscode或者任意編輯器下新建文件,粘貼保存即可。
下面是對txt文本的預處理,將全部文本分為120章節,保存為csv文件,代碼如下:
簡單解釋: 首先讀取全部文本,用正則表達式reg匹配章節,切分章節回, 去除內容小於200字的章節,最後為120章節,保存為csv文件。 提示:在spilt過程中,章節內容中也會出現匹配情況,全本搜索找到內容中的相關匹配項,刪除即可。
首先是讀取csv文件。 下面使用python的第三方庫jieba分詞, 基於tf-idf演算法進行關鍵字提取。
tf-id:阮一峰
對該演算法的理解可以參考上述博客,大概有3篇文章, 簡單易懂。
簡單解釋: 第3行:使用演算法對每個章節中最關鍵的1000個詞進行關鍵詞提取。 第4行:由於後續處理詞向量的格式時空格加關鍵詞, 所以進行簡單轉換。
輸出如下:
下面使用sklearn中的CountVectorizer對上述提取的關鍵詞生成詞向量。
python代碼實現可以參考我之前寫的博客 機器學習之貝葉斯分類
其中簡單介紹了如何構建詞集或者詞袋模型,生成詞向量。
代碼如下:
簡單解釋: 首先生成5000個特徵的vertorizer, 對vorc進行訓練轉換, 得到120個詞向量。
接著轉為array形式,進行聚類。
這里做個假設:假定紅樓夢前後不是一個人所寫,那麼用詞方面也會有區別。通過聚類演算法,如果得到的結果有明顯的界限, 那麼可以進行初步判斷。下面是我的可視化過程: 代碼如下:
簡單解釋:首先使用kmeans聚類演算法,k=2分為兩類,列印其類別。基於先前的假設,後四十回為高鶚縮寫,因此在80回有明顯的區分。 下面看結果:
可以做自己的判斷。