【问题标题】:Linear regression model shapes - ValueError: x and y must have same first dimension, but have shapes (5,) and (1, 5)线性回归模型形状 - ValueError:x 和 y 必须具有相同的第一维,但具有形状 (5,) 和 (1, 5)
【发布时间】:2021-10-28 17:04:29
【问题描述】:

我正在关注这个例子https://www.analyticsvidhya.com/blog/2020/03/polynomial-regression-python/

我正在尝试将一条最适合我的 matplotlib 图表的线性线拟合。我不断收到 x 和 y 第一维不同的错误。但是它们的长度都是5?我做错了什么?

ValueError: x 和 y 必须具有相同的第一维,但形状为 (5,) 和 (1, 5)

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

df = pd.read_csv('head_london_pm25vspm10.csv').dropna()
x = df['pm25_ugm3'].values
y = df['pm10'].values

# Training Model
lm = LinearRegression().fit(x.reshape(1, -1), y.reshape(1, -1))
y_pred = lm.predict(x.reshape(1, -1))

# plotting dataset
plt.figure(figsize=(10, 5))
plt.scatter(x, y, s=15)
plt.plot(x, y_pred, color='r')
plt.xlabel('pm25', fontsize=16)
plt.ylabel('pm10', fontsize=16)
plt.show()

print('RMSE for Linear Regression=>', np.sqrt(mean_squared_error(y, y_pred)))

CSV 文件 - 'head_london_pm25vspm10.csv'

pm25_ugm3,pm10
3.8,7.9
4.1,10.5
4.2,10.5
4.5,10.9
4.7,11.2

【问题讨论】:

    标签: python data-science data-analysis


    【解决方案1】:

    LinearRegression 适用于数组。由于您的数据只是向量,因此您必须将它们重塑 (reshape(1, -1)) 为数组才能使用 LinearRegression。

    LinearRegression 的输出又是一个数组。但是您的输入 x 仍然是一个向量。对于绘图函数,两个输入都需要具有相同的形状。

    您可以将输出从 LinearRegression 重新整形为向量,使其再次匹配 x 向量的形状

    y_pred = lm.predict(x.reshape(1, -1)).reshape(-1)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-09
      • 2020-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-30
      • 1970-01-01
      相关资源
      最近更新 更多