Python应该怎么学,如何系统地自学Python?

2023-10-27

这是一份kaggle上的银行的数据集,研究该数据集可以预测客户是否认购定期存款y。这里包含20个特征。

1. 分析框架

2. 数据读取,数据清洗

# 导入相关包  
import numpy as np  
import pandas as pd   
# 读取数据  
data = pd.read_csv('./1bank-additional-full.csv')  
# 查看表的行列数  
data.shape  

输出:


这里只有nr.employed这列有丢失数据,查看下:

data['nr.employed'].value_counts()  

这里只有5191.0这个值,没有其他的,且只有7763条数据,这里直接将这列当做异常值,直接将这列直接删除了。

# data.drop('nr.employed', axis=1, inplace=True)  

3. 探索性数据分析

3.1查看各年龄段的人数的分布

这里可以看出该银行的主要用户主要集中在23-60岁这个年龄层,其中29-39这个年龄段的人数相对其他年龄段多。

import matplotlib.pyplot as plt  
import seaborn as sns  
plt.rcParams['font.sans-serif'] = 'SimHei'  
plt.figure(figsize=(20, 8), dpi=256)  
sns.countplot(x='age', data=data)  
plt.title("各年龄段的人数")  

3.2 其他特征的一些分布

plt.figure(figsize=(18, 16), dpi=512)  
plt.subplot(221)  
sns.countplot(x='contact', data=data)  
plt.title("contact分布情况")  
  
plt.subplot(222)  
sns.countplot(x='day_of_week', data=data)  
plt.title("day_of_week分布情况")  
  
plt.subplot(223)  
sns.countplot(x='default', data=data)  
plt.title("default分布情况")  
  
plt.subplot(224)  
sns.countplot(x='education', data=data)  
plt.xticks(rotation=70)  
plt.title("education分布情况")  
  
plt.savefig('./1.png')  

plt.figure(figsize=(18, 16), dpi=512)  
plt.subplot(221)  
sns.countplot(x='housing', data=data)  
plt.title("housing分布情况")  
  
plt.subplot(222)  
sns.countplot(x='job', data=data)  
plt.xticks(rotation=70)  
plt.title("job分布情况")  
  
plt.subplot(223)  
sns.countplot(x='loan', data=data)  
plt.title("loan分布情况")  
  
plt.subplot(224)  
sns.countplot(x='marital', data=data)  
plt.xticks(rotation=70)  
plt.title("marital分布情况")  
  
plt.savefig('./2.png')  

plt.figure(figsize=(18, 8), dpi=512)  
plt.subplot(221)  
sns.countplot(x='month', data=data)  
plt.xticks(rotation=30)  
  
plt.subplot(222)  
sns.countplot(x='poutcome', data=data)  
plt.xticks(rotation=30)  
plt.savefig('./3.png')  

3.3 各特征的相关性

plt.figure(figsize=(10, 8), dpi=256)  
plt.rcParams['axes.unicode_minus'] = False  
sns.heatmap(data.corr(), annot=True)  
plt.savefig('./4.png')  

4. 特征规范化

4.1 将自变量的特征值转换成标签类型

# 特征化数据  
from sklearn.preprocessing import LabelEncoder  
features = ['contact', 'day_of_week', 'default', 'education', 'housing',  
           'job','loan', 'marital', 'month', 'poutcome']  
  
le_x = LabelEncoder()  
for feature in features:  
    data[feature] = le_x.fit_transform(data[feature]) 

4.2 将结果y值转换成0、1

def parse_y(x):  
    if (x == 'no'):  
        return 0  
    else:  
        return 1  
data['y'] = data['y'].apply(parse_y)  
data['y'] = data['y'].astype(int)  

4.3 数据规范化

# 数据规范化到正态分布的数据  
# 测试数据和训练数据的分割  
from sklearn.preprocessing import StandardScaler  
from sklearn.model_selection import train_test_split  
ss = StandardScaler()  
train_x, test_x, train_y, test_y = train_test_split(data.iloc[:,:-1],   
                                                   data['y'],   
                                                   test_size=0.3)  
train_x = ss.fit_transform(train_x)  
test_x = ss.transform(test_x)  

5. 模型训练

5.1 AdaBoost分类器

from sklearn.ensemble import AdaBoostClassifier  
from sklearn.metrics import accuracy_score  
ada = AdaBoostClassifier()  
ada.fit(train_x, train_y)  
predict_y = ada.predict(test_x)  
print("准确率:", accuracy_score(test_y, predict_y))  

