Работа с sklearn Boston Housing Dataset: Попытка создать фрейм данных для коэффициентов
Я запустил следующие строки кода
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
from sklearn.datasets import load_boston
boston = load_boston()
print(boston.data.shape)
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
x = pd.DataFrame(boston.data)
x.columns = boston.feature_names
y=pd.DataFrame(boston.target)
y.columns=['TARGET']
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=101)
model = LinearRegression()
model.fit(x_train,y_train)
print('Coefficients: \n', model.coef_)
len(model.coef_)
Coefficients:
[[-8.74917163e-02 5.02793747e-02 2.06785359e-02 3.75457604e+00
-1.77933846e+01 3.24118660e+00 1.20902568e-02 -1.40965453e+00
2.63476633e-01 -1.03376395e-02 -9.52633123e-01 6.20783942e-03
-5.97955998e-01]]
1
coeffecients = pd.DataFrame(data=model.coef_,index=x.columns,columns=['Coefficient'])
сообщение об ошибке: форма передаваемых значений (13, 1), индексы подразумевают (1, 13)
Я думаю, что проблема в том, что длина для массива коэффициентов равна 1. Не уверен, хотя.
1 ответ
ИМО, это происходит потому, что ваш y_train
2d DataFrame с формой (n_samples, 1).
coef_: массив, форма (n_features,) или (n_targets, n_features)
Оценочные коэффициенты для задачи линейной регрессии. Если во время подгонки пройдено несколько целей (y 2D), это двумерный массив формы (n_targets, n_features), в то время как если передана только одна цель, то это одномерный массив длины n_features.
Проходить np.ravel(y_train)
вместо или просто использовать y = pd.Series(boston.target)
может это исправить.