【068】特征选择之 pearson 皮尔森系数 PimaIndiansdiabetes

本文介绍了皮尔森相关系数在分析Pima Indians diabetes数据集时的应用,探讨了如何处理缺失值,通过可视化和计算相关性来理解特征与糖尿病之间的关系。虽然没有强烈的线性相关性,但数据表明血糖水平与糖尿病结果有正相关性。
摘要由CSDN通过智能技术生成

内容目录

一、pearson 皮尔森系数介绍二、pearson 皮尔森应用三、对皮尔森相关系数的通俗解

一、pearson 皮尔森系数介绍

        皮尔森相关系数是一种最简单的,能帮助理解特征和响应变量之间关系的方法,该方法衡量的是变量之间的线性相关性,结果的取值区间为[-1,1],-1表示完全的负相关,+1表示完全的正相关,0表示没有线性相关。

  Pearson Correlation速度快、易于计算,经常在拿到数据(经过清洗和特征提取之后的)之后第一时间就执行。Scipy的 pearsonr 方法能够同时计算 相关系数 和p-value。

优点:可以通过数字对变量的关系进行度量,并且带有方向性,1表示正相关,-1表示负相关,可以对变量关系的强弱进行度量,越靠近0相关性越弱。

缺点:无法利用这种关系对数据进行预测,简单的说就是没有对变量间的关系进行提炼和固化,形成模型。要利用变量间的关系进行预测,需要使用到下一种相关分析方法,回归分析。

使用场景:当两个变量的标准差都不为零时,相关系数才有定义,皮尔逊相关系数适用于:

  • 两个变量之间是线性关系,都是连续数据。

  • 两个变量的总体是正态分布,或接近正态的单峰分布。

  • 两个变量的观测值是成对的,每对观测值之间相互独立。

        相关系数也可以看成两个变量X、Y之间的协方差乘积和两者标准差乘积的比值:一种剔除了两个变量量纲影响、标准化后的特殊协方差

二、pearson 皮尔森应用

# numpy和panda用于数据操作
import numpy as np
import pandas as pd
df = pd.read_csv('.\PimaIndiansdiabetes.csv')
df.head()
   Pregnancies  Glucose  BloodPressure  SkinThickness  Insulin   BMI  DiabetesPedigreeFunction  Age  Outcome
0            6      148             72             35        0  33.6                     0.627   50        1
1            1       85             66             29        0  26.6                     0.351   31        0
2            8      183             64              0        0  23.3                     0.672   32        1
3            1       89             66             23       94  28.1                     0.167   21        0
4            0      137             40             35      168  43.1                     2.288   33    
下面是使用皮尔森相关系数进行特征选择的Python代码: ```python import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt from sklearn.datasets import load_boston from sklearn.feature_selection import SelectKBest from sklearn.feature_selection import f_regression boston = load_boston() df = pd.DataFrame(boston.data, columns=boston.feature_names) df['MEDV'] = boston.target # Compute the correlation matrix corr = df.corr() # Generate a mask for the upper triangle mask = np.triu(np.ones_like(corr, dtype=bool)) # Set up the matplotlib figure f, ax = plt.subplots(figsize=(11, 9)) # Generate a custom diverging colormap cmap = sns.diverging_palette(230, 20, as_cmap=True) # Draw the heatmap with the mask and correct aspect ratio sns.heatmap(corr, mask=mask, cmap=cmap, vmax=.3, center=0, square=True, linewidths=.5, cbar_kws={"shrink": .5}) # Using Pearson correlation coefficient for feature selection X = df.drop('MEDV', axis=1) y = df['MEDV'] selector = SelectKBest(f_regression, k=5) selector.fit(X, y) # Get the columns to keep cols = selector.get_support(indices=True) # Create a new DataFrame with the selected features X_new = X.iloc[:,cols] # Print the selected features print(X_new.columns) ``` 解释: 1. 导入必要的库,包括Pandas、NumPy、Seaborn和Matplotlib。 2. 从Scikit-learn的数据集中加载波士顿房价数据集,并将其转换为Pandas DataFrame。 3. 计算特征之间的相关性矩阵。 4. 生成一个上三角形掩码,用于绘制热图时隐藏下三角。 5. 设置绘图的大小和颜色映射。 6. 用Seaborn绘制热图,并使用上面生成的掩码隐藏下三角。 7. 用Pearson相关系数进行特征选择。首先定义自变量X和因变量y,然后使用SelectKBest类和f_regression函数进行特征选择。在这里,我们选择了五个最相关的特征。 8. 获取要保留的列的索引。 9. 创建一个新的DataFrame,其中包含所选特征。 10. 输出所选特征的名称。 注意:这个例子只是一个演示,实际应用中需要根据具体问题做出相应的调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值