Linear Regression--自我实现和学习笔记

本文详细探讨了线性回归,包括代价函数、梯度下降算法、特征缩放、学习速率、特征选择、多项式回归以及正规方程。通过实例介绍了如何在实际问题中应用线性回归,并提到了sklearn库的使用,以及正规方程的局限性和解决策略。
摘要由CSDN通过智能技术生成

Linear Regression

最近在Github上学习机器学习,主要是在黄海广博士的项目下学习吴恩达的机器学习教程,做下笔记。
如有需要:链接自取(click)

代价函数 Cost Function

又称误差平方和函数,是指当前所拟合的直线与各点误差的平方和.这里使用单变量做下解释。
x为一特征,y为正确答案,直线h(x)是预测值
图中的x为一特征,y为正确答案,直线h(x)是预测值,代价函数J(x)就是这些蓝色线段距离平方的和。
h ( x ) = θ 0 + θ 1 ∗ x h(x)=\theta_0+\theta_1*x h(x)=θ0+θ1x
J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h ( x ( i ) ) − y ( i ) ) 2 J(\theta_0,\theta_1)=\frac{1}{2m}\sum_{i=1}^{m}(h(x^{(i)})-y^{(i)})^2 J(θ0,θ1)=2m1i=1m(h(x(i))y(i))2
其中m表示数据的份数, x ( i ) x^{(i)} x(i)表示第i份数据,单变量可以采用 θ 0 , θ 1 \theta_0,\theta_1 θ0,θ1,而对于多变量多个特征时主要采用矩阵的方法计算,这时代价函数记为 J ( θ ) J(\theta) J(θ)

对于不同的模型参数( θ 0 , θ 1 … \theta_0,\theta_1\dots θ0,θ1),代价函数会有不同的值,但是总存在一个最小值。对于上面的单变量代价函数,可以知道,在 θ 0 , θ 1 \theta_0,\theta_1 θ0,θ1的取值范围下, J ( θ ) J(\theta) J(θ)的图像总是会成为一种弓形结构(bow shape)
bow shape

梯度下降算法 Batch Gradient Descent

算法的目的是找到代价最小的点。
算法的含义:一开始任意取一点,每次向低处靠近,最终到达局部最低点(而对于线性回归,是一种弓形结构,只存在全局最低点)
batch gradient descent
在每次下降中都是改变了 θ \theta θ使得拟合直(曲)线发生变化。
算法公式 α \alpha α是学习率
单变量
在这里插入图片描述
多变量
在这里插入图片描述
唯一不同就是在于模型参数的增多,但是不影响算法本身,因为算法实现利用了矩阵的思想,加快了速度,也简化了算法。
数学表达:
J ( θ ) = 1 2 m

Jupyter Notebook 是一款开源的 Web 应用,允许用户创建和共享包含实时代码、方程、可视化和解释性文本的文档。要使用 Jupyter Notebook 训练线性回归模型,你可以按照以下步骤操作: 1. 首先确保安装了 Python 及其数据分析相关的库,比如 NumPy、pandas 以及机器学习库 scikit-learn。 2. 启动 Jupyter Notebook 并创建一个新的笔记本。 3. 导入必要的库: ```python import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error, r2_score ``` 4. 准备你的数据。通常这会涉及加载数据集,可以使用 pandas 的 `read_csv` 函数或其他方法读取数据: ```python # 假设有一个名为 'data.csv' 的数据集 df = pd.read_csv('data.csv') ``` 5. 数据预处理。这可能包括处理缺失值、转换数据格式等,确保数据适合线性回归模型。 6. 分割数据为训练集和测试集: ```python X = df[['特征列1', '特征列2']] # 假设我们使用 '特征列1' 和 '特征列2' 作为特征 y = df['目标列'] # 假设 '目标列' 是我们要预测的变量 # 分割数据集,70% 作为训练集,30% 作为测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0) ``` 7. 创建线性回归模型并训练它: ```python # 创建线性回归模型实例 lin_reg = LinearRegression() # 使用训练集数据拟合模型 lin_reg.fit(X_train, y_train) ``` 8. 使用模型进行预测,并评估模型性能: ```python # 使用测试集数据进行预测 y_pred = lin_reg.predict(X_test) # 计算均方误差 (MSE) 和 R平方值 mse = mean_squared_error(y_test, y_pred) r2 = r2_score(y_test, y_pred) print("均方误差 (MSE):", mse) print("R平方值:", r2) ``` 9. 可以查看模型的系数和截距: ```python print("系数:", lin_reg.coef_) print("截距:", lin_reg.intercept_) ``` 以上就是在 Jupyter Notebook 中使用线性回归模型进行数据训练和评估的步骤。记得根据你的数据集调整特征列和目标列。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值