1.相关矩阵(Correlation Matrix)

删除相关变量以改进模型是必要的。可以使用pandas“.corr()”函数找到相关性,并可以使用plotly express可视化相关性矩阵。相关代码如下:

1
2
import plotly.express as px
px.imshow(df.corr(),title="Correlation Plot of the Heat Failure Prediction")

数据分析相关代码:

1
2
import seaborn as sns
sns.pairplot(df,hue="HeartDisease")

这段代码使用Seaborn库中的pairplot函数,用于绘制数据集中各个变量之间的散点图和直方图,并且根据“HeartDisease”变量的不同取值对数据进行分组,以不同颜色来表示。

具体来说,df是一个数据框,包含多个变量(列),pairplot函数会对每两个变量之间进行散点图和直方图的绘制。hue参数指定了用于分组的变量名,即“HeartDisease”,如果数据集中有该变量,则会根据该变量的取值来对数据进行分组,以不同颜色来表示。如果数据集中没有该变量,则会忽略该参数。

1
2
import seaborn as sns
sns.histplot(df[col],kde=True)

这行代码使用 Seaborn 库中的 histplot 函数,绘制数据框 df 中指定列 col 的直方图。kde=True 表示同时绘制核密度估计曲线。核密度估计是一种通过对数据进行平滑处理来估计概率密度函数的方法,可以更好地展示数据的分布情况。

2.特征缩放(Feature Scaling)

特征缩放是指对数据集中的特征进行缩放,使得所有特征都处于相同的尺度范围内,以便更好地应用于机器学习算法中。在进行特征缩放之前,不同的特征可能具有不同的尺度,例如某些特征可能是小数,而另一些特征可能是整数或非常大的数字。这会导致模型在学习时对不同特征的权重分配不均,从而影响模型的性能。

常见的特征缩放方法包括:

  1. 标准化(Standardization):将特征缩放到均值为0,方差为1的标准正态分布中,使得特征的取值范围在[-3,3]之间。

  2. 归一化(Normalization):将特征缩放到[0,1]之间,使得特征的取值范围在[0,1]之间。

  3. 对数变换(Log transformation):对特征进行对数变换,使得特征的取值范围更加均匀分布。

通过特征缩放,可以提高模型的性能,使得模型更加准确地预测结果。

如何选择标准化还是归一化?

  • 当知道数据的分布不遵循高斯分布时,可以使用归一化。这在不假设任何数据分布的算法(如K-最近邻和神经网络)中是有用的。

  • 另一方面,在数据遵循高斯分布的情况下,标准化可能会有所帮助。然而,这并不一定是真的。此外,与标准化不同,标准化没有边界范围。因此,即使您的数据中有异常值,它们也不会受到标准化的影响。

3.文本特征编码

1.Label Encoding——-For Tree based Machine Learning Algorithms

1
2
from sklearn.preprocessing import LabelEncoder
df_tree = df.apply(LabelEncoder().fit_transform)

这行代码的作用是将 DataFrame(df)中的所有列进行标签编码(Label Encoding)处理,并返回一个新的 DataFrame(df_tree)。

具体来说,LabelEncoder() 是一个类,它将字符串标签转换为数字编码。.fit_transform() 方法将 DataFrame 中的每一列都进行标签编码,并返回一个新的 DataFrame。因为这里使用了 .apply() 方法,所以每一列都会被依次处理。

标签编码是将不连续的数字或文本转换为连续的数字编码的过程。例如,如果一个列中有三个不同的字符串标签:“red”、“green”和“blue”,则标签编码后会分别转换为 0、1 和 2。这种编码方式通常用于将分类数据转换为数值数据,以便在机器学习算法中使用。

2.One Hot Encoding—–For not Tree based Machine Learning Algorithms

1
2
#pd.get_dummies()
df_nontree=pd.get_dummies(df,columns=string_col,drop_first=False)

这段代码使用pandas中的get_dummies()函数,将数据框df中的string_col列进行one-hot编码,并将编码结果添加到新的数据框df_nontree中。其中,drop_first参数为False表示不删除第一类别,即生成所有类别的编码列。