首页 AI技术应用内容详情

设置随机种子,保证每次运行数据都一样

2026-02-20 363 AI链物

别被吓到,手把手带你用Python搞出第一个AI模型**


朋友,你是不是也这样?刷到那些讲AI模型、机器学习的文章,一看标题就热血沸腾——“十分钟训练你的AI!”“用Python轻松搞定图像识别!”结果点进去,满屏的数学公式、陌生的库名、还有一堆看起来像天书的代码,鼠标滚轮没滑两下,心就凉了半截,默默关掉页面,心里嘀咕:“这玩意儿,果然不是我能玩的。”

打住!今天咱们不聊那些高深的,不说卷积神经网络,也不讲什么反向传播,咱们就干一件最实在的事:用Python,从零开始,真真正正地“训练”出一个能干活儿的、最简单的AI模型。 对,训练”,咱们不调用现成的、封装好的高级API(那叫使用,不叫训练),而是像教小孩一样,喂数据,调参数,看着它一点点“学会”,我保证,你看完就能自己动手试,而且能拍着胸脯说:“嘿,我搞过一个AI了!”

咱们今天要教的这个“小孩”,任务超级简单:预测一条广告投入和销售额之间的关系。 说白了,就是给你一堆以往的数据(比如花了1000块广告费,卖了2000块货;花了2000块,卖了3500块…),让AI学会里面的规律,然后你告诉它一个新的广告预算,它来猜大概能卖多少钱,这个模型在机器学习里有个大名鼎鼎但听起来很唬人的名字——线性回归,别怕,它其实就是找一条最合适的直线,来拟合那些数据点。

第一步:搭好你的“工作台”

设置随机种子,保证每次运行数据都一样 第1张

工欲善其事,必先利其器,你需要两样东西:一是Python环境(推荐用Anaconda,它帮你打包好了很多科学计算库,省心),二是几个关键的Python库,打开你的命令行(Windows叫CMD或PowerShell,Mac叫终端),噼里啪啦敲几下:

pip install numpy pandas matplotlib scikit-learn
  • numpy: 处理数组和数学运算的基石,速度快。
  • pandas: 处理表格数据的神器,读文件、清洗数据全靠它。
  • matplotlib: 画图用的,咱们得看看数据长啥样,模型拟合得好不好。
  • scikit-learn: 今天的主角,机器学习工具箱,里面什么都有。

装好了?恭喜,你的AI实验室已经建成80%了。

第二步:准备“教材”——数据

没有数据,AI就是巧妇难为无米之炊,咱们自己造一点简单的数据,方便理解,打开你的Python编辑器(Jupyter Notebook, VS Code, PyCharm都行),新建一个文件,开始写:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
np.random.seed(42)
# 生成模拟数据:假设广告费在1到10万之间
ad_costs = np.random.rand(50) * 9 + 1  # 50个数据点,范围1-10
# 假设真实的销售额是广告费的2.5倍,再加上一些随机波动(更真实)
sales = 2.5 * ad_costs + np.random.randn(50) * 2 + 5  # 基础关系是2.5倍,加一点噪声和截距
# 把数据放进一个好看的表格里
df = pd.DataFrame({'广告费(万)': ad_costs, '销售额(万)': sales})
print(df.head())  # 看看前5行长什么样
# 画个图,直观感受一下
plt.figure(figsize=(8,5))
plt.scatter(ad_costs, sales, alpha=0.6, edgecolors='w', s=80)
plt.xlabel('广告费投入 (万)')
plt.ylabel('销售额 (万)')'广告费与销售额关系散点图')
plt.grid(True, linestyle='--', alpha=0.5)
plt.show()

运行一下,你应该能看到一个表格和一张散点图,图上那些点,大致沿着一条斜线分布,但又不完全在线上——这就对了!真实世界的数据哪有那么完美的,我们的任务,就是找到那条“最合适”的直线。

第三步:开练!让AI“学习”

