[菜鸟教程] 机器学习教程第一课

机器学习的三大要素

机器学习包含三个基本要素:

1. 数据

数据是机器学习的燃料,质量越高、数量越多的数据,通常能让模型学得越好。

  • 训练数据:用来教模型的数据
  • 测试数据:用来检验模型学习效果的数据
  • 真实数据:模型在实际应用中遇到的新数据

2. 算法

算法是机器学习的学习方法,不同的算法适用于不同类型的问题。

  • 监督学习:有标准答案的学习
  • 无监督学习:没有标准答案,自己找规律
  • 强化学习:通过试错和奖励来学习

3. 模型

模型是学习的结果,就像学生学到的知识一样。

  • 训练过程:算法从数据中学习规律

  • 推理过程:使用学到的规律做预

    """
    source https://www.runoob.com/ml/ml-tutorial.html
    Scikit-learn 中的线性回归模型,封装了最小二乘法的实现
    """
    import numpy as np
    import matplotlib.pyplot as plt
    from sklearn.linear_model import LinearRegression
    import seaborn as sns
    import matplotlib

    Matplotlib 的图形后端为 TkAgg(基于 Tkinter 的交互式后端)。

    这通常在脚本或特定环境下(如某些 IDE 或服务器)需要显式设置,以确保图形窗口正常弹出

    如果省略,Matplotlib 会自动选择默认后端。

    matplotlib.use('TkAgg')

    设置图表风格,让图表更好看

    sns.set_style("whitegrid")

    ---------------------------------------设置中文字体 start---------------------------------------------------------------

    plt.rcParams['font.sans-serif'] = [
    # Windows 优先
    'SimHei', 'Microsoft YaHei',
    # macOS 优先
    'PingFang SC', 'Heiti TC',
    # Linux 优先
    'WenQuanYi Micro Hei', 'DejaVu Sans'
    ]

    修复负号显示为方块的问题

    plt.rcParams['axes.unicode_minus'] = False

    1、准备数据

    假设我们有房屋面积和对应的价格数据

    房屋面积(平方米)特征数据(房屋面积),形状为 (8,)。reshape(-1, 1) 将其转换为列向量,

    即 (8, 1) 的二维数组,因为 Scikit-learn 的 fit 方法要求特征输入是二维的(每个样本一行,每个特征一列)

    house_sizes = np.array([50, 60, 70, 80, 90, 100, 110, 120]).reshape(-1, 1)

    房屋价格(万元)目标数据(房屋价格),是一维数组,形状为 (8,)。线性回归模型接受一维目标。

    house_prices = np.array([150, 180, 210, 240, 270, 300, 330, 360])
    print(house_sizes)
    print(house_prices)

    2、创建并训练模型

    创建线性回归模型 默认参数下,模型会计算截距(intercept)和系数(coefficient),

    使用普通最小二乘法(OLS)拟合。

    model = LinearRegression()

    用数据训练模型(学习面积和价格之间的关系) 模型会根据输入的 house_sizes 和 house_prices

    学习两者之间的线性关系:训练完成后,模型内部会保存(截距和斜率)这两个参数。

    model.fit(house_sizes, house_prices)

    3、使用模型进行预测 输入一个二维数组(或列表),这里 [[85]] 表示一个样本,

    一个特征(85 平方米)。输出是一个一维数组,包含预测值。

    predicted_price = model.predict([[85]])
    print(predicted_price)
    print(f"85 平方米的房屋预测价格:{predicted_price[0]:.2f} 万元")

    print(model.coef_)
    print(model.intercept_)

    4、可视化结果

    plt.scatter(house_sizes, house_prices, color='blue', label='实际数据')
    plt.plot(house_sizes, model.predict(house_sizes), color='red', label="预测线")

    plt.scatter([85], predicted_price, color='green', s=100, label="预测点")
    plt.xlabel('房屋面积(平方米)')
    plt.ylabel('房屋价格(万元)')
    plt.legend()
    plt.grid(True)
    plt.show()

相关知识:reshape(-1,1)

-1 的含义

-1 是一个特殊值,表示自动推断该维度的大小。它只能出现一次,因为如果有多个 -1,NumPy 无法唯一确定每个维度的大小。

例如:

原数组有 8 个元素,reshape(-1, 1) 表示新形状为 (x, 1),其中 x * 1 = 8,所以 x = 8,结果形状为 (8, 1)。

原数组有 8 个元素,reshape(2, -1) 表示新形状为 (2, y),其中 2 * y = 8,所以 y = 4,结果形状为 (2, 4)。

reshape(-1, 1) 的具体作用

当执行 arr.reshape(-1, 1) 时:

将原数组转换为一个二维数组,行数自动计算,列数为 1。

结果是一个列向量:每一行只有一个元素,相当于把一维数组"竖起来"。

model.coef_model.intercept_ 是线性回归模型训练后自动生成的属性,分别对应模型的系数(斜率)和截距。

  • model.coef_:一个数组,存储每个特征的权重。对于一元线性回归,它只有一个值,表示自变量(房屋面积)每增加一个单位,因变量(价格)平均变化多少。

  • model.intercept_:一个浮点数,表示当所有特征为 0 时的预测值(即回归直线与 y 轴的交点)

地址: https://www.runoob.com/ml/ml-tutorial.htmlhttps://www.runoob.com/ml/ml-tutorial.html

相关推荐
zhangfeng113316 小时前
小龙虾 wordbuddy 安装浏览器控制器 agent-browser npm install -g agent-browse
前端·人工智能·npm·node.js
阿里云大数据AI技术16 小时前
一条 SQL 生成广告:Hologres 如何实现素材生成到投放分析一体化
人工智能·sql
liudanzhengxi17 小时前
GitSubmodule避坑全攻略
人工智能·新人首发
用户4252108006017 小时前
Claude Code Linux 服务器部署与配置
人工智能
OJAC11117 小时前
学过Python却不敢投AI岗,他最后拿下12K offer
人工智能
Bigger17 小时前
因为看不懂小棉袄的画,我写了个 AI 程序帮我“翻译”她的世界
前端·人工智能·ai编程
CeshirenTester17 小时前
LangChain的工具调用 vs 原生Skill API:性能差在哪儿?
java·人工智能·langchain
爱问的艾文17 小时前
八周带你手搓AI应用-第二周-让AI更像人-第1天-流式输出改造
人工智能
多年小白17 小时前
【周末消息面汇总】2026年5月10日(周日)
人工智能·科技·机器学习·ai·金融
码农小白AI17 小时前
宠物用品耐磨检测走向标准化新阶段:IACheck让AI报告审核更无忧更稳定
人工智能