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

📅 发布时间:2026/7/6 12:23:26 👁️ 浏览次数:
[菜鸟教程] 机器学习教程第一课
机器学习的三大要素机器学习包含三个基本要素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(f85 平方米的房屋预测价格{predicted_price[0]:.2f} 万元) print(model.coef_) print(model.intercept_) # 4、可视化结果 plt.scatter(house_sizes, house_prices, colorblue, label实际数据) plt.plot(house_sizes, model.predict(house_sizes), colorred, label预测线) plt.scatter([85], predicted_price, colorgreen, s100, label预测点) plt.xlabel(房屋面积平方米) plt.ylabel(房屋价格万元) plt.legend() plt.grid(True) plt.show()相关知识reshape(-1,1)-1 的含义-1 是一个特殊值表示自动推断该维度的大小。它只能出现一次因为如果有多个 -1NumPy 无法唯一确定每个维度的大小。例如原数组有 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