5.2 SVC分类器

from sklearn.svm import SVC  
svc = SVC()  
svc.fit(train_x, train_y)  
predict_y = svc.predict(test_x)  
print("准确率:", accuracy_score(test_y, predict_y))  

5.3 K邻近值分类器

from sklearn.neighbors import KNeighborsClassifier  
knn = KNeighborsClassifier()  
knn.fit(train_x, train_y)  
predict_y = knn.predict(test_x)  
print("准确率:", accuracy_score(test_y, predict_y))  

5.4 决策树分类器

from sklearn.tree import DecisionTreeClassifier  
dtc = DecisionTreeClassifier()  
dtc.fit(train_x, train_y)  
predict_y = dtc.predict(test_x)  
print("准确率:", accuracy_score(test_y, predict_y))  

6 模型评价

6.1 AdaBoost分类器

from sklearn.metrics import roc_curve  
from sklearn.metrics import auc  
plt.figure(figsize=(8,6))  
fpr1, tpr1, threshoulds1 = roc_curve(test_y, ada.predict(test_x))  
plt.stackplot(fpr1, tpr1,color='steelblue', alpha = 0.5, edgecolor = 'black')  
plt.plot(fpr1, tpr1, linewidth=2, color='black')  
plt.plot([0,1], [0,1], ls='-', color='red')  
plt.text(0.5, 0.4, auc(fpr1, tpr1))  
plt.title('AdaBoost分类器的ROC曲线')  

6.2 SVC分类器

plt.figure(figsize=(8,6))  
fpr2, tpr2, threshoulds2 = roc_curve(test_y, svc.predict(test_x))  
plt.stackplot(fpr2, tpr2, alpha = 0.5)  
plt.plot(fpr2, tpr2, linewidth=2, color='black')  
plt.plot([0,1], [0,1],ls='-', color='red')  
plt.text(0.5, 0.4, auc(fpr2, tpr2))  
plt.title('SVD的ROC曲线')  

6.3 K邻近值分类器

plt.figure(figsize=(8,6))  
fpr3, tpr3, threshoulds3 = roc_curve(test_y, knn.predict(test_x))  
plt.stackplot(fpr3, tpr3, alpha = 0.5)  
plt.plot(fpr3, tpr3, linewidth=2, color='black')  
plt.plot([0,1], [0,1],ls='-', color='red')  
plt.text(0.5, 0.4, auc(fpr3, tpr3))  
plt.title('K邻近值的ROC曲线')  

6.4 决策树分类器

plt.figure(figsize=(8,6))  
fpr4, tpr4, threshoulds4 = roc_curve(test_y, dtc.predict(test_x))  
plt.stackplot(fpr4, tpr4, alpha = 0.5)  
plt.plot(fpr4, tpr4, linewidth=2, color='black')  
plt.plot([0,1], [0,1],ls='-', color='red')  
plt.text(0.5, 0.4, auc(fpr4, tpr4))  
plt.title('决策树的ROC曲线')  

来源:
https://blog.csdn.net/qq_33333002/article/details/106280462

---------------------------END---------------------------

题外话

在这里插入图片描述

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python应该怎么学,如何系统地自学Python? 的相关文章

