You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

线性回归模型报错:输入变量样本数不一致问题求解

解决线性回归样本数不匹配的问题

这个错误的根源很明确:你的输入特征X和标签Y样本数量完全不匹配——X有1518个样本((1518,1)的第一维度),但Y只有15个样本((15,1)的第一维度),而线性回归模型要求每一个特征样本都必须对应一个唯一的标签值,二者的样本数必须严格相等。

为什么会出现这种情况?

大概率是你在数据准备阶段出了问题:

  • 可能是XY来自不同的数据源,或者从同一数据源提取时,不小心过滤/截取了其中一方的行;
  • 也可能是处理Y的时候,误操作只保留了15个样本,而X保留了全部数据。

具体解决步骤:

  1. 核对数据源的一致性
    确保XY是从同一批数据中提取的特征与标签。比如用Pandas处理的话,应该从同一个DataFrame中获取:

    import pandas as pd
    from sklearn import linear_model
    
    # 假设你的数据存在CSV文件中
    df = pd.read_csv("your_dataset.csv")
    # 提取特征列(单特征)
    X = df[["your_feature_col"]].values
    # 提取标签列,并转成(样本数,1)的形状
    Y = df["your_target_col"].values.reshape(-1, 1)
    
    # 先确认样本数一致
    print(X.shape[0], Y.shape[0])  # 输出应该是相同的数字
    # 再训练模型
    regr = linear_model.LinearRegression()
    regr.fit(X, Y)
    
  2. 如果确实需要用15个标签匹配部分特征
    如果你确定Y的15个样本对应的是X中的某15个样本,那需要把X也截取成对应的子集(必须保证样本一一对应,不能随便截取)。比如假设Y对应X的前15个样本:

    X_matched = X[:15]
    regr.fit(X_matched, Y)
    

    但这里一定要确认X_matchedY的样本是严格对应的,否则训练出来的模型没有实际意义。

  3. 检查数据处理过程
    回溯你处理XY的代码,看有没有对其中一方做了错误的切片、过滤或者聚合操作,导致样本数不一致。比如有没有不小心对Y做了Y = Y[:15]但没同步处理X

最后记住:训练模型前,一定要先验证X.shape[0] == Y.shape[0],这是所有监督学习模型的基本要求哦。

内容的提问来源于stack exchange,提问作者jeffs

火山引擎 最新活动