Day07 补档Day06

机器学习特征与标签可视化补档

昨天在火车上,实在没办法写,今天补一下

1.单特征可视化:连续变量箱线图(核密度直方图)、离散特征直方图

#1.单特征的可视化
#以data.csv为例,首先找到连续性的变量
import pandas as pd
data = pd.read_csv(r'data.csv')
print(data.head())
continuous_features = []
for i in data.columns:
    if data[i].dtype != 'object':
        continuous_features.append(i)
print(continuous_features)

#绘制数据图的要素:
#           1.指定出绘制数据图的类型(折线or柱状or散点)
#           2.x轴和y轴的含义分别是什么
#           3.数据图标题是什么

#2.绘制常见的几种数据图

#引入相应的库:
#       seaborn:用 Seaborn 快速生成统计图表
#       matplotlib:用 Matplotlib 调整细节(如标题、图例、坐标轴范围)
import seaborn as sns
import matplotlib.pyplot as plt

#给出x轴参考的数据
# sns.boxplot(x=data['Annual Income'])
#给出整张图的标题
# plt.title('Annual Income 的箱线图')
#给出x轴的标签
# plt.xlabel('Annual Income')
#显示数据图
# plt.show()

#出现问题:
#       1.中文显示
#       2.下方出现警告:原因: Matplotlib 默认字体不支持中文,导致中文显示为乱码或方框。

#解决
plt.rcParams['font.sans-serif'] = ['SimHei']
#其中:font.sans-serif是指定 Matplotlib 使用的无衬线字体列表,用于渲染文本
plt.rcParams['axes.unicode_minus'] = False
#其中:plt.rcParams['axes.unicode_minus'] = False 是 Matplotlib 中用于解决负号(-)显示异常的配置参数。
#它的作用是将负号强制渲染为 ASCII 字符(-),而非默认的 Unicode 减号(−),从而避免在某些字体下负号显示为方框或乱码。
sns.boxplot(x=data['Annual Income'])
plt.title('Annual Income 箱线图')  # 使用中文标题
plt.xlabel('年收入')      # 使用中文标签
plt.show()


#连续变量绘制直方图
sns.histplot(data['Years in current job'])
plt.title('当前工作 年收入直方图')
plt.xlabel('当前工作年限')
plt.ylabel('员工数量')
#plt.show()

#出现问题:下面x轴变量重叠
#解决:
plt.xticks(rotation=45, ha='right')  # 旋转45度,并右对齐,ha是horizontalalignment的简拼
plt.tight_layout()  # 自动调整子图参数,提供足够的空间
plt.show()


2.特征和标签关系可视化

#3.绘制标签和特征的关系
#以data.csv中的数据为例,Credit Default中包含0和1两个离散的值,而0和1对应的某些列的数据是连续的
#也就是离散和连续同时表示,需要展示标签和特征的关系
plt.figure(figsize=(8,6))
sns.boxplot(x='Credit Default',y='Annual Income',data=data)


#data 是一个存储客户数据的 DataFrame,
#其中包含 'Credit Default'(违约状态)和 'Annual Income'(年收入)字段,则函数会直接从中提取数据。
plt.title('Annual Income vs. Credit Default')
#含义:x 轴变为数值变量 'Annual Income',y 轴变为分类变量 'Credit Default'。
#即:箱线图横向显示,每个类别在 y 轴上,数值分布在 x 轴方向。


plt.xlabel('Credit Default')
plt.ylabel('Annual Income')
plt.show()

#不够美观,使用小提琴图
#小提琴图在箱线图的基础上,不需要任何修改,只需要调用不同的图形类型
plt.figure(figsize=(8, 6))
sns.violinplot(x='Credit Default', y='Annual Income', data=data)
plt.title('Annual Income vs. Credit Default')
plt.xlabel('Credit Default')
plt.ylabel('Annual Income')
plt.show()

#由于还是不够明显,而且表示连续变量,可以使用类似直方图
plt.figure(figsize=(8, 6))
sns.histplot(x='Annual Income', hue='Credit Default', data=data, kde=True, element="step")
plt.title('Annual Income vs. Credit Default')
plt.xlabel('Annual Income')
plt.ylabel('Count')
plt.show()


 

#对于离散型变量:
plt.figure(figsize=(8, 6))
sns.countplot(x='Number of Open Accounts', hue='Credit Default', data=data)
plt.title('Number of Open Accounts vs. Credit Default')
plt.xlabel('Number of Open Accounts')
plt.ylabel('Count')
plt.show()

#数据过度堆叠,需要分组
# 将 "Number of Open Accounts" 分组
data['Open Accounts Group'] = pd.cut(data['Number of Open Accounts'], bins=[0, 5, 10, 15, 20, float('inf')], labels=['0-5', '6-10', '11-15', '16-20', '20+'])

@浙大疏锦行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值