知识点见示例代码
- 字典的简单介绍
- 标签编码
- 连续特征的处理:归一化和标准化
至此,常见的预处理方式都说完了
作业:对心脏病数据集的特征用上述知识完成,一次性用所有的处理方式完成预处理,尝试手动完成,多敲几遍代码。
由于所给数据集已是处理过的数据集,以下将按所给数据集的处理情况对连续特征进行归一化和标准化。
首先观察数据,需处理数据共有5列,分别是:age,trestbps,chol,thalach,oldpeak.
归一化
先以trestbps和chol为例
# 对trestbps列做归一化,手动构建函数实现
# 自行学习下如何创建函数,这个很简单很常用
def manual_normalize(data):
"""
此函数用于对输入的数据进行归一化处理
:param data: 输入的一维数据(如 Pandas 的 Series)
:return: 归一化后的数据
"""
min_val = data.min()
max_val = data.max()
normalized_data = (data - min_val) / (max_val - min_val)
return normalized_data
data['trestbps'] = manual_normalize(data['trestbps'])
data['trestbps'].head()
#输出:
#0 0.481132
#1 0.339623
#2 0.339623
#3 0.245283
#4 0.245283
#Name: trestbps, dtype: float64
# 借助sklearn库进行归一化处理
from sklearn.preprocessing import StandardScaler, MinMaxScaler
data = pd.read_csv("python60-days-challenge-master\heart.csv")# 重新读取数据
# 归一化处理
min_max_scaler = MinMaxScaler() # 实例化 MinMaxScaler类,之前课上也说了如果采取这种导入函数的方式,不需要申明库名
data['chol'] = min_max_scaler.fit_transform(data[['chol']])
data['chol'].head()
#输出:
#0 0.244292
#1 0.283105
#2 0.178082
#3 0.251142
#4 0.520548
#Name: chol, dtype: float64
接下来只需替换变量名即可实现全部变量归一化。
标准化
以age为例
# 标准化处理
data = pd.read_csv("python60-days-challenge-master\heart.csv")# 重新读取数据
scaler = StandardScaler() # 实例化 StandardScaler,
data['age'] = scaler.fit_transform(data[['age']])
data['age'].head()
#输出:
#0 0.952197
#1 -1.915313
#2 -1.474158
#3 0.180175
#4 0.290464
#Name: age, dtype: float64
其余变量同理也仅需执行此操作。