Как найти точку, в которой линия регрессии будет пересекать ось OY? - PullRequest
2 голосов
/ 01 апреля 2019

У меня есть файл, в котором я предоставляю некоторые данные, значения x и y.Моя программа рисует линию регрессии этих точек, но сейчас мне нужно найти значение на оси OY, которое моя линия пересечет, если оно будет вытянутым.

Что моя программа делает сейчас:

Мне нужно просто сделать линию длиннее, пересечь ее с осью OY и найти точные координаты этой точки.

Пока мой код:

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('data.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='red')

plt.show()

Мой код требует файл с именем «data.csv», который содержит координаты заданных значений.Мой пример имеет значения:

5,0.8
10,0.7
15,0.66
20,0.493
25,0.5
30,0.21

1 Ответ

2 голосов
/ 01 апреля 2019

Вы хотели что-то подобное, где вы можете использовать атрибут intercept_ вашего объекта LinearRegressor, чтобы получить y-перехват в точке x, равной нулю:

import numpy as np
import matplotlib.pyplot as plt  # To visualize
import pandas as pd  # To read data
from io import StringIO
from sklearn.linear_model import LinearRegression
txtfile = StringIO("""5,0.8
10,0.7
15,0.66
20,0.493
25,0.5
30,0.21""")
data = pd.read_csv(txtfile, header=None)  # 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='red')

plt.plot([0, X[0]], [linear_regressor.intercept_, Y_pred[0]], c="green",  linestyle='--')

ax = plt.gcf().gca()
ax.spines['left'].set_position('zero')
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)

plt.show()

Вывод:

enter image description here

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