Проблемы с вычислением наклона и перехвата в Numpy / Scypy с использованием линейной регрессии - PullRequest
0 голосов
/ 03 апреля 2020

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

Это мои рабочие коды (minquadbasso.py это имя программы):

import numpy as np
import matplotlib.pyplot as plt  # To visualize
import pandas as pd  # To read data
from sklearn.linear_model import LinearRegression

data = pd.read_csv('TelefonoverticaleAsseY.csv')  # load data set
X = data.iloc[:, 0].values.reshape(-1, 1)  # values converts it into a numpy array
Y = data.iloc[:, 1].values.reshape(-1, 1)  # -1 means that calculate the dimension of rows, but have 1 column

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

plt.scatter(X, Y)
plt.plot(X, Y_pred, color='black')
plt.show()

Если я использую:

from scipy.stats import linregress
linregress(X, Y)

, компилятор выдаст мне эту ошибку:

Traceback (most recent call last):
  File "minquadbasso.py", line 11, in <module>
    linregress(X, Y)
  File "/usr/local/lib/python3.7/dist-packages/scipy/stats/_stats_mstats_common.py", line 116, in linregress
    ssxm, ssxym, ssyxm, ssym = np.cov(x, y, bias=1).flat
ValueError: too many values to unpack (expected 4) 

Можете ли вы заставить меня понять, что я делаю неправильно, и предложить, что изменить, чтобы правильно рассчитать наклон и перехват?

1 Ответ

0 голосов
/ 03 апреля 2020

My go - для линейной регрессии есть np.polyfit. Если у вас есть массив (или список) данных x, а массив или список данных y просто используйте

coeff = np.polyfit(x,y, deg = 1)

coeff, то теперь список коэффициентов наименьших квадратов соответствует вашим данным с наивысшей степенью х первый Таким образом, для подгонки первой степени y = ax + b, a = coeff[0] и b = coeff[1] 'deg' - это степень многочлена, который вы хотите вписать в свои данные. Для оценки вашей регрессии (прогнозирования) вы можете использовать np.polyval

y_prediction = np.polyval(coeff, x)

Если вы хотите ковариационную матрицу для подгонки

coeff, cov = np.polyfit(x,y, deg = 1, cov = True)

, вы можете найти больше информации по ней здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...