灰度預測適用範圍:
在實際中,若得到的是離散的,規律性不強的數據,此時線性迴歸就不適用了,我們需要採用灰度預測的方法。灰度預測法則是一種對含有不確定因素的系統進行預測的方法。
白色系統、黑色系統、灰度系統:
- 白色系統:指一個系統的內部特徵是完全已知的,即系統的信息是完全明確的。
- 黑色系統:指一個系統的內部信息對外界來說是一無所知的,只能通過它與外界的聯繫來加以觀測研究。
- 灰色系統:指一個系統內的一部分信息是已知的,另一部分信息是未知的,系統內各因素間有不確定的關係。
灰色系統的應用範疇:
- 灰色關聯分析
- 灰色預測:人口預測、初霜預測、災變預測……
- 灰色決策
- 灰色預測控制
關聯度:
關聯度分析是分析系統中各因素關聯程度的方法,在計算關聯度之前需要計算關聯繫數。
關聯繫數只表示了各個時刻參考序列和比較序列之間的關聯程度,爲了從總體上了解序列之間的關聯程度,必須求出它們的時間平均值,即關聯度。
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之間的關聯度最大。