某兴年终奖,10年经验,拿了15万??


今天看到一个关于年总结的帖子,说是某兴年终奖,10年经验,拿了15万。
具体不知道真假,以我在互联网的经验,基本上15万差不多。
不过不同的公司,情况不一样,大家可以作为参考。

这不就有人现身说法了,不同的部门、不同的产品线,年终奖不同。
有的部门确实香。
肯定的一点是,只要是赚钱的部门,一般少不了。

今天给大家分享一个基础算法,线性回归。因为最近不少初学者从线性回归开始,但是遇到不少细节的问题。
咱们今天做一个完整的总结!
另外,今天给大家准备了机器学习和深度学习相关的论文合集!

文末获取~
目录
线性回归原理
线性回归概述
线性回归公式
损失函数及最小二乘法
正则化方法
数据集介绍
加利福尼亚房价数据集
数据集特征
数据预处理
数据清洗
特征选择与特征工程
模型训练与评估
数据集划分
模型训练
模型评估
模型优化
超参数调优
交叉验证
正则化
结果展示与可视化
残差分析
预测结果可视化
完整Python代码
结论与讨论
1. 线性回归原理
线性回归概述
线性回归(Linear Regression)是一种简单且广泛使用的回归分析方法,用于建模两个或多个变量之间的关系。其基本思想是通过一个线性方程来拟合数据点,以最小化预测值与实际值之间的误差。线性回归广泛应用于经济学、金融学、生物统计学等领域。
线性回归公式
线性回归的基本形式是通过一个线性方程来表示目标变量 
 和一个或多个预测变量(特征) 
 之间的关系:
其中:
 是目标变量。
 是预测变量。
 是截距项。
 是回归系数。
 是误差项。
损失函数及最小二乘法
在线性回归中,常用的损失函数是均方误差(MSE),即所有数据点的预测值与实际值之间差值的平方和的平均值:
最小二乘法旨在找到一组回归系数 
,使得MSE最小化。
正则化方法
为了防止模型过拟合,常用的正则化方法有:
岭回归(Ridge Regression):在损失函数中增加 
 正则化项:
套索回归(Lasso Regression):在损失函数中增加 
 正则化项:
2. 数据集介绍
加利福尼亚房价数据集
加利福尼亚房价数据集是一个常用的回归分析数据集,包含了加利福尼亚州不同区域的房价和相关特征。这个数据集可以用于训练和测试房价预测模型。
数据集特征
数据集中包含以下特征:
MedInc:区域的中位收入
HouseAge:区域的房屋年龄中位数
AveRooms:每个家庭的平均房间数
AveBedrms:每个家庭的平均卧室数
Population:区域的人口
AveOccup:每户的平均入住人数
Latitude:区域的纬度
Longitude:区域的经度
MedHouseVal:区域的房屋中位价(目标变量)
3. 数据预处理
数据清洗
首先导入数据并检查数据的完整性和一致性。
import pandas as pdimport numpy as np# 加载数据集from sklearn.datasets import fetch_california_housingcalifornia = fetch_california_housing()# 转换为DataFramedata = pd.DataFrame(california.data, columns=california.feature_names)data['MedHouseVal'] = california.target# 查看数据集的基本信息print(data.info())print(data.describe())
特征选择与特征工程
检查是否有缺失值,并进行必要的处理。
# 检查缺失值print(data.isnull().sum())# 进行特征工程data['RoomsPerHousehold'] = data['AveRooms'] / data['AveOccup']data['BedroomsPerRoom'] = data['AveBedrms'] / data['AveRooms']data['PopulationPerHousehold'] = data['Population'] / data['AveOccup']
4. 模型训练与评估
数据集划分
将数据集划分为训练集和测试集。
from sklearn.model_selection import train_test_split# 特征和目标变量X = data.drop('MedHouseVal', axis=1)y = data['MedHouseVal']# 划分训练集和测试集X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
模型训练
使用线性回归模型进行训练。
from sklearn.linear_model import LinearRegression# 创建线性回归模型model = LinearRegression()# 训练模型model.fit(X_train, y_train)
模型评估
使用均方误差(MSE)和决定系数 
 评估模型。
from sklearn.metrics import mean_squared_error, r2_score# 预测y_pred = model.predict(X_test)# 计算MSE和R^2mse = mean_squared_error(y_test, y_pred)r2 = r2_score(y_test, y_pred)print(f'MSE: {mse}')print(f'R^2: {r2}')
5. 模型优化
超参数调优
通过网格搜索进行超参数调优。
from sklearn.model_selection import GridSearchCVfrom sklearn.linear_model import Ridge# 设置参数网格param_grid = {'alpha': [0.1, 1.0, 10.0, 100.0, 1000.0]}# 创建岭回归模型ridge = Ridge()# 网格搜索grid_search = GridSearchCV(ridge, param_grid, cv=5, scoring='neg_mean_squared_error')grid_search.fit(X_train, y_train)# 最佳参数print(f'Best parameters: {grid_search.best_params_}')
交叉验证
使用交叉验证评估模型的性能。
from sklearn.model_selection import cross_val_score# 交叉验证scores = cross_val_score(model, X, y, cv=5, scoring='neg_mean_squared_error')print(f'Cross-validated MSE: {np.mean(-scores)}')
正则化
使用岭回归进行正则化。
# 使用最佳参数的岭回归模型ridge_best = Ridge(alpha=grid_search.best_params_['alpha'])ridge_best.fit(X_train, y_train)# 预测y_pred_ridge = ridge_best.predict(X_test)# 评估mse_ridge = mean_squared_error(y_test, y_pred_ridge)r2_ridge = r2_score(y_test, y_pred_ridge)print(f'Ridge Regression MSE: {mse_ridge}')print(f'R2: {r2_ridge}')
6. 结果展示与可视化
残差分析
绘制残差图。
import matplotlib.pyplot as plt# 计算残差residuals = y_test - y_pred# 绘制残差图plt.scatter(y_pred, residuals)plt.xlabel('Predicted Values')plt.ylabel('Residuals')plt.title('Residual Plot')plt.axhline(y=0, color='r', linestyle='--')plt.show()
预测结果可视化
绘制实际值与预测值对比图。
# 绘制实际值与预测值对比图plt.scatter(y_test, y_pred)plt.xlabel('Actual Values')plt.ylabel('Predicted Values')plt.title('Actual vs Predicted')plt.plot([min(y_test), max(y_test)], [min(y_test), max(y_test)], color='r', linestyle='--')plt.show()

最后
最后给大家准备了机器学习和深度学习相关的论文合集!

点击名片,回复「002」即可!
好了,今天的内容先这样,继续想看解决什么问题,评论区留言~
最后有一个论文福利是给大家申请到的,9.9可以帮大家安排的明明白白的~

到顶部