机器学习:欠拟合过拟合岭回归预测波士顿房价
2023-09-14 09:07:15 时间
欠拟合过拟合
欠拟合:
-训练集表现不好,而且训练集以外的数据也表现不好
-原因:
-数据特征太少
-交叉验证:训练集结果表现不行
-解决:增加数据特征
过拟合:
-训练集表现很好,但在训练集以外的数据集表现不好
-原因:
-数据特征过多
-测试集表现不行
-解决:
-进行特征选择,消除关联性大的特征
-交叉验证
-正则化
线性关系
非线性关系
特征选择
-过滤式:低方差特征
-嵌入式:正则化,决策树,神经网络
L2正则化
作用:可以使得W的每个元素都很小,都接近于0
优点:越小的参数说明模型越简单,越简单的模型则越不容易产生过拟合
回归:解决过拟合的方式
线性回归 容易出现过拟合,为了把训练数据表现的更好
L2正则化 Ridge岭回归,带有正则化的线性回归,解决过拟合
岭回归
sklearn.linear_model.Ridge
alpha 正则化力度 力度越大,模型越简单, 取值0~1 1~10
coef_ 回归系数
回归得到的回归系数更符合实际,更可靠,
另外,能让估计参数的波动范围变小,变得更稳定,
在存在病态数据偏多的研究中有较大的实用价值
代码示例
综合 线性回归,梯度下降,岭回归
# -*- coding: utf-8 -*-
from sklearn.datasets import load_boston
from sklearn.linear_model import LinearRegression, SGDRegressor, Ridge
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
# 加载数据
boston = load_boston()
# 训练集,测试集拆分
X_train, X_test, y_train, y_test = train_test_split(
boston.data, boston.target, test_size=0.25)
# 数据标准化处理
# 特征值 标准化
std_x = StandardScaler()
X_train = std_x.fit_transform(X_train)
X_test = std_x.transform(X_test)
# 目标值 标准化
std_y = StandardScaler()
y_train = std_y.fit_transform(y_train.reshape(-1, 1))
y_test = std_y.transform(y_test.reshape(-1, 1))
# 正规方程
lr = LinearRegression()
lr.fit(X_train, y_train)
print(lr.coef_)
y_lr_predict = std_y.inverse_transform(lr.predict(X_test))
# 梯度下降
sgd = SGDRegressor()
sgd.fit(X_train, y_train)
print(sgd.coef_)
y_sgd_predict = std_y.inverse_transform(sgd.predict(X_test))
# 岭回归
ridge = Ridge()
ridge.fit(X_train, y_train)
print(ridge.coef_)
y_ridge_predict = std_y.inverse_transform(ridge.predict(X_test))
# 均方误差
lr_mse = mean_squared_error(std_y.inverse_transform(y_test), y_lr_predict)
sgd_mse = mean_squared_error(std_y.inverse_transform(y_test), y_sgd_predict)
ridge_mse = mean_squared_error(std_y.inverse_transform(y_test), y_ridge_predict)
print(lr_mse)
print(sgd_mse)
print(ridge_mse)
"""
20.887918065953176
21.059487199230684
20.87817117552608
"""
相关文章
- 大规模机器学习在LinkedIn预测模型中的应用实践
- Spark机器学习之推荐引擎
- 【玩转数据系列八】机器学习算法的离线调度实现-广告CTR预测
- 机器学习笔记 - 前馈神经网络(FFNN)用作回归问题的波士顿房价预测
- Atitit 人工智能 统计学 机器学习的相似性 一些文摘收集 没有人工智能这门功课,人工智能的本质是统计学和数学,就是通过机器对数据的识别、计算、归纳和学习,然后做出下一步判断和决策的科学
- AI:人工智能领域算法思维导图集合之有监督学习/无监督学习/强化学习类型的具体算法简介(预测函数/优化目标/求解算法)、分类/回归/聚类/降维算法模型选择思路、11类机器学习算法详细分类之详细攻略
- ML:数据科学/机器学习领域经验总结—对于特征个数大于样本量的高维数据集,用什么算法进行预测,效果会更好?
- DataScience:机器学习中特征工程之连续型变量离散化—变量分箱的简介、常用方法、案例应用(评分卡模型为例)之详细攻略
- ML之分类预测:以六类机器学习算法(kNN、逻辑回归、SVM、决策树、随机森林、提升树、神经网络)对糖尿病数据集(8→1)实现二分类模型评估案例来理解和认知机器学习分类预测的模板流程
- ML之ME/LF:机器学习中回归预测模型评估指标(MSE/RMSE/MAE)简介、使用方法、代码实现、案例应用之详细攻略
- ML之回归预测:利用十(xgboost,10-1)种机器学习算法对无人驾驶汽车系统参数(2017年的data,18+2)进行回归预测值VS真实值——bug调试记录
- ML之Validation:机器学习中模型验证方法的简介、代码实现、案例应用之详细攻略
- 基于机器学习算法与历史数据预测未来的站点关闭(Matlab代码实现)
- 机器学习案例(五):Covid-19 死亡人数预测
- 机器学习案例(三):未来销售预测
- 数学建模学习(109):几行代码训练几十种机器学习模型
- OpenMLDB + Jupyter Notebook:快速搭建机器学习应用
- DNS通道检测 国外学术界研究情况——研究方法:基于流量,使用机器学习分类算法居多,也有使用聚类算法的;此外使用域名zif low也有
- 【机器学习】13、梯度下降方法对比
- 【机器学习】9、最小二乘法和岭回归
- python 与机器学习实战(何宇健)代码下载