P101思考与练习2

1.将数据集划分为训练集与测试集,查看决策树分类器的性能。

#1、
#划分为测试集与训练集
import pandas as pd
data = pd.read_csv('data/bankdebt.csv',index_col = 0,header = None)
data.loc[data[1] =='Yes',1] = 1
data.loc[data[1] =='No',1] = 0
data.loc[data[4] =='Yes',4] = 1
data.loc[data[4] =='No',4] = 0
data.loc[data[2] =='Single',2] = 1
data.loc[data[2] =='Married',2] = 2
data.loc[data[2] =='Divorced',2] = 3
from sklearn import model_selection
x = data.iloc[: ,0:3].values.astype(float)
y = data.iloc[: ,3].values.astype(int)
x_train,x_test,y_train,y_test = model_selection.train_test_split(x,y,test_size = 0.3,random_state = 1)
#查看决策分类器的性能
#训练集中训练
from sklearn import tree
clf = tree.DecisionTreeClassifier()
clf = clf.fit(x_train,y_train)
clf.score(x_train,y_train)
#在测试集上测试,性能评估
predicted_y = clf.predict(x_test)
from sklearn import metrics
print(metrics.classification_report(y_test,predicted_y))
print('Confusion matrix:')
print(metrics.confusion_matrix(y_test,predicted_y))

 拓展:画决策树(接以上代码)

方法一:使用export_text函数,需要注意的是,需要scikit-learn(简称sklearn)库版本≥0.21.3才可显示,否则会出错。

