seaborn和torchvision的部分操作

本文介绍了如何使用Python的seaborn库绘制核密度估计图和联合分布图,以及如何在CIFAR-10数据集上动态展示图片。通过sns.pairplot函数展示Iris数据集的多变量关系,包括小提琴图的子图版本,适用于数据探索和初步分析。

绘制核密度估计图(Kernel Density Estimation Plot)

这是以iris数据集为例的。 下面来看代码

sns.kdeplot(df_Setosa['sepal.length'], 
            fill = True, label = 'sepal length', color = 'g')

sns.kdeplot(df_Setosa['sepal.width'], 
            fill = True, label = 'sepal width', 
            color = 'blue')

sns.kdeplot(df_Setosa['petal.length'], 
            fill = True, label = 'petal length', color = 'r')


sns.kdeplot(df_Setosa['petal.width'], 
            fill = True, label = 'petal width', 
            color = 'deeppink')
plt.legend()
plt.show()

当然,这个代码还是可以优化的,就留给读者朋友喽!

torchvision

要在这上面动态的展示相关数据图片。

 

来看代码

 

import random
import torch.utils.data as data_utils
import torchvision

# 获取类别数
num_classes = len(dataset.classes)
samples_per_class = 90
total_samples = num_classes * samples_per_class

# 创建DataLoader以方便随机采样
dataloader = torch.utils.data.DataLoader(dataset, batch_size=samples_per_class, shuffle=True)

# 初始化存储图片的容器
images = []
for class_index in range(num_classes):
    # 随机获取一个批次,对于CIFAR-10这样的数据集,一个批次就是一类的所有图片
    batch = next(iter(dataloader))
    # 由于我们的批次已经是对应类别的所有图片,只需要从中随机抽取指定数量的样本
    selected_images = [batch[0][i] for i in random.sample(range(samples_per_class), samples_per_class)]
    images.extend(selected_images)

# 整理形式
images_grid = torchvision.utils.make_grid(images, nrow=10)

 在cmd中运行

tensorboard --logdir=runs

当然,要特别的注意:要在自己的代码文件目录下打开cmd运行这行命令;

 然后,copy

http://localhost:6006/

上述网址到浏览器中,访问,便能得到想要的第一张图了。  

联合分布图

sns.pairplot 是 seaborn 库中的一个功能,它用于绘制多变量数据集的联合分布图。Pairplot 通过创建一个矩阵式的图表布局,展示数据集中每一对数值型变量之间的关系,并在对角线上显示每个变量自身的单变量分布。

具体来说,sns.pairplot() 会执行以下操作:

  1. 对于数据集中任意两个数值型特征(列),它会绘制一个散点图或线性回归拟合线,以展示这两个特征之间的二维关系。
  2. 当某一对特征中存在分类变量时,它可能会使用不同颜色或标记形状来区分不同类别,并在同一幅散点图上展示不同类别的分布情况。
  3. 在对角线上,它会为每个数值型特征绘制单变量的直方图、核密度估计图或其他形式的分布图,帮助观察各个特征本身的分布特性。

通过 pairplot 可以快速概览整个数据集各变量间的相关性和分布特点,这对于数据探索(EDA, Exploratory Data Analysis)阶段非常有用,可以初步发现潜在的数据模式和异常值等信息

 

 

我们来看代码

_ = sns.pairplot(data=df, hue='species', diag_kind='kde',kind='hist')#'scatter', 'kde', 'hist', 'reg'

 当然可以修改其中的相关参数,然后达到搞出不同的、自己想要的那种图 

来画小提琴图

而且还是子图,并且还是优化后的子图,看到就是赚到。

