Day6: Regression

本文介绍了一个简单的回归问题示例:预测宝可梦的战斗力CP值。通过建立数学模型,采用损失函数衡量预测准确性,并利用梯度下降法来调整模型参数,最终找到最佳函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习地址
参考博客
Regression: output a scalar
举例
应用举例
Example Application
任务:预测宝可梦的CP值
在这里插入图片描述
上标表示一个object整体,下表表示一个object里的某些特征,不同的下标表示不同的feature。例如在本例中, x c p x_{cp} xcp表示宝可梦的战斗力CP, x h x_h xh表示宝可梦的身高, x s x_s xs表示宝可梦的种类。
步骤
Step 1: Model(a set of function)
在这里插入图片描述
w, b 为模型的参数,有的可能会不合理,需要自动挑出合理的function.

Step 2: Goodness of Function
评估函数
在这里插入图片描述
我们用Loss Function衡量function的好坏,
L ( f ) = ∑ n = 1 10 ( y ^ n − f ( x c p n ) ) 2 L(f)=\sum_{n=1}^{10}(\hat{y}^n-f(x_{cp}^{n}))^2 L(f)=n=110(y^nf(xcpn))2
y ^ n \hat{y}^n y^n–进化后的cp值,f–预测出来的结果
在本示例中,function包含参数 w w w b b b,因此loss function可表示为, L ( w , b ) = ∑ n = 1 10 ( y ^ n − ( b + w ∗ x c p n ) ) 2 L(w,b)=\sum_{n=1}^{10}(\hat{y}^n-(b+w*x_{cp}^n))^2 L(w,b)=n=110(y^n(b+wxcpn))2
在这里插入图片描述
下图是在training data上的loss function
在这里插入图片描述
Step 3:Best Function
理论上,如果存在评估标准和函数空间,就可以使用穷举法选择出最优函数。但就实际而言,我们无法在有限时间内求出最优函数值。因此,我们把问题进行转化,把求最优函数问题转化为最优化问题。
在这里插入图片描述
Gradient Descent是一个更为general的方法,适用于各种不同的test,只要定义出Loss function,并且Loss function对输入参数 w w w, b b b可微分。
假设如下情况,Loss function 只有一个参数 w w w
在这里插入图片描述
利用gradient decent解决问题步骤如下:
(1)随机找一个参数位置 w 0 w^0 w0
(2)计算 d L d w ∣ w = w 0 \dfrac{dL}{dw}|_{w=w^0} dwdLw=w0 ,若切线斜率为负,则增加 w w w;若为正,则减小 w w w。数学表达如下: w 1 ← w 0 − η d L d w ∣ w = w 0 w^1\leftarrow w^0-\eta\dfrac{dL}{dw}|_{w=w^0} w1w0ηdwdLw=w0
其中, − η d L d w ∣ w = w 0 -\eta\dfrac{dL}{dw}|_{w=w^0} ηdwdLw=w0
η \eta η称为学习率(learning rate),决定学习的速度。
(3)接下来计算 d L d w ∣ w = w 1 \dfrac{dL}{dw}|_{w=w^1} dwdLw=w1 w 2 ← w 1 − η d L d w ∣ w = w 1 w^2\leftarrow w^1-\eta\dfrac{dL}{dw}|_{w=w^1} w2w1ηdwdLw=w1
…Many iteration
直到, − η d L d w ∣ w = w T = 0 -\eta\dfrac{dL}{dw}|_{w=w^T}=0 ηdwdLw=wT=0

Question: How about two parameters?
(1)随机选取两个初始值 w 0 w^0 w0, b 0 b^0 b0
(2)计算偏微分,

