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

机器学习的三大要素

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

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

相关推荐
moonsims几秒前
Voliro 无人机-Aerial Mobile Robot(空中移动机器人):把无人机从“飞过去拍摄”,升级成“飞过去并与目标物理接触、测量甚至操作”
前端·人工智能·安全·无人机·量子计算
职场的momo1 小时前
用户讨论:算法开发Offer决赛:大疆纯后端Agent与网易游戏测试,对内AI跳槽难?
人工智能·游戏·跳槽
wish3661 小时前
EmployeeAssistant 智能问答服务:基于 pgvector 与 LLM 的企业知识库助手
人工智能·语言模型·自然语言处理·local llm
检信智能2 小时前
检信 Allemotion 多模态融合技术,解析非接触情绪采集的底层逻辑
人工智能·语音识别
RoboWizard3 小时前
固态硬盘对游戏帧数有影响吗?
人工智能
2301_768103496 小时前
AI视频创作Agent实战03:DeepSeek文案裂变与草稿版本控制
人工智能
火山引擎开发者社区6 小时前
Anker 首届黑客松挑战赛|9 月 7 日报名启动
人工智能
Dawson Zhu7 小时前
工作流与 Agent 的工程选型:从“控制权归属“看 LLM 应用架构
人工智能·语言模型·架构·aigc·agi
计算机源码社8 小时前
【大数据项目实战】基于大数据的影视内容生态综合质量分析与可视化-基于数据挖掘的影视内容类型共现与口碑聚类分析系统
大数据·人工智能·python·数据挖掘·数据分析·毕业设计·课程设计
C^h8 小时前
pytorch 适合初学者 0基础学习
人工智能·pytorch·python