日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据特征分析-相关性分析

發布時間:2023/11/29 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据特征分析-相关性分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

相關性分析是指對兩個或多個具備相關性的變量元素進行分析,從而衡量兩個變量的相關密切程度。

相關性的元素之間需要存在一定的聯系或者概率才可以進行相關性分析。

相關系數在[-1,1]之間。

一、圖示初判

通過pandas做散點矩陣圖進行初步判斷

df1 = pd.DataFrame(np.random.randn(200,4)*100,columns=['A','B','C','D']) pd.plotting.scatter_matrix(df1,figsize=(12,12),diagonal='kde',marker='o',range_padding=0.1)

?

二、Pearson相關系數(皮爾森相關系數)

前提條件:數據滿足正太分布

皮爾森相關系數,也稱皮爾森積矩相關系數,是一種線性相關關系。

衡量向量相似度的一種方法,輸出范圍為-1到1,0,0代表無相關性,負值為負相關,正值為正相關。

公式意義:分子為,(x-x的均值) 乘以 (y-y的均值)的累計和;分母為,(x-x的均值)的累計和的平方根 乘以 (y-y的均值)的累計和的平方根

|r| <= 0.3? → 不存在線性相關

0.3 < |r| <= 0.5? → 低度線性相關

0.5 < |r| <= 0.8? → 顯著線性相關

|r| > 0.8? → 高度線性相關

?

1.皮爾森相關系數的推導

from scipy import stats s1 = pd.Series(np.random.rand(100)*100).sort_values() s2 = pd.Series(np.random.rand(100)*50).sort_values() df = pd.DataFrame({'value1':s1.values,'value2':s2.values}) u1,u2 = df['value1'].mean(),df['value2'].mean() std1,std2 = df['value1'].std(),df['value2'].std() print('value1正太性檢驗結果:',stats.kstest(df['value1'],'norm',(u1,std1))) #需要先驗證滿足正太分布 print('value2正太性檢驗結果:',stats.kstest(df['value2'],'norm',(u2,std2)))df['(x-u1)*(y-u2)'] = (df['value1'] - u1) * (df['value2'] - u2) df['(x-u1)**2'] = (df['value1'] - u1) ** 2 df['(y-u2)**2'] = (df['value2'] - u2) ** 2 print(df.head(3)) r = df['(x-u1)*(y-u2)'].sum()/(np.sqrt(df['(x-u1)**2'].sum()) * np.sqrt(df['(y-u2)**2'].sum())) print('皮爾森相關系數為%.4f'%r) value1正太性檢驗結果: KstestResult(statistic=0.09073501372253845, pvalue=0.36300244109659735) value2正太性檢驗結果: KstestResult(statistic=0.11608587123064174, pvalue=0.12471026010748129)value1 value2 (x-u1)*(y-u2) (x-u1)**2 (y-u2)**2 0 2.727329 0.101045 1163.135987 1864.420003 725.633345 1 4.566353 0.296802 1105.504546 1708.987866 715.125206 2 6.132681 0.308134 1063.167351 1581.937521 714.519254 皮爾森相關系數為0.9699 結果輸出

?

2.pandas的corr()方法

上述方法為計算過程,可使用pandas的corr()方法直接生成相關系數矩陣

s1 = pd.Series(np.random.rand(100)*100).sort_values() s2 = pd.Series(np.random.rand(100)*50).sort_values() df = pd.DataFrame({'value1':s1.values,'value2':s2.values}) r = df.corr() #參數默認為pearson print(r) # value1 value2 # value1 1.000000 0.988596 # value2 0.988596 1.000000

?

三、Sperman秩相關系數(斯皮爾曼相關系數)

皮爾森相關系數只能用于分析服從正態分布的連續變量的相關性,對于不服從正態分布的變量,可采用Sperman秩相關系數進行相關性分析。

Sperman秩相關系數,也稱等級相關系數。如果數據中沒有重復值, 并且當兩個變量完全單調相關時,斯皮爾曼相關系數則為+1或?1。

計算邏輯:對兩個變量的取值按照從小到大順序編秩,如果兩個值大小相等,則秩次為(index1+index2)/2,

1.spearman相關系數的推導

df = pd.DataFrame({'智商':[106,86,100,101,99,103,97,113,112,110],'每周看電視小數':[7,0,27,50,28,29,20,12,6,17]}) n = len(df) df.sort_values('智商',inplace = True) df['range1'] = np.arange(1,n+1) df.sort_values('每周看電視小數',inplace = True) df['range2'] = np.arange(1,n+1) df['d'] = df['range1'] - df['range2'] df['d**2'] = df['d'] ** 2 rs = 1 - 6 * (df['d**2'].sum())/(n*(n**2-1)) print('斯皮爾曼相關系數為%.4f'%rs) # 斯皮爾曼相關系數為-0.1758

?

2.pandas的corr()方法

corr()默認為pearson相關系數,添加參數method='spearman'轉化為spearman相關系數。

df = pd.DataFrame({'智商':[106,86,100,101,99,103,97,113,112,110],'每周看電視小數':[7,0,27,50,28,29,20,12,6,17]}) rs = df.corr(method='spearman') print(rs) # 智商 每周看電視小數 # 智商 1.000000 -0.175758 # 每周看電視小數 -0.175758 1.000000

?

轉載于:https://www.cnblogs.com/Forever77/p/11361213.html

總結

以上是生活随笔為你收集整理的数据特征分析-相关性分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。