线性回归:代码 (a) 行

发布: (2026年5月3日 GMT+8 02:19)
4 分钟阅读
原文: Dev.to

Source: Dev.to

是时候编写你的第一个机器学习模型并预测房价了。

想要完整项目,请查看:

https://github.com/yotambelgoroski/ml_unchained-house_pricing

Step 1: It’s all about data

机器学习的核心是数据——没有数据就无法创建模型,没数据也就无法训练模型。

我们的数据集通常被划分为两部分:

  • 训练数据 – 用于训练模型的数据
  • 测试数据 – 模型训练完成后,我们从测试集取输入 (x),预测输出 (ŷ),再将预测值与真实值 (y) 对比。这可以告诉我们模型的表现如何。

在更高级的设置中,你可能还会看到验证集,用于在测试之前调优模型。

数据从哪里来?

答案取决于你的业务和使用场景。出于学习目的,Kaggle 是获取数据集和机器学习资源的好渠道。为了保持简单,我使用一个脚本生成合成数据。

训练需要多少数据?

没有固定的数量——模型越复杂,需要的数据越多。一个常用的经验法则是:

数据点数量应是特征(自变量)数量的 10×–20×

我们目前只有一个特征 (sqm),所以我用了 10 条记录来训练模型——这是保持简洁的最低要求。

测试需要多少数据?

一种简单的做法是按 80:20 的比例划分数据集:

  • 80% 用于训练
  • 20% 用于测试

Step 2: Training the model

现在我们已有数据集,是时候训练模型了。

训练包括三个步骤:

  1. 加载训练数据
  2. 基于这些数据在内存中训练模型
  3. 序列化——将训练好的模型保存到磁盘,以便后续直接使用而无需重新训练
import joblib
import pandas as pd
from pathlib import Path
from sklearn.linear_model import LinearRegression

FEATURE_COLS = ["sqm"]
TARGET_COL = "price"
MODEL_FILENAME = "house_price_model.joblib"

def load_training_data(train_path: Path) -> pd.DataFrame:
    return pd.read_csv(train_path)

def train_model(df: pd.DataFrame) -> LinearRegression:
    model = LinearRegression()
    model.fit(df[FEATURE_COLS], df[TARGET_COL])
    return model

def save_model(model: LinearRegression, dest_path: Path) -> None:
    dest_path.parent.mkdir(parents=True, exist_ok=True)
    joblib.dump(model, dest_path)
    print(f"Model saved → {dest_path}")

def train(train_path: Path, model_dir: Path) -> LinearRegression:
    df = load_training_data(train_path)
    model = train_model(df)
    save_model(model, model_dir / MODEL_FILENAME)
    print(f"Model trained on {len(df)} samples.")
    return model

就这样——我们的第一个模型完成了!

Our Dependencies

  • Pandas – 用于处理表格数据的库。其核心结构 DataFrame 让我们能够轻松访问和操作数据。
  • scikit-learn – Python 的机器学习库。LinearRegression 是其中的模型之一,用于学习输入特征与目标值之间的最佳线性关系。
  • Joblib – 用于序列化的实用库。它让我们能够将训练好的模型保存到磁盘,并在以后加载进行推理。

恭喜你——已经创建了你的第一个模型!不过,它还未达到生产就绪的水平。接下来,我们将使用测试数据评估模型的真实表现。

0 浏览
Back to Blog

相关文章

阅读更多 »

如何在 Python 中使用 Claude API

你有一个 Python 脚本。你希望它能够思考。这就是全部前提。本教程向你展示如何将你的代码连接到 Claude——Anthropic 的 AI 模型——...

Transformer 本质上简洁

资源 - 查看 PDF https://arxiv.org/pdf/2510.19315 - HTML 实验版 https://arxiv.org/html/2510.19315v2 摘要 我们提出将 succinctness 作为衡量 …