<think>好的,我现在遇到了一个FileNotFoundError,具体错误信息是说找不到文件'linear_regression_factory_day_twater_model.pkl'。首先,我需要理解这个错误的含义。FileNotFoundError意味着Python在尝试打开或访问一个文件时,系统找不到指定的路径或文件。错误详情中的Errno 2进一步确认了这一点,说明确实是文件或目录不存在。 接下来,我需要确定这个文件应该存在的位置。用户可能在代码中指定了某个路径来加载这个.pkl文件,但现在这个路径下并没有该文件。可能的原因有几个:一是文件名拼写错误;二是文件不在当前工作目录下;三是文件确实没有被创建或保存过。 首先,我应该检查文件名是否正确。比如,用户可能保存文件时的名字和加载时的名字不一致,或者大小写有误。例如,'Linear_Regression_Factory_Day_TWater_Model.pkl'和当前使用的文件名可能不同,这种细微的拼写差异会导致错误。 其次,确认文件所在的目录是否正确。Python的当前工作目录可能和用户预期的不一样。如果文件存储在子目录中,而代码中没有指定正确的相对路径或绝对路径,就会找不到文件。这时候可以使用绝对路径来测试,或者检查相对路径是否正确。 另外,如果这个.pkl文件是通过某个程序生成的,比如用joblib或pickle保存的模型,那么需要确保保存文件的代码确实成功运行,并且没有抛出异常。有可能在保存过程中出现了错误,导致文件没有被正确生成,或者保存路径设置有误。 解决方法方面,首先可以尝试打印当前的工作目录,确认程序执行的位置。可以使用os.getcwd()来查看当前目录,再检查该目录下是否存在目标文件。如果文件在其他目录,需要调整路径,或者将文件移动到正确的位置。 如果确认文件不存在,可能需要重新生成这个.pkl文件。比如重新运行模型训练的代码,并确保保存步骤正确执行。在保存模型时,最好使用绝对路径,或者明确指定存储路径,避免依赖当前工作目录。 此外,处理文件路径时,使用os.path模块中的函数来处理路径拼接会更可靠,比如os.path.join(),这样可以避免不同操作系统的路径分隔符问题。 还有一个可能性是文件权限问题,但这种情况在个人开发环境中比较少见,更多出现在服务器或共享环境中。不过,如果排除了其他原因,也可以检查文件的读写权限。 总结一下,解决这个错误需要逐步排查文件名、路径是否正确,确认文件是否确实存在,必要时重新生成文件或调整代码中的路径设置。同时,添加异常处理,比如try-except块,可以在文件不存在时给出更友好的提示,或者执行备用逻辑,比如重新训练模型。</think>针对遇到的 `FileNotFoundError`,以下是逐步分析和解决方案: --- ### **错误原因分析** 1. **文件不存在** Python 尝试访问 `linear_regression_factory_day_twater_model.pkl` 时,系统未找到该文件。 - 可能原因1:文件名称拼写错误(如大小写不一致、多空格等)。 - 可能原因2:文件未保存在当前工作目录,或路径未正确指定。 - 可能原因3:文件从未被生成(如模型未保存成功)。 --- ### **解决步骤** #### **1. 检查文件名称和路径** - **确认文件名完全一致** 检查代码中加载文件的语句,确保名称与保存时的名称**完全一致**(包括大小写和扩展名)。例如: ```python # 错误示例:大小写不一致 pd.read_pickle("Linear_Regression_Factory_Day_TWater_Model.pkl") # 实际文件名是 "linear_regression_factory_day_twater_model.pkl" # 正确写法 pd.read_pickle("linear_regression_factory_day_twater_model.pkl") ``` - **检查文件路径** 如果文件不在当前工作目录: - 使用绝对路径明确指定文件位置: ```python import os file_path = os.path.abspath("path/to/linear_regression_factory_day_twater_model.pkl") ``` - 打印当前工作目录,确认程序执行位置: ```python import os print(os.getcwd()) # 输出当前目录 ``` --- #### **2. 重新生成文件** 如果文件确实未被创建: - **检查模型保存代码** 确保保存模型的代码已正确执行且无报错。例如: ```python from sklearn.externals import joblib # 训练模型后保存 joblib.dump(model, 'linear_regression_factory_day_twater_model.pkl') # 确保此代码运行成功 ``` - **添加异常处理** 在加载文件时添加 `try-except` 逻辑,若文件不存在则重新生成: ```python try: model = joblib.load('linear_regression_factory_day_twater_model.pkl') except FileNotFoundError: print("模型文件未找到,正在重新训练...") # 重新训练模型并保存 model.fit(X_train, y_train) joblib.dump(model, 'linear_regression_factory_day_twater_model.pkl') ``` --- #### **3.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值