机器学习-数据处理:使用corr()和scatter_matrix()函数寻找属性之间的相关性

在机器学习的数据分析阶段,找到那些和待预测量有较强关联的特征对解决问题有非常大的帮助,为解决这个问题,我们可以分别使用pandas提供的两个函数corr()和scatter_matrix()

使用corr()函数计算每对属性之间的标准相关系数

函数原型

DataFrame.corr(self, method='pearson', min_periods=1)

函数功能

计算数值列的两两相关,不包括NA或者null值,注意,也不包括非数值特征列,例如分类特征。相关系数的变化范围是从-1到1,越接近1,表示有越强的正相关;系数越接近-1表示有越强的负相关;系数越接近0表示两属性之间没有线性相关性,注意,没有线性相关性不代表没有其他非线性相关性。

函数返回的是一个相关性矩阵,正对角线的数值均为1,且为对称矩阵。

参数说明

method,表示计算相关性的方法,

可以取值{' pearson ', ' kendall ', ' spearman '},也可以是一个自定义的可调用函数名

pearson:标准相关系数;

kendall :Kendall Tau 相关系数;

spearman :斯皮尔曼等级相关

自定义函数名:自定义的函数的参数应当是两个一维的ndarray

min_periods,int类型, 可选参数

每对列得到有效结果所需的最小观察数。当前只对皮尔森和斯皮尔曼相关系数起作用。

函数例子

def histogram_intersection(a, b):

    v = np.minimum(a, b).sum().round(decimals=1)

    return v

df = pd.DataFrame([(.2, .3), (.0, .6), (.6, .0), (.2, .1)],

                  columns=['dogs', 'cats'])

df.corr(method=histogram_intersection)
      dogs  cats
dogs   1.0   0.3
cats   0.3   1.0

使用scatter_matrix()绘制散点图矩阵

通过corr()可以得到线性相关性的数值关系,不够形象,通常可以在使用corr之后再使用scatter_matrix绘制出图像,通过散点图更加直观的看见属性之间的联系

函数原型

pandas.plotting.scatter_matrix(frame, alpha=0.5, figsize=None, ax=None, grid=False, diagonal='hist', marker='.', density_kwds=None, hist_kwds=None, range_padding=0.05, **kwargs)

参数说明

函数举例

df = pd.DataFrame(np.random.randn(1000, 4), columns=['A','B','C','D'])
scatter_matrix(df, alpha=0.2)

两个函数的使用

假如现在要预测某地区的房价,现在受若干因素影响,第一步,我们应该首先找出有明显线性相关的因素,便于后面的训练,可以使用corr()函数计算相关系数。

假定housing中包含了训练集数据

corr_matrix = housing.corr()

# 此时corr_matrix为一个对称的相关性矩阵,我们可以只看某一列的结果,也就是某因素受其他因素的影响
# 这里我们关心的是房价中位数
corr_matrix["median_house_value"].sort_values(ascending=False)

我们现在了解到,影响房价的关键因素有:收入的中位数,纬度等,然后可借助scatter_matrix函数绘制图像,更加直观的看到结果

from pandas.plotting import scatter_matrix

attributes = ["median_house_value", "median_income", "total_rooms",
              "housing_median_age"]
scatter_matrix(housing[attributes], figsize=(12, 8))
save_fig("scatter_matrix_plot")

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值