栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

机器学习--决策树(第六章)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

机器学习--决策树(第六章)

决策树


决策树.py

from  sklearn.tree import DecisionTreeClassifier
#创建分类器对象
tree=DecisionTreeClassifier(criterion="entropy")
#训练数据fit
tree.fit([[0],[1],[2],[3]],["a","a","b","c"])
#预测新数据
target=tree.predict([[2]])
#模型评估,打分,验证方法,评估方式
print(target)
print(tree.score([[2]],target))

决策树–鸢尾花.py

#用决策树对鸢尾花进行分类
from  sklearn.tree import DecisionTreeClassifier,plot_tree
from  sklearn.datasets import load_iris
from  sklearn.model_selection import train_test_split
import  matplotlib.pyplot as plt

#获取数据集
iris=load_iris()
print(iris)
#划分数据集(传入特征值,目标值,划分的比例以及随机种子)
X_train, X_test, y_train, y_test=train_test_split(iris.data,iris.target,test_size=0.3,random_state=30)
#创建决策树预估器(利用决策树对象学习训练集,预测测试集)
tree=DecisionTreeClassifier(criterion="gini",max_depth=2)
tree.fit(X_train,y_train)
target=tree.predict(X_test)
#模型评估,(使用测试集中特征和目标对决策树打分)
print("预测结果:",target)
print("对比",target==y_test)
print("打分结果:",tree.score(X_test,y_test))
plt.figure(figsize=(12,11),dpi=80)
plot_tree(tree,feature_names=iris.feature_names)
plt.show()

决策树–鸢尾花–网格交叉搜索.py

#用决策树对鸢尾花进行分类
from  sklearn.tree import DecisionTreeClassifier
from  sklearn.datasets import load_iris
from  sklearn.model_selection import train_test_split,GridSearchCV
#获取数据集
iris=load_iris()
print(iris)
#划分数据集(传入特征值,目标值,划分的比例以及随机种子)
X_train, X_test, y_train, y_test=train_test_split(iris.data,iris.target,test_size=0.3,random_state=30)
#创建决策树预估器(利用决策树对象学习训练集,预测测试集)
tree=DecisionTreeClassifier(criterion="gini",max_depth=2)
#创建网格交叉搜索的对象,传入分类器对象,param_grid用于指定分类器对象tree可以调整的参数,字典格式
gsc=GridSearchCV(tree,param_grid={"criterion":["gini","entropy","cart"],'max_depth':range(1,21),"min_samples_split":range(1,11)})
#学习、训练数据
gsc.fit(X_train,y_train)
#预测
target=gsc.predict(X_test)
#模型评估,(使用测试集中特征和目标对决策树打分)
print("预测结果:",target)
print("对比结果:",target==y_test)
print("打分结果:",gsc.score(X_test,y_test))
print("最优参数:",gsc.best_params_)
print("最优分数:",gsc.best_score_)
print("最优分类器:",gsc.best_estimator_)


import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction import DictVectorizer
from sklearn.tree import DecisionTreeClassifier,export_graphviz
import pydotplus
titanic = pd.read_csv('http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt')

#选取一些特征作为我们划分的依据
x = titanic[['pclass', 'age', 'sex']]
y = titanic['survived']
# print(x)
#缺失值处理
x['age'].fillna(x['age'].mean(), inplace=True)
#分割数据集到训练集合测试集
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.25)
#进行处理(特征工程)特征-》类别-》one_hot编码
dict=DictVectorizer(sparse=False)
x_train = dict.fit_transform(x_train.to_dict(orient="records"))
print(dict.get_feature_names())
x_test = dict.fit_transform(x_test.to_dict(orient="records"))
# print(x_train)
#用决策树进行预测
dec=DecisionTreeClassifier()
dec.fit(x_train,y_train)
print("预测的准确率:",dec.score(x_test,y_test))
#导出决策树的结构
# export_graphviz(dec,out_file='./tree1.pdf',feature_names=['年龄', 'pclass=1st', 'pclass=2nd', 'pclass=3rd', '女性', 'sex=male'])

dot_data = export_graphviz(dec, out_file=None)
graph = pydotplus.graph_from_dot_data(dot_data)
graph.write_pdf("tree2.pdf")

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/925686.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号