python - 使用 sklearn 波士顿住房数据集:尝试为系数创建数据框
问题描述
我已经运行了以下代码行
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。但不确定。
解决方案
IMO,发生这种情况是因为您y_train
是一个形状为 (n_samples, 1) 的 2d DataFrame。
coef_ : 数组,形状 (n_features, ) 或 (n_targets, n_features)
线性回归问题的估计系数。如果在拟合过程中传递了多个目标(y 2D),这是一个形状为(n_targets,n_features)的二维数组,而如果只传递了一个目标,这是一个长度为 n_features 的一维数组。
通过np.ravel(y_train)
代替或仅使用y = pd.Series(boston.target)
可以解决此问题。
推荐阅读
- php - 当实体被部分调用时检索实体的实例
- python - python ODR fir中的权重
- mysql - MySQL:在 SELECT 子句中使用子查询,它执行了多少次?
- java - 使用 Java ServletRequestAware 在 Google App Engine 上的会话不起作用
- microsoft-graph-api - 我可以在日历中添加多个事件吗?
- mysql - docker-compose keyrock mysql子网配置
- javascript - 为什么 for 循环中的事件处理程序不适用于所有迭代?
- multithreading - 非常短的任务的线程同步
- c - 使用 C 在链表中的现有元素之前插入时无限打印
- reactjs - (原因:CORS 请求没有成功)