Python Victor-DAY 8 标签编码与连续变量处理
2026/7/31 3:22:16 网站建设 项目流程

知识点复盘:

  1. 字典的简单介绍(增删查改)
  2. 标签编码(字典的映射)
  3. 对独热编码的深入理解----n个不相关变量只有n-1个自由的
  4. 连续特征的处理:归一化和标准化----一般选一个即可,谁好谁坏做了才知道,除非有先验知识。

至此,常见的预处理方式都说完了

作业:对心脏病数据集的特征用上述知识完成,一次性用所有的处理方式完成预处理,包括

  1. 缺失值的处理
  2. 离散特征的编码
  3. 连续特征的归一化or标准化
  4. 数据可视化(单特征、单特征与标签)
import pandas as pd data = pd.read_csv(r'D:\课程\课程文件1\pythonstudy\pythonx训练营\python-60days-challenge\heart.csv') data.head()

输出

缺失值的处理

data.isnull()

输出

data.head()

输出

离散特征的编码

data.columns

输出

print(data.dtypes)

输出

for discrete_features in data.columns: if data[discrete_features].dtype == 'object': print(discrete_features)
data['age']

data['age'].value_counts()

整合

连续特征的归一化or标准化

数据可视化(单特征、单特征与标签)

# 手动实现归一化 def manual_normalize(data): min_val = data.min() max_val = data.max() normalized_data = (data - min_val) / (max_val - min_val) return normalized_data data['sex'] = manual_normalize(data['sex']) data['sex'].head()

输出

0 1.0 1 1.0 2 0.0 3 1.0 4 0.0 Name: sex, dtype: float64
# 使用sklearn进行归一化处理 from sklearn.preprocessing import StandardScaler, MinMaxScaler data = pd.read_csv(r'D:\课程\课程文件1\pythonstudy\pythonx训练营\python-60days-challenge\heart.csv') min_max_scaler = MinMaxScaler() data['sex'] = min_max_scaler.fit_transform(data[['sex']]) data['sex'].head

输出

<bound method NDFrame.head of 0 1.0 1 1.0 2 0.0 3 1.0 4 0.0 ... 298 0.0 299 1.0 300 1.0 301 1.0 302 0.0 Name: sex, Length: 303, dtype: float64>
# 使用sklearn进行标准化处理 data = pd.read_csv(r'D:\课程\课程文件1\pythonstudy\pythonx训练营\python-60days-challenge\heart.csv') scaler = StandardScaler() data['sex'] = scaler.fit_transform(data[['sex']]) data['sex'].head()

输出

0 0.681005 1 0.681005 2 -1.468418 3 0.681005 4 -1.468418 Name: sex, dtype: float64

数据可视化

单特征

单特征与标签的关系

plt.figure(figsize=(12, 6)) sns.violinplot(x='age', y='chol', data=data, scale='width', inner='quartile')#把年龄(age)当横轴分组,胆固醇(chol)当纵轴连续量,画“小提琴”——左右鼓包表示每个年龄组里 chol 的分布形状,宽度代表样本量。 plt.title('Cholesterol vs. age') plt.xlabel('Age (years)') plt.ylabel('Cholesterol (mg/dL)') plt.tight_layout() plt.show()

输出

import seaborn as sns import matplotlib.pyplot as plt plt.figure(figsize=(8, 5)) # 1. 只画 KDE 轮廓,填不填都可以 sns.kdeplot(data=data, x='chol', hue='target', fill=True, # 填色更直观 bw_adjust=0.7, # 平滑度 common_norm=False,# 各自积分=1,方便比较形状 palette='Set2') # 2. 细节美化 plt.title('Cholesterol distribution by Heart Disease') plt.xlabel('Cholesterol (mg/dL)') plt.ylabel('Density') plt.legend(title='Heart Disease', labels=['No', 'Yes']) plt.tight_layout() plt.show()

输出

@浙大疏锦行

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询