阅读 107

特征筛选,归一化操作(SelectKBest,随机森林)PCA降维

## 特征筛选,归一化操作(SelectKBest,随机森林)PCA降维

SelectKBest和卡方检验,随机森林算法降维,归一化操作。

**(1)读取数据,分为特征和label值**。

```python

from sklearn.feature_selection import SelectKBest

from sklearn.feature_selection import chi2

import pandas as pd

content=pd.read_csv('dynamic.csv')

x=content.iloc[:,0:-1]  ##x为特征

y=content.iloc[:,-1]    ##y 为label值标签

x.fillna(0,inplace=True)  ##对数据空值简单用0代替,没有做特别详细预处理

```

随机森林算法和SelectKBest中对特征降维在归一化有很大的不同,随机森林是决策树不需要进行归一化/标准化操作。 概率形的算法需要对数据进行归一化,可以加快算法的运行与迭代。SelectKBest算法需要进行归一化。

**(2)采取归一化操作**

1.max-min 归一化方法

```python

for i in x.columns:

  # 获取各个指标的最大值和最小值

    Max = np.max(x[i])

    Min = np.min(x[i])

    x[i] = (x[i] - Min)/(Max - Min)

```

2.Z-Score标准化

```python

from sklearn import preprocessing

zscore = preprocessing.StandardScaler()

# 实例化Z-Score标准化方法

zscores = zscore.fit_transform(x)

# 对数据进行标准化操作

```

两者最大的区别在于,Z-Score标准化可以处理符合正态分布的数据,max-min方法容易受到极端值数据影响,比较适合均匀分布的数据,所以在选定方法之前必须要验证数据符合什么分布。

**(3)验证是否符合正态分布**

```python

import matplotlib.pyplot as plt

import seaborn as sns

for i in x.columns:

    sns.distplot(x[i], rug=True, hist=False)

    plt.show()

####画出图像观察图像就知道是否符合正态分布

```

<img src="https://img-blog.csdnimg.cn/20210328232753875.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NzMyNDU5NA==,size_16,color_FFFFFF,t_70#pic_center" width=50%/>

**(4)随机森林算法进行特征重要性排名:**

```python

# 随机森林算法对y label重要性排名

column_list = x.columns.tolist()

clf=RandomForestRegressor()

clf.fit(x,y)

importance = clf.feature_importances_

# print(importance)

indices = np.argsort(importance)[::-1]

# print(indices)

list22=[]

for i in indices:

    list22.append(column_list[i])

```

(5)用selectbest算法进行重要性排名筛选前三十名

```python

model=SelectKBest(chi2,k=30)

x_new=model.fit_transform(x,y)

scores=model.scores_

# 按重要性排序,选出最重要的 k 个

indices = np.argsort(scores)[::-1]

k_best_list=[]

for i in range(0,30):

    k_best_features = x.columns[indices[i]]

    k_best_list.append(k_best_features)

print('k best features are: ',k_best_list)

```

这样就完成了保存原来特征的维度下降,还有模糊原来特征主成分分析法等方法。

(6)PCA 降维模糊特征:

```python

pca=PCA(n_components=0.9)

pca=pca.fit(df[k_best_list])

x_dr=pca.transform(df[k_best_list])

```

n_components是反应原来数据的百分之多少可以通过几种方式,当它是0.9表示反应原本数据的百分之多少,数据会被降成几维我们不清楚。n_components=3.表达将维度降维3个维度。这些都是融合特征没有原来的物理意义了。

这对我很重要呜呜呜

<img src="https://img-blog.csdnimg.cn/20210328224923898.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NzMyNDU5NA==,size_16,color_FFFFFF,t_70#pic_center," width=50%/>

作者:默_11b9

原文链接:https://www.jianshu.com/p/0997fe730934

文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