如何从元素列表列表开始进行回归
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从元素列表列表开始进行回归相关的知识,希望对你有一定的参考价值。
我试图在python中运行回归。我有一个列表列表(更大列表的一部分),看起来像这样:
[[1307622004, 0.0, 339.093, 130.132],
[10562004, 0.0, 206.818, 62.111],
[127882004, 0.0, 994.624, 360.497],
[63702004, 0.0, 89.653, 19.103],
[655902004, 0.0, 199.613, 83.296],
[76482004, 0.0, 1891.0, 508.0],
[16332004, 0.0, 160.344, 25.446],
[294352004, 0.0, 67.115, 22.646],
[615922004, 0.0, 134.501, 41.01],
[1212572004, 0.0, 232.616, 5.086],
[658992004, 0.0, 189.155, 7.906],
[61962004, 0.0, 806.7, 164.1],
[121712004, 0.0, 1147.532, 271.014],
[1250142004, 0.0, 29.556, -5.721],
[148082004, 0.0, 22.05, -17.655]]
看起来像这样,因为每行都是我从中导入数据的CSV文件中的一行。从这一点开始,请查看列表中的元素作为变量列,以便更好地理解我想要回归的内容。例如,列表中的前4个列表看起来就像变成了列(我不需要将变量变成列,我已经为了说明目的而这样做了):
1307622004 0.0 339.093 130.132
10562004 0.0 206.818 62.111
127882004 0.0 994.624 360.497
为了继续我的例子,我希望第一列是我的因变量,所有其他列都是独立变量。我已经尝试使用numpy将列表转换为数组,然后应用sklearn回归。以下是代码段:
需要注意的重要事项:list_of_lists包含许多与我在问题开头提供的列表类似的元素。
from sklearn import datasets ## imports datasets from scikit-learn
from sklearn.linear_model import LinearRegression
import numpy as np
for item in list_of_lists:
test_array = np.asarray(item)
# print(test_array)
X, Y = test_array[:, 0], test_array[:, 1]
mdl = LinearRegression().fit(X, Y)
scores = LinearRegression.score(X, Y)
print('--------------------------')
问题是我得到以下输出:
如果数据具有单个要素,则使用array.reshape(-1,1)重新整形数据;如果数据包含单个样本,则使用array.reshape(1,-1)重新整形数据。
我对python和python中的数组,矩阵的使用都很陌生,所以我真的不明白发生了什么。
答案
我不确定你为什么要遍历你的列表列表。更好的方法是将回归拟合到数组中。另外,如果你想让第一列成为你的响应(依赖)变量,而其余所有变量都是预测变量(独立)变量,你需要更改X
和Y
的定义,因为你有它,你有第一列列作为预测变量,第二列作为响应:
test_array = np.asarray(list_of_lists)
# Set independent variables to be all columns after first, dependent to first col
X, Y = test_array[:, 1:], test_array[:, 0]
# Create a regressor
reg = LinearRegression()
# Fit it to your data
mdl = reg.fit(X, Y)
# Exctract the R^2
scores = reg.score(X,Y)
以上是关于如何从元素列表列表开始进行回归的主要内容,如果未能解决你的问题,请参考以下文章