fig, axes = plt.subplots(2, 2, figsize=(7, 5))
for i, column in enumerate(df.columns[:-1]):
    sns.violinplot(data=df,
                   x='species',
                   y=column,
                   hue='species',
                   ax=axes[i // a, i % b])

 

<think>好的,我现在需要帮助用户解决在PyCharm中导入预处理数据集的问题。首先,我得理清用户的需求。用户可能刚接触Python数据分析,或者在PyCharm环境中处理数据集时遇到了困难。他们需要具体的步骤指导,可能包括如何导入数据、进行基本预处理以及可视化操作。 根据用户提供的引用内容,特别是引用[1]、[2]、[3],其中提到了使用Pandas、Numpy进行数据导入,以及PyTorch的DataLoader类处理数据集。因此,我需要结合这些信息,给出适合PyCharm环境的教程。 首先,导入数据集部分。用户可能需要知道如何读取不同格式的文件,比如CSV、Excel等。这里要提到Pandas的read_csv、read_excel函数,同时注意文件路径的正确设置,尤其是在PyCharm项目中可能需要相对路径或绝对路径。引用[1]中提到了数据收集导入的步骤,这部分可以作为参考。 接下来是数据预处理。常见的步骤包括处理缺失值、重复数据,数据标准化或归一化,以及特征工程。例如,使用fillna()处理缺失值,drop_duplicates()去除重复值,StandardScaler进行标准化。这些内容在引用[1]中也有涉及,需要详细说明。 然后是可视化部分,使用MatplotlibSeaborn。用户可能希望看到示例代码,比如绘制折线图、直方图等。引用[2][3]中的代码示例展示了如何使用Matplotlib显示图像,这可能对用户有帮助,但需要调整到一般数据集的可视化,而不仅仅是图像数据。 此外,用户提到PyTorch的DataLoader,这在引用[2][3]中有详细代码示例。如果用户涉及深度学习项目,可能需要指导如何将预处理后的数据转换为张量,并使用DataLoader加载。这部分需要分步骤说明,特别是数据转换批量加载的过程。 在整合这些信息时,需要注意结构清晰,分步骤讲解。同时,确保代码示例正确,并适配PyCharm环境。例如,在PyCharm中运行可能需要配置解释器或安装必要的库,这部分也应该提及,比如使用pip安装pandas、numpy等。 还需要考虑用户可能的疑问,例如如何处理不同格式的数据,预处理时的常见问题,或者可视化时的调整。因此,在步骤中加入常见问题解决方法会更好,比如文件路径错误、缺失值处理方式选择等。 最后,生成的相关问题需要与主题紧密相关,例如数据预处理的更多方法、处理大型数据集的技巧,以及深度学习中的特定预处理步骤。这些问题可以帮助用户进一步学习,符合用户请求中的要求。 总结一下,回答的结构应该是:导入数据集→预处理→可视化→深度学习中的处理(如适用),每个部分提供代码示例解释,引用相关文献,并在最后列出相关问题。</think>在PyCharm中导入预处理数据集的步骤如下,结合Python常用库(如Pandas、Numpy)深度学习框架(如PyTorch): --- ### 一、导入数据集 #### 1. 本地文件导入(CSV/Excel) 使用Pandas库读取常见格式文件: ```python import pandas as pd # 读取CSV文件 data = pd.read_csv("dataset/data.csv") # 文件路径需与项目目录对应[^1] # 读取Excel文件 data_excel = pd.read_excel("dataset/data.xlsx") ``` #### 2. 图像数据集导入(深度学习场景) 使用PyTorch的`torchvision.datasets``DataLoader`: ```python from torchvision import transforms from torch.utils.data import DataLoader import torchvision.datasets as datasets # 定义数据预处理(转为Tensor并标准化) transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,)) ]) # 加载CIFAR-10数据集 train_dataset = datasets.CIFAR10( root="./dataset", train=True, transform=transform, download=True # 自动下载数据集[^3] ) # 使用DataLoader分批次加载 train_loader = DataLoader( dataset=train_dataset, batch_size=64, shuffle=True ) ``` --- ### 二、数据预处理 #### 1. 处理缺失值与重复值 ```python # 删除包含缺失值的行 data_cleaned = data.dropna() # 用均值填充缺失值 data_filled = data.fillna(data.mean()) # 去除重复数据 data_unique = data.drop_duplicates() ``` #### 2. 数据标准化/归一化 ```python from sklearn.preprocessing import StandardScaler scaler = StandardScaler() data_scaled = scaler.fit_transform(data[["feature1", "feature2"]]) ``` #### 3. 特征工程 ```python # 创建新特征 data["new_feature"] = data["feature1"] * data["feature2"] # 类别型数据编码(One-Hot) data_encoded = pd.get_dummies(data, columns=["category_column"]) ``` --- ### 三、数据可视化 使用MatplotlibSeaborn进行探索性分析: ```python import matplotlib.pyplot as plt import seaborn as sns # 绘制特征分布直方图 plt.figure(figsize=(10,6)) sns.histplot(data["feature1"], kde=True) plt.title("特征分布可视化") plt.show() # 绘制相关性热力图 corr_matrix = data.corr() sns.heatmap(corr_matrix, annot=True) plt.show() ``` --- ### 四、深度学习数据预处理(PyTorch示例) ```python # 自定义数据集类 from torch.utils.data import Dataset class CustomDataset(Dataset): def __init__(self, features, labels, transform=None): self.features = features self.labels = labels self.transform = transform def __len__(self): return len(self.labels) def __getitem__(self, idx): sample = self.features[idx], self.labels[idx] if self.transform: sample = self.transform(sample) return sample # 将Pandas DataFrame转为PyTorch Dataset dataset = CustomDataset( features=data[["feature1", "feature2"]].values, labels=data["target"].values ) ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hellostar06

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值