You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

机器学习新手求助:线性回归预测维度不匹配ValueError问题

Fixing "ValueError: shapes (1,1) and (132,132) not aligned" in Linear Regression

Hey there! Let's break down why you're hitting this error and get your linear regression code back on track.

What's Causing This Error?

This error happens when you try to multiply two matrices with incompatible dimensions. In your case, you're attempting to multiply a (1,1) matrix with a (132,132) matrix—since the number of columns in the first matrix (1) doesn't match the number of rows in the second (132), NumPy throws this alignment mismatch.

Looking at your code snippet, this almost always stems from one of two common linear regression pitfalls:

  • You messed up the shape of input data when making predictions
  • You made a dimension error in manual matrix calculations (if you're trying to compute model parameters by hand instead of using scikit-learn's built-in tools)

Step-by-Step Fix

First, let's confirm your data shapes are already on the right track: your gdp and life arrays are 2D (thanks to np.c_), which is exactly what scikit-learn expects for features and targets (shape format: [number_of_samples, number_of_features]).

Here's the full corrected code, plus explanations for key fixes:

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

# Load and prepare data
load_csv = pd.read_csv("Gdp_Vs_Life_Dataset.csv")
gdp = np.c_[load_csv["GDP"]]  # Shape: (132, 1) → correct for feature matrix
life = np.c_[load_csv["LIFE"]]  # Shape: (132, 1) → correct for target array

print("Dataset shape:", load_csv.shape)
print("GDP feature shape:", gdp.shape)
print("LIFE target shape:", life.shape)

# Train the linear regression model
model = LinearRegression()
model.fit(gdp, life)

# ✅ Correct way to make predictions
# Always pass a 2D array for predictions, even for a single sample
sample_gdp = np.array([[5000]])  # Shape: (1, 1) → matches training feature dimensions
predicted_life = model.predict(sample_gdp)
print("Predicted LIFE value:", predicted_life)

# If you want to calculate parameters manually (instead of using model.coef_/intercept_)
# Add a bias term (column of 1s) to the feature matrix
X_with_bias = np.c_[np.ones((len(gdp), 1)), gdp]
# Calculate optimal parameters using the normal equation
theta_best = np.linalg.inv(X_with_bias.T.dot(X_with_bias)).dot(X_with_bias.T).dot(life)
print("Manually calculated parameters (bias, coefficient):", theta_best.flatten())

Key Mistakes to Avoid

  1. Using 1D arrays for predictions: If you pass np.array([5000]) (shape: (1,)) instead of np.array([[5000]]) (shape: (1,1)), scikit-learn will either throw a different error or misinterpret your input—leading to dimension mismatches.
  2. Accidentally transposing your feature matrix: Using gdp.T (shape: (1,132)) instead of gdp (shape: (132,1)) during training or prediction will break matrix operations, as dimensions no longer align with your target data.
  3. Forgetting the bias term in manual calculations: When computing parameters via the normal equation, always add a column of 1s to your feature matrix. Without it, your X.T.dot(X) calculation will produce a matrix with mismatched dimensions for subsequent operations.

内容的提问来源于stack exchange,提问作者developer.ahm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:25:58