熊猫数据框中两个变量的线性回归

时间:2019-02-18 20:28:04

标签: python pandas dataframe scikit-learn regression

因此,我并不是真正的程序员,但是我需要确定两个变量的方程式之间的关系,我已经在谷歌上进行了广泛的搜索,但是我不知道如何将数据输入到sklearn linear_model中。

我有一个这样定义的数据框

I = [-2, 0, 5, 10, 15, 20, 25, 30]
d = {27.11 : [9.01,8.555,7.56,6.77,6.14,5.63,5.17,4.74],
     28.91 : [8.89,8.43,7.46,6.69,6.07,5.56,5.12,4.68],
     30.72 : [8.76,8.32,7.36,6.60,6.00,5.50,5.06,4.69],
     32.52 : [8.64,8.20,7.26,6.52,5.93,5.44,5.00,4.58],
     34.33 : [8.52,8.08,7.16,6.44,5.86,5.38,4.95,4.52],
     36.11 : [8.39,7.97,7.07,6.35,5.79,5.31,4.86,4.46]}
oxy = pd.DataFrame(index = I, data = d) # temp, salinity to oxygenation ml/L

用代表温度的索引和代表盐度的列名称,我需要想出一种方法来根据温度和盐度预测氧合(列中的值)。

我认为我的问题主要与语法有关,

我尝试通过以下方式拟合我的数据

X = [list(oxy.columns.values),list(oxy.index.values)]
regr = linear_model.LinearRegression()
regr.fit(X,oxy)

还有很多变体试图获取数据表中与每个X关联的index,column的值。我真的只是不知道如何做到这一点。

我在两个变量上找到了很多指南,但是它们都有平坦的数据集,而且我不知道如何在没有大量输入的情况下将其扁平化。

所以我的问题是,是否有一种方法可以对两个变量进行回归分析,而我的独立变量是我在熊猫数据表上的索引和列值,或者是否有一种快速有效的方法来扁平化此数据表放入48 x 3数据表中,这样我发现的许多指南中的一项实际上会对我有帮助吗?

谢谢你。

1 个答案:

答案 0 :(得分:1)

您可以使用stack重塑数据,然后重命名列:

oxy2 = oxy.stack().reset_index()
oxy2.columns = ['salinity','temperature','oxygenation']

输出为48 x 3数据帧。仅显示前5行:

#print(oxy2.head())
    salinity  temperature  oxygenation
0         -2        27.11        9.010
1         -2        28.91        8.890
2         -2        30.72        8.760
3         -2        32.52        8.640
4         -2        34.33        8.520

然后,您可以使用以下代码运行回归:

regr = linear_model.LinearRegression()
regr.fit(oxy2[['salinity','temperature']], oxy2['oxygenation'])