数据预处理之特征选择(Feature Selections Methods)

        在机器学习领域,数据预处理对于我们之后的数据训练起着非常关键的作用,Feature Selections 作为数据预处理中非常重要的一个步骤,可以说他起着决定性的作用,那么今天我们就来探究一下几种数据预处理的方法(我们选取Python语言以及他的Sklearn机器机器学习库,以及Penrose_Hourly AggregateData_Jan2016Dec2020(这个数据是2020年空气PM2.5含量的数据,我们能够对PM2.5的含量进行回归预测根据其他的属性和指标),作为我们的测试数据,我们来进行演示)。

        首先我们能够使用Pandas为我们封装好的corr方法进行数据相关性的排序,然后对数据进行选择,pandas的corr提供三种方法计算数据相关性,分别是:

        pearson, kendall,spearman

Pearson:公式自行百度,我这里主要介绍怎么用以及计算出来的结果是什么。

import pandas as pd
import numpy as np

path = '../data/Penrose_Hourly AggregateData_Jan2016Dec2020 (1).csv'
air_data = pd.read_csv(path)
#handler na
air_datas = air_data.dropna()
#features selection use spearman or pearson
corr = air_datas.corr()

        使用以上的代码,我们就能够从pandas中读取数据,调用corr方法,计算相关度,当我们默认什么也不传的时候直接调用的就是Pearson相关性方法对数据进行相关性计算,计算出来的结果如下:

         如上图所示就是计算出来的记过,其中我们会发现,我画红线的地方,每行每列对应一个数据,他是一个二位矩阵,每一个数字代表的意思就是这列和这行的相关性,比如(Air Temp,Air Temp)就是代表的Air Temp和Air Temp的相关性,因为air temp和自己的相关性是1 所以计算的没有毛病。比如说第二个(Air Temp,Relative Humidity)就代表Air Temp和Relative Humidity的相关性,同时我们还可以发现他是一个对称的矩阵,我们也可以只用一个上三角矩阵来表示它,或者只用一个下三角矩阵去表示它。

air_data = pd.read_csv(path)
#handler na
air_datas = air_data.dropna()
#features selection use spearman or pearson
corr = air_datas.corr('spearman')

        同时我们还能用,spearman方法计算相关性,只需要后面填入spearman就可以了。他的结果和Pearson的结果一样,都是一个对称矩阵。

        以上就是两个Pandas为我们提供的计算方法,同时Sklearn里面也封装这两个方法,我们只需要调用相关的函数和pandas的结果差不多,都是一个对称矩阵。

        下面介绍Sklearn的SelectKBest这个类也为我们封装了很多的计算相关性的方法,这些方法也能用于Feature Selection,以下代码:

from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2,f_regression

# columns =  [i for i in air_datas]
#带预测的值 是PM2.5 所以我们把PM2.5作为y放入
y = air_datas["PM2.5"]
#提取"PM2.5","Timestamp (UTC+12:00)" 一个是带预测的值,一个是时间没有相关性。
X = air_datas.drop(["PM2.5","Timestamp (UTC+12:00)"],axis=1)


# apply SelectKBest class to extract top 10 best features
bestfeatures = SelectKBest(score_func=f_regression, k=5)
fit = bestfeatures.fit(X,y)
dfscores = pd.DataFrame(fit.scores_)
dfcolumns = pd.DataFrame(X.columns)
featureScores = pd.concat([dfcolumns,dfscores],axis=1)
featureScores.columns = ['Specs','Score'] 
# print(featureScores.nlargest(5,'Score'))

dict_feature_selected = featureScores.nlargest(5,'Score').to_dict()
specs_names_dict = dict_feature_selected["Specs"]
specs_names = [specs_names_dict[i] for i in specs_names_dict]

        这个代码借助Sklearn的SelectKBest去进行Feature Selection,同时他的第一个参数就是我们设置的评估函数,我们能够设置:chi2,f_regression,chi2,f_oneway这几个函数作为我们的评估函数,对数据进行评估。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值