使用sklearn Boston Housing数据集:尝试创建系数数据框

时间:2018-08-09 03:42:08

标签: python scikit-learn sklearn-pandas

我已经运行了以下几行代码

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 个答案:

答案 0 :(得分:1)

IMO,这是因为您的y_train是形状为(n_samples,1)的2d DataFrame。

  

coef_:数组,形状(n_features,)或(n_targets,n_features)

     

线性回归问题的估计系数。如果多个   在拟合期间传递目标(y 2D),这是一个2D形状的数组   (n_targets,n_features),而如果仅传递了一个目标,则这是一个   一维数组,长度为n_features。

改为通过np.ravel(y_train)或仅使用y = pd.Series(boston.target)可以解决此问题。