spearman特征选择python代码
时间: 2023-09-09 15:10:24 浏览: 80
以下是使用Spearman相关系数进行特征选择的Python代码示例:
```python
import pandas as pd
import numpy as np
from scipy.stats import spearmanr
# 读取数据
data = pd.read_csv("data.csv")
# 分离出特征和标签
X = data.iloc[:, :-1]
y = data.iloc[:, -1]
# 计算Spearman相关系数
correlations = []
for i in range(X.shape[1]):
corr, _ = spearmanr(X.iloc[:, i], y)
correlations.append(corr)
# 将相关系数和特征名对应起来
correlations = np.array(correlations)
features = np.array(X.columns)
correlations_df = pd.DataFrame({'feature': features, 'correlation': correlations})
# 按照相关系数的绝对值从大到小排序
correlations_df = correlations_df.reindex(correlations_df['correlation'].abs().sort_values(ascending=False).index)
# 选取相关系数绝对值最大的前k个特征
k = 10
selected_features = correlations_df.iloc[:k, 0].values
print("Selected features:", selected_features)
```
在这个示例代码中,我们读取了一个名为 `data.csv` 的数据集,将其分离为特征和标签。然后,我们使用 `spearmanr` 函数计算每个特征和标签之间的Spearman相关系数,并将其存储在一个数组中。接着,我们将特征名和相关系数对应起来,并按照相关系数的绝对值从大到小排序。最后,我们选取相关系数绝对值最大的前k个特征作为选定的特征。
阅读全文