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

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

交流学术思想,加入Q群 号:815783932

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

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

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 归一化方法


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标准化


from sklearn import preprocessing

zscore = preprocessing.StandardScaler()
# 实例化Z-Score标准化方法
zscores = zscore.fit_transform(x)
# 对数据进行标准化操作

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

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

import matplotlib.pyplot as plt
import seaborn as sns
for i in x.columns:
    sns.distplot(x[i], rug=True, hist=False)
    plt.show()
####画出图像观察图像就知道是否符合正态分布

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

# 随机森林算法对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算法进行重要性排名筛选前三十名

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 降维模糊特征:

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个维度。这些都是融合特征没有原来的物理意义了。

这对我很重要呜呜呜

  • 9
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

普普通通研究生学代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值