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}}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章