解決資料共線性的問題

2021-09-14 00:12:54 字數 1611 閱讀 4309

#python資料分析與資料化運營  宋天龍 著

import numpy as np

from sklearn.linear_model import ridge

from sklearn.decomposition import pca

from sklearn.linear_model import linearregression

# 讀取資料

data = np.loadtxt('data5.txt', delimiter='\t') # 讀取資料檔案

x = data[:, :-1] # 切分自變數

y = data[:, -1] # 切分**變數

# 使用嶺回歸演算法進行回歸分析

model_ridge = ridge(alpha=1.0) # 建立嶺回歸模型物件

model_ridge.fit(x, y) # 輸入x/y訓練模型

print (model_ridge.coef_) # 列印輸出自變數的係數

print (model_ridge.intercept_) # 列印輸出截距

# [ 8.50164360e+01 -1.18330186e-03 9.80792921e-04 -8.54201056e-04

# 2.10489064e-05 2.20180449e-04 -3.00990875e-06 -9.30084240e-06

# -2.84498824e-08]

# -7443.986528680895

# 使用主成分回歸進行回歸分析

model_pca = pca() # 建立pca模型物件

data_pca = model_pca.fit_transform(x) # 將x進行主成分分析

ratio_cumsm = np.cumsum(model_pca.explained_variance_ratio_) # 得到所有主成分

#方差佔比的累積資料

print (ratio_cumsm) # 列印輸出所有主成分方差佔比累積

rule_index = np.where(ratio_cumsm > 0.8) # 獲取方差佔比超過0.8的所有索引值

min_index = rule_index[0][0] # 獲取最小索引值

data_pca_result = data_pca[:, :min_index + 1] # 根據最小索引值提取主成分

model_liner = linearregression() # 建立回歸模型物件

model_liner.fit(data_pca_result, y) # 輸入主成分資料和**變數y並訓練模型

print (model_liner.coef_) # 列印輸出自變數的係數

print (model_liner.intercept_) # 列印輸出截距

# [0.9028 0.98570494 0.99957412 0.99995908 0.99999562 0.99999939

# 0.99999999 1. 1. ]各個主成分的方差貢獻率(方差佔比)

# [1.26262171e-05]

# 1058.52726

多重共線性

多重共線性的概念 模型解釋變數之間存在完全線性相關或不完全線性相關關係 產生的原因 1 特徵變數之間的內在聯絡 2 特徵變數在時間上有同方向變動的趨勢 3 某些變數的滯後 檢驗的方法 1 相關性分析 2 方差膨脹因子 方差膨脹因子 variance inflation factor,vif 容忍度的...

r語言多重共線性 統計基礎 多重共線性

僅用於個人學習知識整理和sas r語言 python 整理 該文章首發於csdn 正在遷移優化文章中 1.定義 則稱自變數間存在完全多重共線性 2.影響 3.診斷 另外找到乙個比較詳細的診斷方法的列舉 線性回歸多重共線性的診斷方法和r語言實現 線性回歸多重共線性的診斷方法和r語言實現 資料分析與資料...

多重共線性處理方法

自變數 解釋變數 之間彼此相關的現象,我們稱這種現象為多重共線性。手動移除出共線性的變數 先做下相關分析,如果發現某兩個自變數x 解釋變數 的相關係數值大於0.7,則移除掉乙個自變數 解釋變數 然後再做回歸分析。此方法是最直接的方法,但有的時候我們不希望把某個自變數從模型中剔除,這樣就要考慮使用其他...