相关性超过多少就删掉特征
时间: 2023-09-30 07:09:24 浏览: 60
这个问题没有一个确定的答案,因为相关性的阈值取决于数据集的特点和具体问题的需求。一般来说,当两个特征之间的相关性超过0.9或0.95时,可以考虑删除其中一个特征。但是,一些特征可能对模型的性能有重要贡献,即使它们之间的相关性很高,也不应该轻易删除。因此,建议在删除特征之前,应该进行一定的实验和分析,评估删除特征对模型性能和解释性的影响。
相关问题
python采用数据相关性计算方法,对glass.csv数据集的不同属性之间的相关性进行计算。对于相关性超过阈值的属性,采用数据预处理技术对重复记录进行处理。
好的,这个任务可以分为以下几个步骤:
1. 导入需要的库和数据集
```python
import pandas as pd
import numpy as np
# 导入glass.csv数据集
data = pd.read_csv("glass.csv")
```
2. 计算不同属性之间的相关性
```python
corr_matrix = data.corr()
```
这里使用`corr()`方法来计算相关性矩阵,得到一个$n\times n$的矩阵,其中$n$为数据集中属性的个数。
3. 设定相关性的阈值,找出相关性超过阈值的属性
```python
threshold = 0.8
corr_list = []
for i in range(len(corr_matrix)):
for j in range(i):
if abs(corr_matrix.iloc[i, j]) > threshold:
corr_list.append((corr_matrix.columns[i], corr_matrix.columns[j], corr_matrix.iloc[i, j]))
```
这里设定阈值为0.8,遍历相关性矩阵,找出绝对值大于0.8的相关性,将其存储在`corr_list`中,每个元素是一个元组,表示两个相关的属性和它们之间的相关系数。
4. 对重复记录进行处理
使用数据预处理技术来处理重复记录,这里可以使用`drop_duplicates()`方法来删除重复记录,该方法会保留第一个出现的记录,将其余的记录删除。
```python
data.drop_duplicates(inplace=True)
```
这里使用了`inplace=True`来直接修改原始数据集。
完整代码如下:
```python
import pandas as pd
import numpy as np
# 导入glass.csv数据集
data = pd.read_csv("glass.csv")
# 计算不同属性之间的相关性
corr_matrix = data.corr()
# 设定相关性的阈值,找出相关性超过阈值的属性
threshold = 0.8
corr_list = []
for i in range(len(corr_matrix)):
for j in range(i):
if abs(corr_matrix.iloc[i, j]) > threshold:
corr_list.append((corr_matrix.columns[i], corr_matrix.columns[j], corr_matrix.iloc[i, j]))
# 对重复记录进行处理
data.drop_duplicates(inplace=True)
```
pandas correlation函数批量删除
在pandas中,可以使用correlation函数来计算数据集中每对列之间的相关性。然而,并没有现成的方法来批量删除相关性较高的列。要实现批量删除相关性较高的列,可以采取以下步骤:
1. 使用correlation函数计算数据集中每对列的相关系数矩阵。该矩阵是一个对称矩阵,对角线上的元素为1。相关性越高,相关系数越接近于1或-1。
2. 创建一个空的布尔矩阵,大小与相关系数矩阵相同。将布尔矩阵中的元素初始化为False。
3. 遍历相关系数矩阵的每个元素,如果某个元素的绝对值大于设定阈值(比如0.8),则将对应的布尔矩阵元素设为True,表示相关性较高。
4. 对布尔矩阵进行操作,将具有True值的整列删除。
以下是一个简单的示例代码来批量删除相关性较高的列:
```python
import pandas as pd
import numpy as np
# 创建一个示例数据集
data = pd.DataFrame({'A': [1, 2, 3, 4, 5],
'B': [2, 4, 6, 8, 10],
'C': [3, 6, 9, 12, 15],
'D': [4, 8, 12, 16, 20]})
# 计算相关系数矩阵
corr_matrix = data.corr()
# 创建布尔矩阵
bool_matrix = np.abs(corr_matrix) > 0.8
# 删除相关性较高的列
data = data.loc[:, ~bool_matrix.any()]
```
在这个示例中,相关系数矩阵将会是一个2x2的对角矩阵,因为没有相关性超过阈值的列对。删除相关性较高的列后,data将只剩下两列:'A'和'D'。
相关推荐
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)