刚刚使用SKLearn学习机器学习进行数据分析,分享一些概念和想法,希望可以大家一起讨论,如果理解或者表达有不准确的地方,请多多指点,不吝赐教,非常感谢~~
涉及决策树其他参数:
请转至《DecisionTreeClassifier与红酒数据集(criterion及创建一个树)》:https://blog.csdn.net/weixin_42969619/article/details/98884082
以及《sklearn的DecisionTreeClassifier与红酒数据集(参数random_state & splitter )》:
https://blog.csdn.net/weixin_42969619/article/details/99301017
以及《sklearn的DecisionTreeClassifier与红酒数据集(剪枝参数)》:
本文将继续介绍sklearn的决策树的属性与接口,属性是在模型训练之后,能够调用查看的模型的各种性质:
- 查看特征变量的“重要性”的分数—— .feature_importances_
# 查看特征变量的“重要性”
clf.feature_importances_
# 使用zip()连接特征变量名(list)和“重要性”(array)连接起来
[*zip(feature_name,clf.feature_importances_)]
-----------------------
# 结果为
[('酒精', 0.03638751716910407),
('苹果酸', 0.0),
('灰', 0.0),
('灰的碱性', 0.0),
('镁', 0.0),
('总酚', 0.05588186276134131),
('类黄酮', 0.08197155358348254),
('非黄烷类酚类', 0.0),
('花青素', 0.0),
('颜色强度', 0.28911955517911875),
('色调', 0.0),
('od280/od315稀释葡萄酒', 0.08487622153631365),
('脯氨酸', 0.4517632897706396)]
说明: 由于决策树的“随机性”特点,所以不同的训练集会对特征变量的“重要性”有影响;也正是因为“重要性”的改变,导致模型的改变。
- 查看测试样本分别被划分给树的哪个节点—— .apply(Xtest)
# 返回节点的索引值的一个一维数组
clf.apply(Xtest)
---------------------------
# 结果为
array([15, 19, 11, 13, 11, 19, 8, 11, 19, 19, 19, 19, 19, 4, 19, 4, 19,
13, 4, 13, 4, 13, 19, 19, 4, 13, 13, 19, 10, 20, 13, 11, 13, 19,
13, 4, 13, 15, 4, 4, 19, 11, 4, 19, 13, 4, 19, 19, 13, 13, 11,
13, 7, 13])
- 查看测试样本的分类或回归结果—— .predict(Xtext)
# predict返回每个测试样本的分类/回归结果
clf.predict(Xtest)
-----------------------------
# 结果为
array([1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 2, 0, 2, 0, 1, 2, 1, 2, 1,
0, 0, 2, 1, 1, 0, 2, 1, 1, 1, 1, 0, 1, 2, 1, 1, 2, 2, 0, 1, 2, 0,
1, 2, 0, 0, 1, 1, 1, 1, 2, 1])
- 获得模型的准确度—— .score(Xtext, Ytext)/.score(Xtrain, Ytrain)
我们知道决策树属于“有监督学习”,所以训练的模型是会有一个分数来考量模型的“准确度”
#返回预测的准确度
score = clf.score(Xtest, Ytest)
score # 由于决策树的“随机性”特点,不同的模型分数也会不同