Python 数据帧中两个变量的线性回归
所以,我不是一个真正的程序员,但我需要找出两个变量方程的关系,我一直在谷歌上搜索,但我不知道如何将数据输入sklearn linear_模型 我有一个这样定义的数据帧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
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散点图中看到,数据不在平面上。当我将“盐度*温度”的交互效应添加到回归中时,拟合得到了改善。