Как передать значения из списка в научную модель линейной регрессии? - PullRequest
0 голосов
/ 03 мая 2020

Я импортировал значения в python из PostgreSQL БД.

data = cur.fetchall()

Список выглядит так: -

[('Ending Crowds', 85, Decimal ('50 .49 ')), (' Salute Apollo ', 73, Decimal (' 319.93 '))] [0]

Мне нужно дать 85 как X & Decimal ('50 .49') как Y в LinearRegression модель

Затем я импортировал пакеты & class-

import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression

Я предоставляю данные и выполняю линейную регрессию -

X = data.iloc[:, 1].values.reshape(-1, 1)  
Y = data.iloc[:, 2].values.reshape(-1, 1)  
linear_regressor = LinearRegression()  # create object for the class
linear_regressor.fit(X, Y)  # perform linear regression

Я получаю ошибку - AttributeError: у объекта 'list' нет атрибута 'ilo c'

Я новичок в Pyhon и начал всего 2 дня назад, но мне нужно сделать линейную регрессию в python на моей работе над проектом. Я думаю, что ilo c нельзя использовать для списка объектов. Но не может понять, как передать значения X & Y в linear_regressor. Все примеры выполнения линейной регрессии на сайтах используют .CSV. Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 03 мая 2020

Нет, вы не можете использовать .ilo c в «списке», это для данных. преобразуйте его в датафрейм и попробуйте использовать .ilo c

Ваше решение приведено ниже, пожалуйста, подтвердите его, если оно правильное. Потому что это мой первый ответ на StackOverflow

import pandas as pd
from decimal import Decimal
from sklearn.linear_model import LinearRegression

#I don't know what that "[0]" in your list,because I haven't used data fetched from PostgreSQL. Anyway remove it first and store it in temp

temp=[('Ending Crowds', 85, Decimal('50.49')), ('Salute Apollo', 73, Decimal('319.93'))]

#I don't know it really needed or not
var = list(var)

data = []

#It is to remove "Decimal" word
for row in var:
    data.append(list(map(str, list(row))))
data=pd.DataFrame(data,columns=["no_use","X","Y"])
X=data['X'].values.reshape(-1, 1)
Y=data['Y'].values.reshape(-1, 1)
print(X,Y)

linear_regressor = LinearRegression()  # create object for the class
linear_regressor.fit(X, Y)  # perform linear regression
...