解决数据共线性的问题
程序员文章站
2024-03-02 13:39:22
...
#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
推荐阅读
-
解决数据共线性的问题
-
使用asp.net的pageDataSource中时索引问题解决方法
-
ASP.NET MVC中解析淘宝网页出现乱码问题的解决方法
-
java web开发中大量数据导出Excel超时(504)问题解决
-
mybatis报错元素内容必须由格式正确的字符数据或标记组成异常的解决办法
-
spring循环注入异常问题的解决方案
-
mysql使用SQLyog导入csv数据不成功的解决方法
-
解决异常FileNotFoundException:class path resource找不到资源文件的问题
-
Android 有效的解决内存泄漏的问题实例详解
-
解决Eclipse Tomcat OutOfMemoryError:PermGen space的问题