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

机器学习的三大要素

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

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

相关推荐
li三河2 小时前
paddleocr识别和推理,并用MNN进行推理
人工智能·深度学习·mnn
yichudu2 小时前
AI 编程发展与工具介绍
人工智能
bryant_meng2 小时前
【AI】《Explainable Machine Learning》(2)
人工智能·深度学习·机器学习·计算机视觉·explanation
witAI2 小时前
**AI仿真人剧技术解析2025,专业评估与适配指南**
人工智能·python
企业架构师老王2 小时前
OpenClaw引爆赛博大屠杀:企业数字化转型中AI Agent的风险边界与实在Agent落地指南
人工智能·ai
卡梅德生物小喇叭2 小时前
卡梅德生物技术快报|基于 CHO 细胞的百日咳毒素中和抗体检测方法构建与验证
人工智能·经验分享·elementui·微信公众平台·facebook
梦想很大很大2 小时前
从 0 到 1 实现 AI Agent(01):LLM 对话 + 本地 Tool 调用
人工智能·llm·agent
云境筑桃源哇2 小时前
navigare登上中国时装周 「质」造无界,焕新航海风尚
大数据·人工智能
EVERSPIN2 小时前
语音识别芯片的功能与优势有哪些
人工智能·语音识别·语音识别芯片