因此,我并不是真正的程序员,但是我需要确定两个变量的方程式之间的关系,我已经在谷歌上进行了广泛的搜索,但是我不知道如何将数据输入到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数据表中,这样我发现的许多指南中的一项实际上会对我有帮助吗?
谢谢你。
答案 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'])