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

机器学习的三大要素

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

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

相关推荐
元岳数字人小元2 分钟前
AI数字人交互系统:多场景落地应用价值解析
人工智能·人机交互·交互
pokemen邪13 分钟前
PyTorch KernelAgent 源码解读 ---(6)--- Composer
人工智能·pytorch·composer
陈天伟教授5 分钟前
图解人工智能(90)人工智能前沿-天文学家的助手
人工智能
aaPIXa62226 分钟前
C++采样引导优化SPGO——比PGO更智能的编译器决策新方案
java·c++·人工智能
2601_9571909041 分钟前
飞行影院安装施工指南:场地、动感系统与影片内容配套
大数据·前端·人工智能
ACP广源盛139246256731 小时前
IX9104 PCIe5.0 交换芯片@ACP#国产高端 AI PC 全搭配方案
大数据·人工智能·分布式·单片机·嵌入式硬件
her_heart1 小时前
把 ChatGPT 5.6 放进需求评审和测试设计之后,我反而减少了“一次成稿”的期待
网络·人工智能·网络协议·chatgpt·测试用例
YHHLAI1 小时前
Agent 智能体开发实战 · 第六课:MCP 协议 —— 让 Agent 跨进程调用工具
前端·人工智能
QiLinkOS1 小时前
第三视觉理解徐玉生与他的商业活动(41)
人工智能·dna双螺旋归因模型·专利竞争情报系统·技术专利·新能源汽车行业技术洞察报告
秉烛夜读1 小时前
机器学习:基本术语
机器学习