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

机器学习的三大要素

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

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

相关推荐
TeDi TIVE2 小时前
开源模型应用落地-工具使用篇-Spring AI-高阶用法(九)
人工智能·spring·开源
MY_TEUCK2 小时前
Sealos 平台部署实战指南:结合 Cursor 与版本发布流程
java·人工智能·学习·aigc
三毛的二哥3 小时前
BEV:典型BEV算法总结
人工智能·算法·计算机视觉·3d
j_xxx404_3 小时前
大语言模型 (LLM) 零基础入门:核心原理、训练机制与能力全解
人工智能·ai·transformer
飞哥数智坊3 小时前
全新 SOLO 在日常办公中的实际体验
人工智能·solo
南宫萧幕3 小时前
自控PID+MATLAB仿真+混动P0/P1/P2/P3/P4构型
算法·机器学习·matlab·simulink·控制·pid
<-->3 小时前
Megatron(全称 Megatron-LM,由 NVIDIA 开发)和 DeepSpeed(由 Microsoft 开发)
人工智能·pytorch·python·深度学习·transformer
朝新_3 小时前
【Spring AI 】图像与语音模型实战
java·人工智能·spring
Yuanxl9034 小时前
神经网络-Sequential 应用与实战
人工智能·深度学习·神经网络
火山引擎开发者社区4 小时前
Seedance 2.0 1080P 生成能力正式上线
人工智能