先解释下什么叫数据的相关性:

计算两个数组的平均值,如果两个数组中的两个值都大于平均值或者都小于平均值,则得到true. 如果一个大于平均值一个小于平均值,则得到false.最后计算true和false的个数.

比如,两个数组[1, 2, 3, 4] and [4, 5, 6, 7] , 得到 (4, 0). 因为 1 和 4 都低于他们所在数组的平均值, 2 和 5 也都低于他们所在数组的平均值, 3 和 6 都高于他们所在数组的平均值, 4 和 7 也都高于他们所在数组的平均值.所以计算结果为true的有4个,false的为0.

如果数组是[1, 2, 3, 4] and [7, 6, 5, 4], 那结果就是 (0, 4). 因为 1 低于他所在数组的平均值而 7 高于们所在数组的平均值, 其它几项也类似...

一个栗子:

比如有如下数据,20个城市的人均寿命和城市的gdp,计算寿命和gdp的相关性就是,计算是否寿命较高的城市,gdp也会较高,寿命较低,gdp也较低...就是说,gdp和寿命,是否相关...如果计算得到的true比较多,那就是表示是相关的,如果得到的false比较多,那就表示不相关.

countries = ['Albania', 'Algeria', 'Andorra', 'Angola', 'Antigua and Barbuda',

'Argentina', 'Armenia', 'Australia', 'Austria', 'Azerbaijan',

'Bahamas', 'Bahrain', 'Bangladesh', 'Barbados', 'Belarus',

'Belgium', 'Belize', 'Benin', 'Bhutan', 'Bolivia']

life_expectancy_values = [74.7, 75. , 83.4, 57.6, 74.6, 75.4, 72.3, 81.5, 80.2,

70.3, 72.1, 76.4, 68.1, 75.2, 69.8, 79.4, 70.8, 62.7,

67.3, 70.6]

gdp_values = [ 1681.61390973, 2155.48523109, 21495.80508273, 562.98768478,

13495.1274663 , 9388.68852258, 1424.19056199, 24765.54890176,

27036.48733192, 1945.63754911, 21721.61840978, 13373.21993972,

483.97086804, 9783.98417323, 2253.46411147, 25034.66692293,

3680.91642923, 366.04496652, 1175.92638695, 1132.21387981]

life_expectancy = pd.Series(life_expectancy_values)

gdp = pd.Series(gdp_values)

# 计算相关性的函数

defvariable_correlation(pd_1, pd_2):

pd_1_mean=pd_1.mean()

pd_2_mean=pd_2.mean()

# 都高于平均值或都低于平均值的,得到true,一个高一个低的,得到false

result_series= ((pd_1 > pd_1_mean) &\

(pd_2> pd_2_mean)) |\

((pd_1< pd_1_mean) &\

(pd_2

# 计算true的个数

num_same_direction=result_series.sum()

# 计算false的个数

num_different_direction= len(result_series) - num_same_directionreturn(num_same_direction,num_different_direction)print(variable_correlation(life_expectancy,gdp))

# 结果

(17,3)

说明寿命和gdp是相关的.

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