灰度預測——關聯度求解

灰度預測適用範圍:

在實際中,若得到的是離散的,規律性不強的數據,此時線性迴歸就不適用了,我們需要採用灰度預測的方法。灰度預測法則是一種對含有不確定因素的系統進行預測的方法。

白色系統、黑色系統、灰度系統:

  • 白色系統:指一個系統的內部特徵是完全已知的,即系統的信息是完全明確的。
  • 黑色系統:指一個系統的內部信息對外界來說是一無所知的,只能通過它與外界的聯繫來加以觀測研究
  • 灰色系統:指一個系統內的一部分信息是已知的,另一部分信息是未知的,系統內各因素間有不確定的關係。

灰色系統的應用範疇:

  • 灰色關聯分析
  • 灰色預測:人口預測、初霜預測、災變預測……
  • 灰色決策
  • 灰色預測控制

關聯度:

關聯度分析是分析系統中各因素關聯程度的方法,在計算關聯度之前需要計算關聯繫數。
在這裏插入圖片描述
關聯繫數只表示了各個時刻參考序列和比較序列之間的關聯程度,爲了從總體上了解序列之間的關聯程度,必須求出它們的時間平均值,即關聯度。
在這裏插入圖片描述

python實現計算比較序列與參考序列之間的關聯度:

原始數據表格如下所示,其中t1、t2、t3、t4表示四個不同的時刻,參考序列爲Industry,分別計算後三者與Industry的關聯度,代碼最終返回的是關聯度經過排序後的department的相應取值,排序採用逆序排序
在這裏插入圖片描述

import numpy as np
import pandas as pd
import warnings

warnings.filterwarnings("ignore")

df = pd.read_csv("department_data.csv")

m, n = df.shape
columns = list(df.columns[1:])

for c in columns[1:]:
    df[c] /= df[columns[0]]

df[columns[0]] = 1
data = df[columns]

for i in range(1, m):
    data.loc[i] = abs(data.loc[i] - data.loc[0])

data = np.array(data.values)

min_diff = np.min(data[1:, :])
max_diff = np.max(data[1:, :])

def correlation_coef(data, p):
    m1, n1 = data.shape
    result = []
    correlation_degree = {}
    for i in range(1, m1):
        for j in range(n1):
            data[i, j] = (min_diff + p * max_diff) / (data[i, j] + p * max_diff)

        correlation_degree[np.mean(data[i, :])] = i
    correlation_sort = sorted(correlation_degree.items(), key=lambda item:item[0], reverse=True)
    for each in correlation_sort:
        result.append(each[1])

    return list(df[df.columns[0]][result])

print("Ranking results of correlation degree from large to small: \n", correlation_coef(data, 0.5))
Ranking results of correlation degree from large to small: 
 ['Transportation', 'Business', 'Agriculture']

從代碼運行結果可以看出,Transportation與Industry之間的關聯度最大。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章