Линейная регрессия на наборе данных linerrud - PullRequest
1 голос
/ 08 ноября 2019

Я пытаюсь найти производительность и среднеквадратическую ошибку набора данных linnerud с помощью метода линейной регрессии. Я застрял при передаче данных и получаю сообщение об ошибке «ValueError: Найдены входные переменные с непоследовательным количеством выборок: [10, 1]». Набор данных Linnerud имеет три функции и три столбца в целевой, где я хочу использовать только одну функцию - Chinup. Может ли кто-нибудь помочь мне исправить положение, в котором я застрял?

Вот что я пытался сделать, сославшись на https://scikit -learn.org / stable / auto_examples / linear_model / plot_ols.html.

from sklearn import datasets
from sklearn import linear_model
from sklearn.metrics import mean_squared_error, r2_score
import matplotlib.pyplot as plt
import numpy as np

linnerud = datasets.load_linnerud()
print(linnerud)

# Use only one feature
linnerud_X = linnerud.data[:, np.newaxis, 0]
print(linnerud_X)
X = np.array(linnerud_X).reshape((1,-1))
print(X)
# Split the data into training/testing sets
linnerud_X_train = linnerud_X[:-10]
linnerud_X_test = linnerud_X[-10:]
#print(linnerud_X_train)
#print(linnerud_X_test)


Y = np.array(linnerud.target).reshape((1,-1))

# Split the targets into training/testing sets
linnerud_y_train = Y
#linnerud_y_test #= Y[-10:]
print(linnerud_y_train)
#print(linnerud_y_test)

# Create linear regression object
regr = linear_model.LinearRegression()

# Train the model using the training sets
regr.fit(linnerud_X_train, linnerud_y_train)

# Make predictions using the testing set
linnerud_y_pred = regr.predict(linnerud_X_test)

Я ожидаю аналогичных результатов, которые были достигнуты в следующем примере, https://scikit -learn.org / stable / auto_examples / linear_model / plot_ols.html

1 Ответ

0 голосов
/ 08 ноября 2019

Количество записей в зависимой и независимой переменных не совпадает.

>>> linnerud_y_train.shape
(1, 60)
>>> linnerud_X_train.shape
(10, 1)

Кроме того, изменения, которые вы делали на цели, неверны (я не уверен, что вы пытались сделать там).

Функции были разделены на обучающие и тестовые,но раскол не был сделан на цель. По этой причине вы получили ошибку значения.

Но лучший способ сделать это будет:

linnerud = datasets.load_linnerud()
linnerud_X = linnerud.data[:, np.newaxis, 0]   # Use only one feature

# Split to train and test
linnerud_X_train = linnerud_X[:10]
linnerud_X_test = linnerud_X[10:]

Y = linnerud.target[: np.newaxis, 0]
linnerud_y_train = Y[:10]
linnerud_y_test = Y[10:]

regr = linear_model.LinearRegression()
regr.fit(linnerud_X_train, linnerud_y_train)
...