专门用于机器学习的模块。分类,回归,无监督,数据降维,数据预处理等等,包含了常见的大部分机器学习方法。
使用前安装该模块:使用pycharm可以进入 Settings-> Project ->Project Interpreter -> 点击右侧,绿色加号
在出来的搜索框输入sklearn-> 点击下面的Install Package 等待提示安装成功即可。
代码(可直接运行)
from sklearn.datasets import load_iris # 导入鸢尾花数据
# from sklearn.cross_validation import train_test_split
# 上面的被弃用了 新的模块sklearn.model_selection,将以前的sklearn.cross_validation, sklearn.grid_search 和
# sklearn.learning_curve模块组合到一起
from sklearn.model_selection import train_test_split
# 鸢尾花
iris = load_iris()
print("鸢尾花原数据\n", iris)
print("数据大小\n", len(iris['data']))
# 分为训练数据 和测试数据 比例为百分之20
train_data, test_data, train_target, test_target = train_test_split(iris.data, iris.target, test_size=0.2,
random_state=1)
# 建模
from sklearn import tree # 决策树
# 模型训练
clf = tree.DecisionTreeClassifier(criterion='entropy') # 衡量分裂质量的功能。 支持的标准是基尼杂质的“gini”和信息增益的“entropy”。
clf.fit(train_data, train_target) # 简单来说,就是求得训练集X的均值啊,方差啊,最大值啊,最小值啊这些训练集X固有的属性。
# 可以理解为一个训练过程进行预测
y_pred = clf.predict(test_data) # 训练后返回预测结果,是标签值
# 验证
from sklearn import metrics
# 验证真实的值 打印准确度 准确分类得分
print("准确度\n", metrics.accuracy_score(y_true=test_target, y_pred=y_pred))
# 第二种验证 混淆矩阵 横轴表示实际值 纵轴表示预测值 计算混淆矩阵以评估分类的准确性
print("混淆矩阵\n", metrics.confusion_matrix(y_true=test_target, y_pred=y_pred))
# [[11 0 0]
# [ 0 12 1] 有1表示预测错误 最好的情况是是一个对角矩阵
# [ 0 0 6]]
# 打印决策树
with open('tree.dot', 'w') as fw:
tree.export_graphviz(clf, out_file=fw, feature_names=iris.feature_names,
class_names=iris.target_names,
filled=True, rounded=True,
special_characters=True) # 以DOT格式导出决策树。
#安装graphviz
#生成PDF可视化图像
import pydotplus
graph = pydotplus.graph_from_dot_file("tree.dot")
graph.write_pdf("iris2.pdf")
代码中提到的额外安装graphviz(较为特殊相对于其他python模块)
下载graphviz.msi安装包进行安装 (百度云) 提取码:88jc
将安装路径下的bin目录路径添加到环境变量的path
调用CMD进行测试,输入dot -version 成功则如下图
然后再运行上面的代码
会生成Dot文件tree.dot 这其实就是决策树 但是不方便解读
我们利用安装的graphviz进行转化为pdf 图示 所以还会生成iris.pdf
打开iris.pdf 如图:
小结:
- train_test_split(iris.data,iris.target,test_size=0.2,random_state=1) 该方法注意移植到了model_selection 其中测试比例为20%
- tree.DecisionTreeClassifier(criterion='entropy') 该函数是指定衡量分裂质量标准 有:gini(基尼) 和 entropy(增益)
- fit(train_data,train_target) 该函数可以理解为训练过程 求得均值,方差,最大值等固有属性
- predict(test_data) 该函数顾名思义就是返回预测结果,就是标签值
- metrics.accuray_score(y_true=test_target,y_pred=y_pred) 验证测试数据 获取准确分类得分 方式一
- metrics.confusion_matrix(y_true=test_target,y_pred=y_pred) 验证测试数据 获取准确分类得分 方式二
- tree.export_graphviz(
clf, out_file=fw, feature_names=iris.feature_names, class_names=iris.target_names, filled=True, rounded=True, special_characters=True) 以Dot格式输出决策树文件
- pydotplus.graph_from_dot_file("tree.dot") 指定被图形化文件
- write_pdf("iris.pdf") 生成PDF
注意:安装完graphviz后一定要重启一下IDE(pycharm)