查看sklearn库版本:(其他库查看版本同此方法

import sklearn
print(sklearn.__version__)

下载0.21.3版本的库:(其他库下载一定版本同此方法

#点开Anaconda Prompt,输入如下内容:
pip install scikit-learn==0.21.3

下载好重启Jupyter Notebook,再次运行即可。

#【拓展】显示生成的决策树
#方法一,使用export_text函数
from sklearn.tree import export_text
fName = ['House','Marital','Income']
clfStruc = export_text(clf,feature_names = fName)
print(clfStruc)

方法二:使用Graphviz将得到的决策树可视化。需要下载Graphviz与Ipython,Graphviz是个软件,不能直接用pip安装。Ipython也是利用Python进行科学计算和交互可视化的一个最佳的平台,直接用pip安装:

#打开Anaconda Prompt,输入以下内容:
pip install ipython

Graphviz是一个开源的图(Graph)可视化软件,采用抽象的图和网络来表示结构化的信息。下载地址:Download | Graphvizhttps://graphviz.org/download/

我的电脑是Windows-64位,根据自己机型选择相应版本下载:

下载安装好需要再设置环境变量,否则会出错。

通过如下代码运行即可添加环境变量: 'E:/anaconda/Graphviz/bin/'是我安装Graphviz的地址路径。

import os
os.environ["PATH"] += os.pathsep + 'E:/anaconda/Graphviz/bin/'

添加好环境变量 ,就可以绘图了。

#方法二,使用Graphviz将得到的决策树可视化
#生成并显示决策树图
featureName =['House', 'Marital', 'Income']
className = ['Cheat','Not Cheat']
#生成图
from graphviz import Source
graph = Source( tree.export_graphviz(clf, out_file=None,feature_names=featureName,class_names=className))
#保存到文件中并显示
png_bytes = graph.pipe(format='png')
with open('dectree.png','wb') as f:f.write(png_bytes)
from IPython.display import Image
Image(png_bytes)

结果如下:

2.将例5-3中的分类器保存到文件中,然后重新加载预测给出的新数据。

#2、
from sklearn.externals import joblib
joblib.dump(clf,'clf.pkl')        #将模型保存到本地
import numpy as np
load_clf = joblib.load('clf.pkl')    #调入本地模型
new_x = np.array([[0,1,7.5]])        #导入新数据(自己编)
print('是否可以偿还债务:',np.where(load_clf.predict(new_x)==0,'No','Yes'))    #对数据进行预测

第5章【思考与练习2】将数据集划分为训练集与测试集,查看决策树分类器的性能。 将例5-3中的分类器保存到文件中,然后重新加载预测给出的新数据。相关推荐

  1. 正在载入java_如何实现程序加载时弹出正在加载对话框

    我们做的很多应用程序,很多功能都需要较长的加载时间,比如下载功能,转换页面等等.在程序进行后台处理的时候,前台的ui是没有反应的.如果在这段时间内我们不作任何处理就让程序停在那的话.第一,用户体验会很 ...

  2. keras训练完以后怎么预测_一文告诉你如何将Keras模型保存到文件中,并再次加载它们来进行预测。...

    Keras是一个用于深度学习的简单而强大的Python库. 鉴于深度学习模式可能需要数小时.数天甚至数周的时间来培训,了解如何保存并将其从磁盘中加载是很重要的. 在本文中,您将发现如何将Keras模型 ...

  3. 开启服务器,自动加载类是否需要开辟新的线程研究

    有些应用需要在开启服务器的时候自动先加载自己写好的类.比如监听串口通信等等. 那么在开启服务钱对类的加载是否需要开辟一个新的线程呢.下面对该想法做了一下测试. 1.首先在web.xml添加要加载的类: ...

  4. Android系统中固件崩溃后使用uevent机制重新加载固件 流程分析

    [前言] Android系统为了保证各商业公司的利益,允许在系统中使用不开源的固件.因此我们可以看到比如用于音频处理的.用于键盘支持的等等大量固件.既然这么多模块要用到固件,那么我们也有必要来了解一下 ...

  5. Cesium中Clock控件及时间序列瓦片动态加载

    前言 前面已经写了两篇博客介绍Cesium,一篇整体上简单介绍了Cesium如何上手,还有一篇介绍了如何将Cesium与分布式地理信息处理框架Geotrellis相结合.Cesium的强大之处也在于其 ...

  6. pytoch中class定义神经网络的参数保存与加载

    一.定义一个容易识别的网络 在正式介绍模型的保存和加载之前,我们首先定义一个基本的网络Net,它只包含一个全连接层: class Net(nn.Module):def __init__(self):s ...

  7. R语言图形用户界面数据挖掘包Rattle:加载UCI糖尿病数据集、并启动Rattle图形用户界面、数据集变量重命名,为数据集结果变量添加标签、数据划分(训练集、测试集、验证集)、随机数设置

    R语言图形用户界面数据挖掘包Rattle:加载UCI糖尿病数据集.并启动Rattle图形用户界面.数据集变量重命名,为数据集结果变量添加标签.数据划分(训练集.测试集.验证集).随机数设置 目录

  8. Android中关于Volley的使用(二)加载Json数据

    前面一篇关于Volley的文章中,我们学习了如何利用ImageRequest去网络中加载图片,那么今天我们就来学习一下如何利用volley去网络中加载Json格式数据,并将其展示在一个ListView ...

  9. Paging3、Room使用,1、从本地Room数据库加载 2、直接网络获取数据加载 3、网络访问数据到Room数据库再加载 4、封装使用

    目录 1.从本地Room数据库加载数据 viewmodel fragment中使用 页面 数据库相关 2.直接网络获取数据加载 3.网络访问数据到Room数据库再加载数据 自定义RemoteMedia ...

最新文章

  1. 收藏 | 常见的神经网络求导总结!
  2. 简单的 HTTP 调用,为什么时延这么大?
  3. 重新认识 Delphi
  4. 【springboot】禁用特定AutoConfiguration/自动配置类
  5. Vue-cli(四) 项目中引入Axios
  6. 到底有多二 (15 分)
  7. 钢笔墨水能否代替打印机墨水_打印机墨水怎么分类?
  8. 7-12 分解质因数 (10分)
  9. 面试问题如何预防xss攻击
  10. vue3代码检查以及格式化配置
  11. 6 电脑键盘控制机器人
  12. 【appium报错】Original error:Could not proxy command to remote server. Original error:socket hang up
  13. 屏幕色温自动调节小助手
  14. ART Mterp Interpreter 解释 bytecode
  15. mysql中带条件的insert语句
  16. python win10 arm_树莓派3B+安装Windows 10 ARM
  17. telnet mysql时出现:is not allowed to connect to this MySQL serverConnection closed by foreign host问题的解决
  18. PX4官方动态 | 带你走进官方教学(二)
  19. 专业人士解释杜邦分析法(一)
  20. 服务器剪切板无法完成粘贴的解决方案

热门文章

  1. TZOJ 7034: 竹取飞翔 ~ Lunatic Princess 并查集+数学。
  2. F28M35调用IQmath库出错
  3. 仿新浪微博登录的邮箱地址自动补全功能
  4. 《西瓜书》第六章 公式6.2推导 空间任一点到超平面的距离
  5. 开机点用户名登录显示rfc服务器不可用,rpc服务器不可用怎么办(修复RPC服务器不可用方法)...
  6. 关于印发《深圳市工业和信息化局绿色制造试点示范管理暂行办法》的通知
  7. 别人在你眼中是什么样,你就是什么样
  8. 网际,MAC,DNS,僵木蠕,木马,APT,dns隐蔽隧道,.pcap,开源情报,元数据,带外管理,磁盘阵列RAID,DRAC,ARP,充分必要条件
  9. 直播app源代码,手机屏幕截取并保存到手机相册
  10. 管理学原理期末复习笔记