我按照这个问题的推荐,使用scikit-learn进行机器学习。令我惊讶的是,它似乎并不提供访问它训练的实际模型的途径。例如,如果我创建一个SVM、线性分类器甚至是决策树,它似乎没有提供查看实际训练模型所选参数的方法。
查看实际模型是有用的,如果模型的创建部分是为了更清楚地了解它使用了哪些特征(例如,决策树)。如果有人想用Python训练模型,然后用其他代码实际实现它,那么查看模型也是一个重要的问题。
我在scikit-learn中遗漏了什么,还是有办法在scikit-learn中获取这些信息?如果没有,哪个免费的机器学习工作台是好的选择,不一定是Python的,其中模型是透明可用的?
回答:
拟合模型的参数直接存储在模型实例的属性中。这些拟合参数有一个特定的命名约定:它们都以尾随下划线结束,而用户提供的构造函数参数(即超参数)则没有。
拟合属性的类型取决于算法。例如,对于核支持向量机,你将拥有支持向量、双重系数和截距的数组,而对于随机森林和极端随机树,你将拥有一组二叉树(在内存中以连续的numpy数组形式内部表示,以提高性能:数组结构表示)。
有关更多详细信息,请查看每个模型的文档字符串中的属性部分,例如SVC:
http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC
对于基于树的模型,你还可以使用一个辅助函数来生成学习树的graphivz_export:
http://scikit-learn.org/stable/modules/tree.html#classification
要找出森林模型中特征的重要性,你还应该查看compute_importances
参数,参见以下示例: