用皮尔森相关系数进行特征选择的代码
时间: 2024-06-08 13:09:27 浏览: 153
下面是使用皮尔森相关系数进行特征选择的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. 输出所选特征的名称。
注意:这个例子只是一个演示,实际应用中需要根据具体问题做出相应的调整。
阅读全文