Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 数据帧中两个变量的线性回归_Python_Pandas_Dataframe_Scikit Learn_Regression - Fatal编程技术网

Python 数据帧中两个变量的线性回归

Python 数据帧中两个变量的线性回归,python,pandas,dataframe,scikit-learn,regression,Python,Pandas,Dataframe,Scikit Learn,Regression,所以,我不是一个真正的程序员,但我需要找出两个变量方程的关系,我一直在谷歌上搜索,但我不知道如何将数据输入sklearn linear_模型 我有一个这样定义的数据帧 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

所以,我不是一个真正的程序员,但我需要找出两个变量方程的关系,我一直在谷歌上搜索,但我不知道如何将数据输入sklearn linear_模型

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

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)
还有很多变量试图获取索引处的值,datatable中的列将与每个X关联。我真的不知道如何做到这一点

我找到了很多关于两个变量的指南,但是它们都有扁平的数据集,我不知道如何在没有大量输入的情况下扁平化这些数据集

所以我的问题是,有没有一种方法可以对两个变量进行回归,我的独立变量是pandas数据表上的索引和列值,或者,有没有一种快速有效的方法可以将这个数据表展平为一个48×3的数据表,这样我找到的众多指南中的一个可以真正帮助我


感谢您提供的高级功能。

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

oxy2 = oxy.stack().reset_index()
oxy2.columns = ['salinity','temperature','oxygenation']
输出是一个48×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'])

非常感谢你。我一直在和pd混在一起。melt认为这会有帮助,但这要好得多!我建议目视检查温度和盐度与含氧量的散点图,以确定是否存在任何明显的数据转换,如log或exp,这可能有助于线性回归-这既快速又简单。我从3D散点图中看到,数据不在平面上。当我将“盐度*温度”的交互效应添加到回归中时,拟合得到了改善。