随机推荐

  • 突破前端反调试--阻止页面不断debugger

    原文地址 https segmentfault com a 11 其实我也不太确定是不是反调试 但是他阻止我看他代码了 那就是反调试 姑且这么称呼吧 问题复现 一次扒某网站的前端代码 打开控制台要看Network 结果发现他们页面一打开控制
  • 最详细的解决:UnboundLocalError: local variable ‘a‘ referenced before assignment

    代码及报错如下 解决 很多人都非常困惑 为什么在test3中可以直接输出a 但是在test3中 使用a 1的时候 就直接报错呢 首先 我们需要明确一个概念 就是全局变量与局部变量 如下图 大家觉得打印的a会是1还是3 答案是1 因为定义在t
  • C语言/C++常见习题问答集锦(四十五) 之数字之谜

    C语言 C 常见习题问答集锦 四十五 之数字之谜 程序之美 1 最大公约数 题目描述 给定N个正整数 求他们的最大公约数 本题要求函数实现 接口如下 int gcd array int num int size 求大小为size的数组num
  • 基于Stomp协议的时间通知机制

    问题导入 系统运行过程中出现了由主持人的操作推动会议流程的场景 如何将主持人的命令通过服务器同步到每个人的设备上 问题分析 在当前的系统设计中使用了C S架构 基本上所有的请求都是终端通过http协议向服务器提出的 而服务器没有办法向终端主
  • pygame飞机大战小游戏(python大作业)

    一 项目背景 python大作业 在查看了老师给的链接发现教学视频不完整 所以借用了同学的 Python编程 从入门到实践 中的一个项目 学习模仿 二 游戏具体介绍 这是一款由辉辉亲自打造的太空对战小游戏 游戏背景 在广袤无垠的太空里有一群
  • 图的遍历(完整代码)

    代码实现功能 1 利用图的邻接矩阵构造并输出图 2 实现图的深度优先搜索遍历 3 实现图的广度优先搜索遍历 include
  • 【支持M1】MacDroid for Mac:Mac和Android安卓设备数据互通

    Mac和Android组合始终存在的唯一问题是无法在这些设备之间足够快地传输数据 但是MacDroid for mac填补了这一空白 MacDroid mac版是Macos上一款安卓手机数据传输助手 MacDroid mac下载支持Mac和
  • 码蹄集 ---- 供水管线 kruskal算法

    供水管线 kruskal算法 克鲁斯卡尔算法 最小生成树算法 应用场景 从连通图中找出最小生成树 和实际相结合的有 水管共线 公交车站路线图 城市间修路等 算法主要思想 将连通网中所有的边按照权值大小做升序排序 从权值最小的边开始选择 只要
  • C语言调用libusb访问USB驱动

    目录 一 环境搭建 1 下载库文件 2 解压 3 配置VS工程 3 1 头文件的配置
  • SyntaxError: unexpected EOF while parsing

    SyntaxError unexpected EOF while parsing 这是典型的没有验证函数参数是否有效 原因是eval str 的字符串为空 你可以运行如下代码 观察输出 try print eval except Excep
  • 六句话给出 Synchronized 和 Lock 的区别

    1 Synchronized 内置的 Java 关键字 Lock 是一个 Java 类 2 Synchronized 无法判断获取锁的状态 Lock 可以判断是否获取到了锁 3 Synchronized 会自动释放锁 Lock 必须要手动释
  • Windows下Anaconda3下载安装详细步骤

    第一步 去官网下载Anaconda Individual Editionhttps www anaconda com products individual 第二步 点击Download 在安装之前 要先安装python的版本 这里我先安装
  • C++ 实验8 继承

    编写一个学生和教师数据输入和显示程序 学生数据有编号 姓名 班级和成绩 教师数据有编号 姓名 职称和部门 要求将编号 姓名输入和显示设计成一个类person 并作为学生类student和教师类teacher的基类 类图如下 代码如下 头文件
  • Win10笔记本(机械革命)亮度调节快捷键失效-已解决

    Win10笔记本 机械革命 亮度调节快捷键失效 已解决 1 确定你已经安装了核心显卡驱动 驱动精灵检查一下 2 右击此电脑 管理 系统工具 设备管理器 监视器 单击展开 卸载dpms 卸载Generic Monitor 选中删除相关驱动 3
  • iText包对每页pdf文件加水印

    https ishare iask sina com cn f 31zwqlKmIwM html
  • 用户编写的python程序、无需修改就可以_python的笔记(一)

    Python的基本特点一种动态解释型的编程语言 规范的代码 Python 采用强制缩进的方式使得代码具有极佳的可读性 高级语言特性 封装内存管理等 可移植性 程序如果避免使用依赖于系统的特性 那么无需修改就可以在任何平台上运行 解释性 直接
  • 带你入门TypeScript

    一 为何学习TS 1 TypeScript 在社区的流行度越来越高 它非常适用于一些大型项目 也非常适用于一些基础库 极大地帮助我们提升了开发效率和体验 2 TypeScript 可以编译出纯净 简洁的 JavaScript 代码 并且可以
  • python画玫瑰图_python windrose(风玫瑰图)

    conda install c https conda anaconda org conda forge windrose b 用pip install windrose可以成功 但是安装的路径 python找不到 from windros
  • 多表联查优化

    多表联查优化我总结有以下几点 优化sql语句 索引优化 反范式设计 业务代码优化 使用缓存 优化sql语句 sql性能分析 查看执行频次 查看执行频次 select insert delete update shwo global sess
  • Python应该怎么学,如何系统地自学Python?

    这是一份kaggle上的银行的数据集 研究该数据集可以预测客户是否认购定期存款y 这里包含20个特征 1 分析框架 2 数据读取 数据清洗 导入相关包 import numpy as np import pandas as pd 读取数据