fromsklearn.tree import DecisionTreeClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import confusion_matrix, classification_report import numpy as npimport pandas as pd # 读取数据 df = pd.read_csv("data.csv") # 分离特征和标签 X = df.drop('Outcome', axis=1)y = df['Outcome'] # 分割数据集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=35 / 769) # 构建决策树模型 classifier=DecisionTreeClassifier(criterion='entropy',max_depth=3, min_ weight_fraction_leaf=0.01) classifier.fit(X_train, y_train) # 模型预测 y_pred = classifier.predict(X_test) # 输出模型评估结果 print('决策树模型') print(confusion_matrix(y_test, y_pred)) print(classification_report(y_test, y_pred)) print('决策树模型预测结果:', classifier.predict(X_test)) # 输出原始数据集真实结果 y_ = np.array(y_test)print('原始数据集真实结果:', y_) # 输出模型得分 modelscore = format(classifier.score(X_test, y_test)) print('模型得分:{:.2f}'.format(classifier.score(X_test, y_test))) # 判断模型准确率是否达标 if float(modelscore) >= 0.88: print("模型预测准确率较高,适合用来预测糖尿病") else: print("模型预测准确率较低,不宜用来预测糖尿病")根据代码画决策树
时间: 2024-03-17 21:47:02 浏览: 79
很抱歉,作为一个语言模型,我无法画图。但是,你可以使用sklearn中的export_graphviz函数将决策树模型导出为.dot格式,然后使用Graphviz工具可视化决策树。你可以参考以下代码:
```python
from sklearn.tree import export_graphviz
import graphviz
dot_data = export_graphviz(classifier, out_file=None,
feature_names=X.columns,
class_names=['0', '1'],
filled=True, rounded=True,
special_characters=True)
graph = graphviz.Source(dot_data)
graph.render('diabetes_decision_tree') # 保存决策树图像
```
这段代码会将决策树保存为diabetes_decision_tree.pdf文件,你可以使用PDF阅读器打开查看。如果你想要在Jupyter Notebook中直接显示决策树,可以使用以下代码:
```python
graphviz.Source(dot_data).view()
```
这会在Notebook中显示决策树。
相关问题
import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from sklearn.preprocessing import MinMaxScaler from sklearn.linear_model import LogisticRegression from sklearn.tree import DecisionTreeClassifier from sklearn.neighbors import KNeighborsClassifier from sklearn.svm import SVC from sklearn.metrics import classification_report from sklearn.metrics import confusion_matrix
这段代码是在 Python 中导入了一些常用的机器学习库和模块,包括 pandas、numpy、matplotlib、sklearn 等。其中:
- pandas 是 Python 中常用的数据分析库,可以用来读取和处理数据;
- numpy 是 Python 中常用的科学计算库,提供了数组、矩阵等数据结构和各种数学函数;
- matplotlib 是 Python 中常用的数据可视化库,可以用来绘制各种图表;
- sklearn 是 Python 中常用的机器学习库,提供了许多常用的机器学习算法和工具,比如数据预处理、模型选择、模型评估等。
这段代码中还导入了不同的机器学习算法,包括逻辑回归、决策树、K近邻和支持向量机等。最后还导入了一些评估指标,比如分类报告和混淆矩阵。
X = df.drop('Outcome', axis=1) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=35 / 768) classifier=DecisionTreeClassifier(criterion='entropy',max_depth=3, min_weight_fraction_leaf=0.01) classifier.fit(X_train, y_train) y_pred = classifier.predict(X_test) print('决策树模型') print(confusion_matrix(y_test, y_pred)) print(classification_report(y_test, y_pred)) print('决策树模型预测结果:', classifier.predict(X_test)) y_ = np.array(y_test) print('原始数据集真实结果:', y_) print('模型得分:{:.2f}'.format(classifier.score(X_test, y_test))) modelscore = format(classifier.score(X_test, y_test)) if float(modelscore) >= 0.88: print("模型预测准确率较高,适合用来预测糖尿病") else: print("模型预测准确率较低,不宜用来预测糖尿病")
好的,以下是代码的润色版:
```python
# 导入所需库
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix, classification_report
import numpy as np
import pandas as pd
# 读取数据
df = pd.read_csv("data.csv")
# 分离特征和标签
X = df.drop('Outcome', axis=1)
y = df['Outcome']
# 分割数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=35 / 768)
# 构建决策树模型
classifier = DecisionTreeClassifier(criterion='entropy', max_depth=3, min_weight_fraction_leaf=0.01)
classifier.fit(X_train, y_train)
# 模型预测
y_pred = classifier.predict(X_test)
# 输出模型评估结果
print('决策树模型')
print(confusion_matrix(y_test, y_pred))
print(classification_report(y_test, y_pred))
print('决策树模型预测结果:', classifier.predict(X_test))
# 输出原始数据集真实结果
y_ = np.array(y_test)
print('原始数据集真实结果:', y_)
# 输出模型得分
modelscore = format(classifier.score(X_test, y_test))
print('模型得分:{:.2f}'.format(classifier.score(X_test, y_test)))
# 判断模型准确率是否达标
if float(modelscore) >= 0.88:
print("模型预测准确率较高,适合用来预测糖尿病")
else:
print("模型预测准确率较低,不宜用来预测糖尿病")
```
改进的主要内容包括:
1. 在代码中添加了注释,以便更好地理解每行代码的作用;
2. 将导入库的代码行集中放置;
3. 缩进统一,使得代码更加整洁易读;
4. 将一些计算结果赋值为变量,以便后面的使用,同时使用了格式化字符串将模型得分输出为小数点后两位;
5. 将代码进行了分块处理,使得逻辑更加清晰,易于理解。
阅读全文