【问题标题】:How do I properly fit a sci-kit learn model using a pandas dataframe?如何使用 pandas 数据框正确拟合 sci-kit 学习模型?
【发布时间】:2020-10-26 04:08:17
【问题描述】:

我正在尝试在 sci-kit learn 中创建一个机器学习程序。我正在使用 CSV 文件来存储数据,并决定使用 Pandas 数据框来导入和格式化这些数据。我无法弄清楚如何将这个数据框与模型相匹配。

我的 CSV 文件有一个特征,即年龄和一个目标,即体重。我正在使用线性回归算法来预测使用年龄的体重。我确实意识到这不是处理这些数据的最佳算法。

当我运行此代码时,我收到错误“ValueError:找到样本数量不一致的输入变量:[10, 40]”

这是我的代码:

# Imports 
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression

# Load And Split Data
data = pd.read_csv("awd.csv")

feature_cols = ['Ages']
X = data.loc[:, feature_cols]
y = data.loc[:, "Weights"]

X_train, y_train, X_test, y_test = train_test_split(X, y, random_state=0, train_size=0.2)

# Train Model
lr = LinearRegression()
lr.fit(X_train, y_train)

# Scores
print(f"Test set score: {round(lr.score(X_test, y_test), 3)}")
print(f"Training set score: {round(lr.score(X_train, y_train), 3)}")

我的 CSV 文件的前 5 行:

Ages,Weights
1,19
1,21
2,26
2,32

【问题讨论】:

  • 您能否分享完整的错误跟踪、一些示例数据以及 X 和 y 的形状?
  • 你会让我们猜测吗?错误在哪里?哪些变量有 10 和 40 个样本?您需要花一些精力来调试问题。
  • 抱歉,回复太晚了。我将确保在下一个问题中包含尽可能多的信息。我已经用问题的答案解决了这个问题。感谢您的帮助。

标签: python pandas machine-learning scikit-learn


【解决方案1】:

您应该像这样更正 X_train、X_test、y_train 和 y_test 的顺序:

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

详见相关documentation。

【讨论】:

    【解决方案2】:

    您错误地分配了返回值。见下文:

    X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0, train_size=0.2)
    

    【讨论】:

      猜你喜欢
      • 2020-01-01
      • 1970-01-01
      • 2013-05-23
      • 2020-04-25
      • 2014-07-16
      • 2020-07-17
      • 2013-10-13
      • 1970-01-01
      • 2020-06-19
      相关资源
      最近更新 更多