(头歌)【提高】可视化探索:系统故障数据处理

任务描述

探索一个系统故障数据,去除重复值,绘制不同label下feature5的分布散点图,绘制feature86的KDE分布图,针对feature86进行最小-最大规范化操作后,再次绘制feature86的KDE分布图。 该数据已经做了脱敏处理,字段“label”为类别标签,0表示正常,1,2,3,4,5表示故障。

相关知识

  • 去除重复值:

    在模型训练过程中去除重复值是一个常见的预处理步骤,这能够降低模型训练过程中过拟合的风险,提升模型的泛化能力。

  • 可视化:

    最常规的可视化方式包括绘制与数据特征相关的散点图、柱状图、箱线图等,以此更好的查看数据特征与标签之间的关系。

  • KDE:

    即Kernel Density Estimation,是一种用于估计概率密度函数(PDF)的非参数统计方法。它在统计学、数据分析和机器学习中被广泛用于理解数据分布、可视化数据以及进行概率密度估计。

  • 最小-最大规范化:

    也被称为Min-Max缩放,用于将数值特征的取值范围缩放到指定的区间,通常是[0,1]之间。

编码提示

在去除重复值时,需要将sample_id列进行排除,如果直接进行比对,则会无法发现数据中的重复值。

编程要求

根据代码提示,补全需要的代码:

  • 判断数据集中是否存在重复数据,统计数量,并去除
    预期的结果为:

    ,

  • 针对feature5按照标签绘制对应的分布图
    预期的结果为:

    ,

  • 绘制feature86的KDE分布图
    预期的结果为:

    ,

  • 针对feature86进行最小-最大规范化(0,1之间)操作,并打印前10个数据的feature86的数值
    预期的结果为:

    ,

  • 绘制最小-最大规范化操作后feature86的KDE分布图
    预期的结果为:

    ,

测试说明

平台将根据最后的运行结果进行评测。 注意: (1)评测前,请注释题目未要求的所有print()语句,保留题目明确要求“打印”的语句; (2)请点击Jupyter的“保存”按钮,保存代码。 预期的结果为:

,

,

# -*-encoding:utf-8 -*-
# import package.
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

import warnings
warnings.filterwarnings('ignore')

data = pd.read_csv('/data/bigfiles/dataset.csv')
data.head()


# 利用tail()函数观察数据集中后10项
data.tail(10)


# 利用describe()函数观察数值型字段的描述信息
data.describe()
# 获取数据集数据标签
label = data['label']
# 获取数据集数据特征
feature = data.loc[:, 'feature0':'feature106']


# 利用drop_duplicates()方法去除重复数据,并将去重后的数据存储到data_unique中
feature_label = data.columns.tolist()
del feature_label[0]
data_unique = feature.drop_duplicates()
print('原始数据集中样本数量为:',len(data))
print('原始数据集中不重复样本数量为:',len(data_unique))
# 统计重复的数量
duplicate_count = len(data) - len(data_unique)
print("原始数据集中重复样本数量为:", duplicate_count)
# 删除重复数据并按顺序重新编号
data_unique = data.drop_duplicates(subset=feature_label).reset_index(drop=True)


# 使用均值填充空缺值和NaN值
data_unique.fillna(data_unique.mean(), inplace=True)
# 提取sample_id列,feature5列和label列
sample_id = data_unique['sample_id']
feature5 = data_unique['feature5']
labels = data_unique['label']

# 将不同标签的数据分开
label_data = {}
for label in set(labels):
    label_data[label] = {'sample_id': sample_id[labels == label], 'feature5': feature5[labels == label]}

# 设置颜色映射,用于不同标签的散点图颜色
colors = {0: 'red', 1: 'blue', 2: 'green', 3: 'red', 4: 'blue', 5: 'green'}

# 创建两个子图
fig, axes = plt.subplots(1, 2, figsize=(12, 6))

# 绘制label为0~2的散点图
axes[0].set_title('Feature5 Distribution (Label 0~2)')
for label in range(3):
    data_points = label_data[label]
    axes[0].scatter(data_points['sample_id'], data_points['feature5'], color=colors[label], label=f'label {label}')

# 绘制label为3~5的散点图
axes[1].set_title('Feature5 Distribution (Label 3~5)')
for label in range(3, 6):
    data_points = label_data[label]
    axes[1].scatter(data_points['sample_id'], data_points['feature5'], color=colors[label], label=f'label {label}')

# 添加标签和图例
for ax in axes:
    ax.set_xlabel('Sample ID')
    ax.set_ylabel('Feature5 Value')
    ax.legend()

# 自动调整布局
plt.tight_layout()

# 显示图形
plt.show()

# 提取feature86列
feature86 = data_unique['feature86']

# 设置画布大小
plt.figure(figsize=(10, 6))

# 绘制KDE分布图
sns.kdeplot(data=feature86, fill=True, color='blue', alpha=0.5)

# 添加标签和标题
plt.xlabel('Feature86 Value')
plt.ylabel('Density')
plt.title('KDE Distribution of Feature86')

# 显示图形
plt.show()


# 针对data_unique['feature86']使用最小最大规范化操作,使得数值大小在[0,1]之间
data_unique['feature86'] = [(x - min(data_unique['feature86'])) / (max(data_unique['feature86']) - min(data_unique['feature86'])) for x in data_unique['feature86']]
print('最小最大规范化操作后的feature86的前十项')
print(data_unique['feature86'][:10])
# 提取feature86列
feature86 = data_unique['feature86']

# 设置画布大小
plt.figure(figsize=(10, 6))

# 绘制KDE分布图
sns.kdeplot(data=feature86, fill=True, color='blue', alpha=0.5)

# 添加标签和标题
plt.xlabel('Feature86 Value')
plt.ylabel('Density')
plt.title('KDE Distribution of Feature86')

# 显示图形
plt.show()

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值