Линейная регрессия по двум переменным в кадре данных панд - PullRequest
0 голосов
/ 18 февраля 2019

Итак, я на самом деле не программист, но мне нужно выяснить отношения на основе уравнения двух переменных, я много гуглюл, но не могу понять, как вводить свои данные в 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)

вместе с вариантами лотов.пытаясь получить значения в index, column в datatable, чтобы связать их с каждым X. Я просто не понимаю, как это сделать.

Я нашел много руководств по двум переменным, но все они имелиплоские наборы данных, и я не знаю, как сгладить это без большого и большого количества печатания.

Так что мой вопрос, есть ли способ сделать регрессию надве переменные с моими независимыми переменными, которые являются моими значениями индекса и столбца в dandatable, и или, есть ли быстрый и эффективный способ сгладить этот datatable в 48 x 3, так что одно из многих руководств, которые я нашел, будетна самом деле мне помочь?

Спасибо заранее.

1 Ответ

0 голосов
/ 18 февраля 2019

Вы можете использовать stack для изменения формы данных, а затем переименовать столбцы:

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'])
...