Scikit-Learn中的特徵排名與遞歸特徵消除

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"italic"},{"type":"color","attrs":{"color":"#FF7021","name":"orange"}},{"type":"strong"}],"text":"全文2K字,建議閱讀時間5分鐘​。"}]},{"type":"horizontalrule"},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"italic"},{"type":"color","attrs":{"color":"#9254DE","name":"purple"}},{"type":"strong"}],"text":"由於我本人最近正在做特徵工程方面的工作,以特徵選擇和特徵降維爲主,所以本篇文章爲同學們講解sklearn庫中常用的特徵選擇方法。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"italic"},{"type":"strong"}],"text":"本文介紹如何使用scikit-learn爲您的機器學習項目獲取最佳數量的特徵。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/58/58320fbaa888661702a61cd0312a042d.jpeg","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"對於任何機器學習應用程序而言,"},{"type":"link","attrs":{"href":"https://heartbeat.fritz.ai/search?q=feature%20selection","title":null},"content":[{"type":"text","text":"特徵選擇"}]},{"type":"text","text":"都是一項重要任務。當所討論的數據具有許多功能時,這尤其重要。最佳數量的特徵還可以提高模型的準確性。獲得最重要的特徵和最佳特徵的數量可以通過特徵重要性或特徵等級來獲得。在本文中,我們將探討功能排名。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"horizontalrule"},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"遞歸特徵消除"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"消除遞歸特徵所需的第一項是估計器。例如,線性模型或決策樹模型。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這些模型具有線性模型的係數,並且在決策樹模型中具有重要的功能。在選擇最佳數量的特徵時,訓練估計器,並通過係數或特徵重要性選擇特徵。最不重要的功能已刪除。遞歸地重複此過程,直到獲得最佳數量的特徵。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"在Sklearn中的應用"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Scikit-learn使通過類實現遞歸特徵消除成爲可能。該類具有以下參數:"},{"type":"codeinline","content":[{"type":"text","text":"sklearn.feature_selection.RFE"}],"marks":[{"type":"strong"}]}]},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"codeinline","content":[{"type":"text","text":"estimator"}]},{"type":"text","text":" —可以通過"},{"type":"codeinline","content":[{"type":"text","text":"coef_"}]},{"type":"text","text":" 或 "},{"type":"codeinline","content":[{"type":"text","text":"feature_importances_"}]},{"type":"text","text":" 屬性提供功能重要性的機器學習估計器 。"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"codeinline","content":[{"type":"text","text":"n_features_to_select"}]},{"type":"text","text":" —要選擇的功能數量。選擇 "},{"type":"codeinline","content":[{"type":"text","text":"half"}]},{"type":"text","text":" 是否未指定。"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"codeinline","content":[{"type":"text","text":"step"}]},{"type":"text","text":" —一個整數,指示每次迭代要刪除的特徵的數量,或者一個介於0和1之間的數字以指示每次迭代要刪除的特徵的百分比。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"擬合後,可以獲得以下屬性:"}]},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"codeinline","content":[{"type":"text","text":"ranking_"}]},{"type":"text","text":" —功能的排名。"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"codeinline","content":[{"type":"text","text":"n_features_"}]},{"type":"text","text":" —已選擇的功能數。"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"codeinline","content":[{"type":"text","text":"support_"}]},{"type":"text","text":" —一個數組,指示是否選擇了功能。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"應用"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如前所述,我們需要使用提供"},{"type":"codeinline","content":[{"type":"text","text":"feature_importance_s"}]},{"type":"text","text":" 屬性或 "},{"type":"codeinline","content":[{"type":"text","text":"coeff_"}]},{"type":"text","text":" 屬性的估計器 。讓我們來看一個簡單的例子。數據集具有13個要素-我們將努力獲得最佳數量的要素。"}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/31/315be3303878920730ccb32112d85de2.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/3e/3ee1baa9106818949cc5eb27f5709356.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"讓我們獲得 "},{"type":"codeinline","content":[{"type":"text","text":"X"}]},{"type":"text","text":" 和 "},{"type":"codeinline","content":[{"type":"text","text":"y"}]},{"type":"text","text":" 特徵。"}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/41/41336e5270ed17602d8754c178b0e10d.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們將其分爲測試和訓練集以準備建模:"}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/a9/a90cb04a70596aafa7365d613003a350.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"幾個導入:"}]},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"codeinline","content":[{"type":"text","text":"Pipeline"}]},{"type":"text","text":" —因爲我們將執行一些交叉驗證。最佳實踐是爲了避免數據泄漏。"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"codeinline","content":[{"type":"text","text":"RepeatedStratifiedKFold"}]},{"type":"text","text":" —用於重複分層交叉驗證。"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"codeinline","content":[{"type":"text","text":"cross_val_score"}]},{"type":"text","text":" —用於評估交叉驗證的分數。"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"codeinline","content":[{"type":"text","text":"GradientBoostingClassifier"}]},{"type":"text","text":" —我們將使用的估算器。"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"codeinline","content":[{"type":"text","text":"numpy"}]},{"type":"text","text":" -這樣我們就可以計算分數的平均值。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/0d/0d9b9d37f8a23588b733101f4e81a3e6.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"第一步是創建"},{"type":"codeinline","content":[{"type":"text","text":"RFE"}]},{"type":"text","text":" 類的實例, 同時指定估算器和您要選擇的特徵數量。在這種情況下,我們選擇6:"}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/86/86c11f7b64b969936827bff8ed557d7f.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"接下來,我們創建要使用的模型的實例:"}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/ad/ada3545e473f5acf19f325ffbe115cb6.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們將使用 "},{"type":"codeinline","content":[{"type":"text","text":"Pipeline"}]},{"type":"text","text":" 轉換數據。在中, "},{"type":"codeinline","content":[{"type":"text","text":"Pipeline"}]},{"type":"text","text":" 我們指定 "},{"type":"codeinline","content":[{"type":"text","text":"rfe"}]},{"type":"text","text":" 了特徵選擇步驟以及將在下一步中使用的模型。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"然後,我們指定 "},{"type":"codeinline","content":[{"type":"text","text":"RepeatedStratifiedKFold"}]},{"type":"text","text":" 10個拆分和5個重複的。分層的K折確保在每個折中每個類別的樣本數量均衡。"},{"type":"codeinline","content":[{"type":"text","text":"RepeatedStratifiedKFold"}]},{"type":"text","text":"重複分層K倍指定次數,每次重複具有不同的隨機性。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/f7/f7efdd02aaef8d41e7c6aabd3630c4d5.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/dd/ddbb1a2fa253ba202ca730776145cdb0.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"有了這些,我們可以檢查支持和排名。支持說明是否選擇了特徵。"}]},{"type":"codeblock","attrs":{"lang":null},"content":[{"type":"text","text":"rfe.support_array([ True, False, True, False, True, False, False, True, False,True, False, True, True])"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們可以將其放入數據框並檢查結果。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/43/43033346ea06947cb2b6fbfac15f6944.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/88/887ff5f2791ea965fe7d037529d6abd6.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們還可以檢查相對排名。"}]},{"type":"codeblock","attrs":{"lang":"python"},"content":[{"type":"text","text":"rf_df = pd.DataFrame(rfe.ranking_,index=X.columns,columns=[‘Rank’]).sort_values(by=’Rank’,ascending=True)rf_df.head()"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/ad/adf1995ec0c7825714ece8f5002c0611.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"horizontalrule"},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如果我們可以自動選擇功能,那麼與其手動配置功能數量,不如說是很好。這可以通過遞歸特徵消除和交叉驗證來實現。這是通過"},{"type":"codeinline","content":[{"type":"text","text":"sklearn.feature_selection.RFECV"}]},{"type":"text","text":" 類完成的 。該類具有以下參數:"}]},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"codeinline","content":[{"type":"text","text":"estimator"}]},{"type":"text","text":" -與"},{"type":"codeinline","content":[{"type":"text","text":"RFE"}]},{"type":"text","text":" 班級相似 。"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"codeinline","content":[{"type":"text","text":"min_features_to_select"}]},{"type":"text","text":" —最少要選擇的功能。"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"codeinline","content":[{"type":"text","text":"cv"}]},{"type":"text","text":"—交叉驗證拆分策略。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"返回的屬性是:"}]},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"codeinline","content":[{"type":"text","text":"n_features_"}]},{"type":"text","text":" —通過交叉驗證選擇的最佳特徵數。"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"codeinline","content":[{"type":"text","text":"support_"}]},{"type":"text","text":" —包含有關要素選擇信息的數組。"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"codeinline","content":[{"type":"text","text":"ranking_"}]},{"type":"text","text":" —功能的排名。"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"codeinline","content":[{"type":"text","text":"grid_scores_"}]},{"type":"text","text":" —從交叉驗證中獲得的分數。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"第一步是導入類並創建其實例。"}]},{"type":"codeblock","attrs":{"lang":"python"},"content":[{"type":"text","text":"from sklearn.feature_selection import RFECVrfecv = RFECV(estimator=GradientBoostingClassifier())"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"下一步是指定管道。在此管道中,我們使用剛剛創建的 "},{"type":"codeinline","content":[{"type":"text","text":"rfecv"}]},{"type":"text","text":"。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/ea/eafc6f3fb9c44754ca4f919b661591d8.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"讓我們擬合管道,然後獲得最佳數量的特徵。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/22/2283aa6fb9d1d14365bd89dbd1b97551.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"可以通過該"},{"type":"codeinline","content":[{"type":"text","text":"n_features_"}]},{"type":"text","text":" 屬性獲得最佳數量的特徵 。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/30/307954673e8b08813d69655b14e0e5ed.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"排名和支持可以像上次一樣獲得。"}]},{"type":"codeblock","attrs":{"lang":"python"},"content":[{"type":"text","text":"rfecv.support_rfecv_df = pd.DataFrame(rfecv.ranking_,index=X.columns,columns=[‘Rank’]).sort_values(by=’Rank’,ascending=True)rfecv_df.head()"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"使用, "},{"type":"codeinline","content":[{"type":"text","text":"grid_scores_"}]},{"type":"text","text":" 我們可以繪製一個顯示交叉驗證得分的圖表。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/31/31d2cf7aa8f23a04cb676def08f1df45.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/d6/d6c60b3f56d37c27118760d250d22992.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"horizontalrule"},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"將其應用於迴歸問題的過程是相同的。只要確保使用迴歸指標而不是準確性即可。我希望本文能爲您提供一些有關爲您的機器學習問題選擇最佳特徵的見解。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"參考內容:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https://github.com/mwitiderrick/Feature-Ranking-with-Recursive-Feature-Elimination","title":""},"content":[{"type":"text","text":"具有遞歸特徵消除的代碼庫"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/90/903237ffd0a3b3ae06272386f26ecb9e.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":""}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"看完別走還有驚喜!"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"我精心整理了計算機/Python/機器學習/深度學習相關的2TB視頻課與書籍,價值1W元。關注微信公衆號“計算機與AI”,點擊下方菜單即可獲取網盤鏈接。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":""}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章