Построение простой модели линейной регрессии идет не так - PullRequest
0 голосов
/ 22 апреля 2020

Я хотел бы создать модель линейной регрессии, которая бы показала положительную корреляцию между ИМТ и риском заболевания (количественный показатель заболеваемости через год после базовой линии).

Набор данных тот же, что и у склеарна набор данных-- import sklearn.datasets.load_diabetes

И это URL (https://www4.stat.ncsu.edu/~boos/var.select/diabetes.tab.txt)

Я импортировал всю таблицу с использованием read_csv (args) и назвал ее ' data '

df = DataFrame({'BMI': data['BMI'], 'Target': data['Y']}).sort_values('BMI')

df.plot.scatter('BMI', 'Target')

model = LinearRegression(fit_intercept=True)
model.fit(data[['BMI']], data['Y'])

x_test = np.linspace(data['BMI'].min(), data['BMI'].max())
y_pred = model.predict(x_test[:, np.newaxis])

df.plot(x_test, y_pred, linestyle=":", color="red")

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

Error Message

1 Ответ

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

Я думаю, что вы хотите:

import pandas as pd
from sklearn.linear_model import LinearRegression
import numpy as np
from matplotlib import pyplot as plt

[...]

df = pd.DataFrame({'BMI': data['BMI'], 'Target': data['Y']}).sort_values('BMI')

model = LinearRegression(fit_intercept=True)
model.fit(data[['BMI']], data['Y'])

x_test = np.linspace(data['BMI'].min(), data['BMI'].max())
y_pred = model.predict(x_test[:, np.newaxis])

plt.scatter(df['BMI'].values, df['Target'].values)
plt.plot(x_test, y_pred, linestyle="-", color="red")
plt.show()

, что дает нам: enter image description here

Решение, которое вы использовали с df.plot(x, y), дает вам ошибка, потому что эта plot функция pandas фрейма данных работает только на том фрейме данных, к которому она обращена. Это не общая функция графика, такая как pyplot.plot(x, y) plot function.

...