<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 如何使用相關來理解變量之間的關系 > 原文: [https://machinelearningmastery.com/how-to-use-correlation-to-understand-the-relationship-between-variables/](https://machinelearningmastery.com/how-to-use-correlation-to-understand-the-relationship-between-variables/) 數據集中的變量之間可能存在復雜且未知的關系。 發現和量化數據集中變量相互依賴的程度非常重要。這些知識可以幫助您更好地準備數據,以滿足機器學習算法的期望,例如線性回歸,其表現會因這些相互依賴性而降低。 在本教程中,您將發現相關性是變量之間關系的統計匯總,以及如何為不同類型的變量和關系計算變量。 完成本教程后,您將了解: * 如何計算協方差矩陣以總結兩個或多個變量之間的線性關系。 * 如何計算Pearson相關系數來總結兩個變量之間的線性關系。 * 如何計算Spearman的相關系數來總結兩個變量之間的單調關系。 讓我們開始吧。 * **更新May / 2018** :更新了協方差符號的描述(感謝 [Fulya](https://twitter.com/Fulyaku/status/990662656406237190) )。 ![How to Use Correlation to Understand the Relationship Between Variables](img/ddbd0b23160c64e70d18247789b7328e.jpg) 如何使用相關來理解變量之間的關系 照片由 [Fraser Mummery](https://www.flickr.com/photos/73014677@N05/6590298935/) ,保留一些權利。 ## 教程概述 本教程分為5個部分;他們是: 1. 什么是相關性? 2. 測試數據集 3. 協方差 4. 皮爾遜的相關性 5. 斯皮爾曼的相關性 ## 什么是相關性? 數據集中的變量可能由于許多原因而相關。 例如: * 一個變量可能導致或依賴于另一個變量的值。 * 一個變量可以與另一個變量輕微關聯。 * 兩個變量可能取決于第三個未知變量。 它可用于數據分析和建模,以更好地理解變量之間的關系。兩個變量之間的統計關系稱為它們的相關性。 相關性可能是正的,意味著兩個變量在相同的方向上移動,或者是負的,這意味著當一個變量的值增加時,其他變量的值會減少。相關也可以是神經的或零,意味著變量是不相關的。 * **正相關**:兩個變量在同一方向上變化。 * **中性相關**:變量變化沒有關系。 * **負相關**:變量方向相反。 如果兩個或多個變量緊密相關,某些算法的表現可能會惡化,稱為多重共線性。一個例子是線性回歸,其中應刪除一個違規的相關變量,以提高模型的技能。 我們也可能對輸入變量與輸出變量之間的相關性感興趣,以便深入了解哪些變量可能或可能不與開發模型的輸入相關。 關系的結構可以是已知的,例如,它可能是線性的,或者我們可能不知道兩個變量之間是否存在關系或它可能采取什么樣的結構。根據關于變量的關系和分布的已知信息,可以計算不同的相關分數。 在本教程中,我們將查看具有高斯分布和線性關系的變量的一個分數,以及不假設分布的另一個分數,并將報告任何單調(增加或減少)關系。 ## 測試數據集 在我們查看關聯方法之前,讓我們定義一個可用于測試方法的數據集。 我們將生成兩個具有強正相關的兩個變量的1,000個樣本。第一個變量是從高斯分布中抽取的隨機數,平均值為100,標準差為20.第二個變量是來自第一個變量的值,高斯噪聲加上平均值為50,標準差為10 。 我們將使用 _randn()_函數生成平均值為0且標準差為1的隨機高斯值,然后將結果乘以我們自己的標準差并添加平均值以將值轉換為首選范圍。 偽隨機數生成器被播種以確保每次運行代碼時我們都得到相同的數字樣本。 ```py # generate related variables from numpy import mean from numpy import std from numpy.random import randn from numpy.random import seed from matplotlib import pyplot # seed random number generator seed(1) # prepare data data1 = 20 * randn(1000) + 100 data2 = data1 + (10 * randn(1000) + 50) # summarize print('data1: mean=%.3f stdv=%.3f' % (mean(data1), std(data1))) print('data2: mean=%.3f stdv=%.3f' % (mean(data2), std(data2))) # plot pyplot.scatter(data1, data2) pyplot.show() ``` 首先運行該示例打印每個變量的均值和標準差。 ```py data1: mean=100.776 stdv=19.620 data2: mean=151.050 stdv=22.358 ``` 創建兩個變量的散點圖。因為我們設計了數據集,所以我們知道這兩個變量之間存在關系。當我們檢查生成的散點圖時,我們可以看到增加的趨勢。 ![Scatter plot of the test correlation dataset](img/f216ea425ecde4129dfdd10d457166ad.jpg) 測試相關數據集的散點圖 在我們考慮計算一些相關性分數之前,我們首先要看一個重要的統計構建塊,稱為協方差。 ## 協方差 變量可以通過線性關系相關聯。這是一種在兩個數據樣本中始終相加的關系。 這種關系可以歸結為兩個變量,稱為協方差。它被計算為每個樣本的值之間的乘積平均值,其中值沒有居中(減去它們的平均值)。 樣本協方差的計算如下: ```py cov(X, Y) = (sum (x - mean(X)) * (y - mean(Y))) * 1/(n-1) ``` 在計算中使用均值表明每個數據樣本需要具有高斯分布或類高斯分布。 協方差的符號可以解釋為兩個變量是在相同方向上變化(正)還是在不同方向上變化(負)。協方差的大小不容易解釋。協方差值為零表示兩個變量完全獨立。 _cov()_ NumPy函數可用于計算兩個或更多個變量之間的協方差矩陣。 ```py covariance = cov(data1, data2) ``` 矩陣的對角線包含每個變量與其自身之間的協方差。矩陣中的其他值表示兩個變量之間的協方差;在這種情況下,剩下的兩個值是相同的,因為我們只計算兩個變量的協方差。 我們可以在測試問題中計算兩個變量的協方差矩陣。 下面列出了完整的示例。 ```py # calculate the covariance between two variables from numpy.random import randn from numpy.random import seed from numpy import cov # seed random number generator seed(1) # prepare data data1 = 20 * randn(1000) + 100 data2 = data1 + (10 * randn(1000) + 50) # calculate covariance matrix covariance = cov(data1, data2) print(covariance) ``` 協方差和協方差矩陣廣泛用于統計和多變量分析,以表征兩個或多個變量之間的關系。 運行該示例計算并打印協方差矩陣。 因為數據集是根據從高斯分布繪制的每個變量而設計的,并且變量是線性相關的,所以協方差是描述關系的合理方法。 兩個變量之間的協方差為389.75。我們可以看到它是積極的,表明變量的變化方向與我們預期的相同。 ```py [[385.33297729 389.7545618 ] [389.7545618 500.38006058]] ``` 作為統計工具的協方差問題在于解釋具有挑戰性。這導致我們接下來的Pearson相關系數。 ## 皮爾遜的相關性 Pearson相關系數(以Karl Pearson命名)可用于總結兩個數據樣本之間的線性關系的強度。 Pearson相關系數計算為兩個變量的協方差除以每個數據樣本的標準差的乘積。這是兩個變量之間協方差的歸一化,以給出可解釋的分數。 ```py Pearson's correlation coefficient = covariance(X, Y) / (stdv(X) * stdv(Y)) ``` 在計算中使用均值和標準偏差表明需要兩個數據樣本具有高斯分布或類高斯分布。 計算結果,相關系數可以解釋為理解關系。 系數返回介于-1和1之間的值,表示從完全負相關到完全正相關的相關限制。值0表示沒有相關性。必須解釋該值,其中低于-0.5或高于0.5的值通常表示顯著的相關性,低于這些值的值表明相關性較不顯著。 _pearsonr()_ SciPy函數可用于計算具有相同長度的兩個數據樣本之間的Pearson相關系數。 我們可以計算出測試問題中兩個變量之間的相關性。 The complete example is listed below. ```py # calculate the Pearson's correlation between two variables from numpy.random import randn from numpy.random import seed from scipy.stats import pearsonr # seed random number generator seed(1) # prepare data data1 = 20 * randn(1000) + 100 data2 = data1 + (10 * randn(1000) + 50) # calculate Pearson's correlation corr, _ = pearsonr(data1, data2) print('Pearsons correlation: %.3f' % corr) ``` 運行該示例計算并打印Pearson的相關系數。 我們可以看到這兩個變量是正相關的,相關系數是0.8。這表明高水平的相關性,例如值大于0.5且接近1.0。 ```py Pearsons correlation: 0.888 ``` Pearson相關系數可用于評估兩個以上變量之間的關系。 這可以通過計算數據集中每對變量之間的關系矩陣來完成。結果是一個稱為相關矩陣的對稱矩陣,沿對角線的值為1.0,因為每列總是與自身完全相關。 ## 斯皮爾曼的相關性 兩個變量可能通過非線性關系相關,使得變量分布中的關系更強或更弱。 此外,所考慮的兩個變量可以具有非高斯分布。 在這種情況下,Spearman的相關系數(以Charles Spearman命名)可用于總結兩個數據樣本之間的強度。如果變量之間存在線性關系,也可以使用這種關系測試,但功率稍低(例如,可能導致系數得分較低)。 與Pearson相關系數一樣,對于完全負相關的變量,得分在-1和1之間,并且分別完全正相關。 不是使用樣本本身的協方差和標準偏差來計算系數,而是根據每個樣本的值的相對等級計算這些統計數據。這是非參數統計中常用的方法,例如統計方法,我們不假設數據的分布,如高斯。 ```py Spearman's correlation coefficient = covariance(rank(X), rank(Y)) / (stdv(rank(X)) * stdv(rank(Y))) ``` 盡管假設了單調關系,但不假設變量之間存在線性關系。這是兩個變量之間增加或減少關系的數學名稱。 如果您不確定兩個變量之間的分布和可能的關系,Spearman相關系數是一個很好的工具。 _spearmanr()_ SciPy函數可用于計算具有相同長度的兩個數據樣本之間的Spearman相關系數。 We can calculate the correlation between the two variables in our test problem. The complete example is listed below. ```py # calculate the spearmans's correlation between two variables from numpy.random import randn from numpy.random import seed from scipy.stats import spearmanr # seed random number generator seed(1) # prepare data data1 = 20 * randn(1000) + 100 data2 = data1 + (10 * randn(1000) + 50) # calculate spearman's correlation corr, _ = spearmanr(data1, data2) print('Spearmans correlation: %.3f' % corr) ``` 運行該示例計算并打印Spearman的相關系數。 我們知道數據是高斯數,并且變量之間的關系是線性的。然而,非參數基于秩的方法顯示0.8之間的強相關性。 ```py Spearmans correlation: 0.872 ``` 與Pearson相關系數一樣,可以對數據集中的每個變量成對地計算系數,以給出用于查看的相關矩陣。 ## 擴展 本節列出了一些擴展您可能希望探索的教程的想法。 * 生成具有正負關系的自己的數據集,并計算兩個相關系數。 * 編寫函數來計算所提供數據集的Pearson或Spearman相關矩陣。 * 加載標準機器學習數據集并計算所有實值變量對之間的相關系數。 如果你探索任何這些擴展,我很想知道。 ## 進一步閱讀 如果您希望深入了解,本節將提供有關該主題的更多資源。 ### 帖子 * [對NumPy](https://machinelearningmastery.com/introduction-to-expected-value-variance-and-covariance/) 的期望值,方差和協方差的溫和介紹 * [自相關和部分自相關的溫和介紹](https://machinelearningmastery.com/gentle-introduction-autocorrelation-partial-autocorrelation/) ### API * [numpy.random.seed()API](https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.seed.html) * [numpy.random.randn()API](https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.randn.html) * [numpy.mean()API](https://docs.scipy.org/doc/numpy/reference/generated/numpy.mean.html) * [numpy.std()API](https://docs.scipy.org/doc/numpy/reference/generated/numpy.std.html) * [matplotlib.pyplot.scatter()API](https://matplotlib.org/api/_as_gen/matplotlib.pyplot.scatter.html) * [numpy.cov()API](https://docs.scipy.org/doc/numpy/reference/generated/numpy.cov.html) * [scipy.stats.pearsonr()API](https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.pearsonr.html) * [scipy.stats.spearmanr()API](https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.spearmanr.html) ### 用品 * [維基百科的相關性和依賴性](https://en.wikipedia.org/wiki/Correlation_and_dependence) * [維基百科上的協方差](https://en.wikipedia.org/wiki/Covariance) * [維基百科的Pearson相關系數](https://en.wikipedia.org/wiki/Pearson_correlation_coefficient) * [Spearman在維基百科上的等級相關系數](https://en.wikipedia.org/wiki/Spearman%27s_rank_correlation_coefficient) * [維基百科排名](https://en.wikipedia.org/wiki/Ranking) ## 摘要 在本教程中,您發現相關性是變量之間關系的統計匯總,以及如何為不同類型的變量和關系計算變量。 具體來說,你學到了: * 如何計算協方差矩陣以總結兩個或多個變量之間的線性關系。 * 如何計算Pearson相關系數來總結兩個變量之間的線性關系。 * 如何計算Spearman的相關系數來總結兩個變量之間的單調關系。 你有任何問題嗎? 在下面的評論中提出您的問題,我會盡力回答。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看