请出 scikit-learn,它的设计哲学特别好,各种模型的训练步骤都跟搭积木一样,流程一致。

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
# 1. 准备特征(X)和目标(y),特征就是输入(广告费),目标就是我们要预测的输出(销售额)
X = df[['广告费(万)']]  # 注意这里要两层括号,因为模型要求输入是二维的
y = df['销售额(万)']
# 2. 把数据分成两部分:训练集和测试集。
# 训练集用来教模型,测试集用来考考它,看它学得好不好,三七开是常见分法。
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 3. 创建模型对象,对,就是一行代码。
model = LinearRegression()
# 4. 关键一步:训练!也叫“拟合”,这步就是AI学习的核心。
model.fit(X_train, y_train)
print("模型训练完成!")
print(f"我找到的直线方程是:销售额 = {model.intercept_:.2f} + {model.coef_[0]:.2f} * 广告费")

运行!看看输出,它应该会告诉你一个类似 销售额 = 某个数 + 2.几 * 广告费 的方程,这个方程,就是AI从训练数据里“悟”出来的规律。coef_ 是斜率(大概在2.5附近),intercept_ 是截距,是不是和我们造数据时用的 5 * x + 噪声 很接近?AI把噪声的影响平均掉了,找到了最核心的关系。

第四步:验收成果,看看它“考”得怎么样

光说不练假把式,是骡子是马拉出来遛遛。

# 用测试集(模型没见过的数据)来预测
y_pred = model.predict(X_test)
# 画图对比一下
plt.figure(figsize=(10,6))
plt.scatter(X_train, y_train, color='blue', alpha=0.6, label='训练数据')
plt.scatter(X_test, y_test, color='green', alpha=0.8, marker='s', label='测试数据真实值')
plt.plot(X_test, y_pred, color='red', linewidth=3, label='模型预测的直线')
plt.xlabel('广告费投入 (万)')
plt.ylabel('销售额 (万)')'AI模型预测效果')
plt.legend()
plt.grid(True, linestyle='--', alpha=0.5)
plt.show()
# 计算一个简单的评分,看看预测有多准(1分满分,越高越好)
from sklearn.metrics import r2_score
score = r2_score(y_test, y_pred)
print(f"模型在测试集上的R²得分:{score:.3f}")

看看那张图!红色的直线,是不是穿过了那些绿色测试点的中心区域?这意味着,对于没见过的广告费投入,我们的AI已经能给出一个比较靠谱的销售额预测了,那个R²分数如果大于0.6,就算学得不错了!

来真的:用它预测一下

# 假设老板问你,明年广告费投15万,预计能卖多少?
new_cost = np.array([[15]])  # 记得是二维格式
predicted_sales = model.predict(new_cost)
print(f"如果投入15万广告费,模型预测的销售额大约是:{predicted_sales[0]:.1f} 万元")

看,一个能实际给出建议的、最简单的AI模型,从数据生成到训练预测,齐活了!

写在最后

怎么样?是不是没有想象中那么恐怖?我们绕开了所有复杂的理论,就用最直观的方式,走完了一个标准机器学习项目的核心流程:准备数据 -> 选择模型 -> 训练拟合 -> 评估预测,这个过程,和你教孩子认东西(给他看苹果图片,告诉他这是“苹果”,然后拿一个新苹果考他)在逻辑上是一模一样的。

这只是万里长征第一步,真实的AI模型要处理图片、文字、声音,结构要复杂成千上万倍,但核心思想——用数据寻找规律,再用规律进行预测——从未改变,今天你亲手实现的这个“直线拟合”,就是所有复杂模型最朴素、最本质的原型。

下次再看到那些高大上的AI文章,希望你能会心一笑:“甭管多复杂,老祖宗不就是从找一条‘直线’开始的嘛。” 也许你就可以试着去玩更复杂的“曲线”,比如决策树、随机森林,甚至神经网络了。

动手,是破解技术恐惧症的唯一良药,代码跑起来的那一刻,所有的迷雾都会开始消散,赶紧打开你的编辑器,把上面的代码敲一遍吧!遇到报错别慌,那是学习和AI打交道的必经之路,祝你训练愉快!

(免费申请加入)AI工具导航网

AI出客网

相关标签: # python 训练ai模型

  • 评论列表 (0条)

 暂无评论,快来抢沙发吧~

发布评论