回归及相关模型

2023-10-30

  1. 线性回归模型
    一元线性回归模型使用单一特征来预测响应值,拟合的最佳曲线通过最小化预测值和真实值之间的误差得到。

多元回归模型利用多个自变量估计因变量,从而解释和预测因变量的值

优点:模型简单。部署方便,回归权重可以用于结果分析,训练快
缺点:精度低,特征存在一定的共线性问题
使用技巧:需要进行归一化处理如特征选择,避免高度相关的特征同时存在

from sklearn.metrics import mean_squared_error
from sklearn.linear_model import LinearRegression
clf = LinearRegression()
clf.fit(train_data, train_target)
test_pred = clf.predict(test_data)
score = mean_squared_error(test_pred, test_target)
score
  1. K近邻回归模型
    K近邻回归模型通过找出某个样本的k个最近邻居,将这些邻居的某个属性的平均值赋给该样本,就可以得到该样本对应属性的值。
    优点:模型简单,易于理解,对于数据量小的情况方便快捷,可视化方便
    缺点:计算量大,不适合数据量大的情况,需要调参数
    使用技巧:特征需要归一化,重要特征可以适当加一定比例的权重
from sklearn.neighbors import KNeighborsRegressor
clf = KNeighborsRegressor(n_neighbors=3)
clf.fit(train_data, train_target)
test_pred = clf.predict(test_data)
score = mean_squared_error(test_pred, test_target)
score
  1. 决策树回归模型
    决策树回归可以理解为根据一定规则,将一个空间划分为若干个子空间,然后利用子空间内所有点的信息表示这个子空间,对于测试数据,只要按照特征将其归到某个子空间,便可得到对应子空间的输出值。
from sklearn.tree import DecisionTreeRegressor
clf = DecisionTreeRegressor()
clf.fit(train_data, train_target)
test_pred = clf.predict(test_data)
score = mean_squared_error(test_pred, test_target)
score
  1. 随机森林回归模型
    随机森林是通过集成学习的思想将多棵树集成的一种算法,基本单元是决策树,在回归问题中,随机森林输出所有决策树输出的平均值,随机森林回归模型的主要优点是在所有算法中,具有极好的准确率能够运行在大数据集上,能够处理高维特征的输入样本,而且不需要降维,能够评估各个特征在分类问题上的重要性,在生成过程中,能够获取到内部生成误差的一种无偏估计,对于缺省值也能获得很好的结果。
    优点:使用方便,特征无需做过多变换,精度较高,模型并行效率块
    缺点:结果不容易解释
    使用技巧:参数调节,提高精度
from sklearn.ensemble import RandomForestRegressor
clf = RandomForestRegressor(n_estimators=100)
clf.fit(train_data, train_target)
test_pred = clf.predict(test_data)
score = mean_squared_error(test_target, test_pred)
score
  1. LightGBM回归模型
    LightGBM支持高效率的并行训练,具有更快的训练速度、更低的内存消耗、更好的准确率、分布式支持、可以快速处理海量数据
    优点:精度高
    缺点:训练时间长,模型复杂
    使用技巧:有效的验证集防止过拟合,参数搜索
import lightgbm as lgb
clf = lgb.LGBMRegressor(
    learning_rate = 0.01,
    max_depth = -1,
    n_estimators = 5000,
    boosting_type='gbdt',
    random_state=2019,
    objective='regression'
)

test_pred = clf.fit(train_data, train_target, eval_metric='MSE', verbose=50)
score = mean_squared_error(test_target, test_pred)
score
  1. 基于核的岭回归
folds = KFold(n_splits=5, shuffle=True, random_state=13)
oof_kr_383 = np.zeros(train_shape)
predictions_kr_383 = np.zeros(len(X_test_383))

for fold_, (trn_idx, val_idx) in enumerate(folds.split(X_train_383, y_train)):
    print("fold n°{}".format(fold_+1))
    tr_x = X_train_383[trn_idx]
    tr_y = y_train[trn_idx]
    #Kernel Ridge Regression 岭回归
    kr_383 = kr()
    kr_383.fit(tr_x,tr_y)
    oof_kr_383[val_idx] = kr_383.predict(X_train_383[val_idx])
    
    predictions_kr_383 += kr_383.predict(X_test_383) / folds.n_splits

print("CV score: {:<8.8f}".format(mean_squared_error(oof_kr_383, target)))
  1. 普通岭回归
folds = KFold(n_splits=5, shuffle=True, random_state=13)
oof_ridge_383 = np.zeros(train_shape)
predictions_ridge_383 = np.zeros(len(X_test_383))

for fold_, (trn_idx, val_idx) in enumerate(folds.split(X_train_383, y_train)):
    print("fold n°{}".format(fold_+1))
    tr_x = X_train_383[trn_idx]
    tr_y = y_train[trn_idx]
    #使用岭回归
    ridge_383 = Ridge(alpha=1200)
    ridge_383.fit(tr_x,tr_y)
    oof_ridge_383[val_idx] = ridge_383.predict(X_train_383[val_idx])
    
    predictions_ridge_383 += ridge_383.predict(X_test_383) / folds.n_splits

print("CV score: {:<8.8f}".format(mean_squared_error(oof_ridge_383, target)))
  1. 使用ElasticNet 弹性网络
folds = KFold(n_splits=5, shuffle=True, random_state=13)
oof_en_383 = np.zeros(train_shape)
predictions_en_383 = np.zeros(len(X_test_383))

for fold_, (trn_idx, val_idx) in enumerate(folds.split(X_train_383, y_train)):
    print("fold n°{}".format(fold_+1))
    tr_x = X_train_383[trn_idx]
    tr_y = y_train[trn_idx]
    #ElasticNet 弹性网络
    en_383 = en(alpha=1.0,l1_ratio=0.06)
    en_383.fit(tr_x,tr_y)
    oof_en_383[val_idx] = en_383.predict(X_train_383[val_idx])
    
    predictions_en_383 += en_383.predict(X_test_383) / folds.n_splits

print("CV score: {:<8.8f}".format(mean_squared_error(oof_en_383, target)))
  1. 使用BayesianRidge 贝叶斯岭回归
folds = KFold(n_splits=5, shuffle=True, random_state=13)
oof_br_383 = np.zeros(train_shape)
predictions_br_383 = np.zeros(len(X_test_383))

for fold_, (trn_idx, val_idx) in enumerate(folds.split(X_train_383, y_train)):
    print("fold n°{}".format(fold_+1))
    tr_x = X_train_383[trn_idx]
    tr_y = y_train[trn_idx]
    #BayesianRidge 贝叶斯回归
    br_383 = br()
    br_383.fit(tr_x,tr_y)
    oof_br_383[val_idx] = br_383.predict(X_train_383[val_idx])
    
    predictions_br_383 += br_383.predict(X_test_383) / folds.n_splits

print("CV score: {:<8.8f}".format(mean_squared_error(oof_br_383, target)))

LASSO回归

梯度提升树回归

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

回归及相关模型 的相关文章

随机推荐

  • openwrt网络设置

    OpenWrt的网络配置文件是 etc config network 它负责交换芯片VLAN 网络接口和路由的配置 此文件在编辑和保存之后需要执行 etc init d network reload 命令 在变更生效前 停止和重启网络 目的
  • uniapp多端问题总结

    页面跳转相关 1 页面跳转传参报错 问题 小程序报错 SyntaxError Unexpected end of JSON inputat JSON parse 原因 是由于JSON parse无法识别某些url中的特殊字符比如 等特殊符号
  • 卓越性能模式

    卓越性能模式 该模式适用于高端电脑 在常用的win10专业版和家庭版中经常会被隐藏 可通过手动开启 以管理员身份打开Powershell 输入以下代码回车开启 powercfg duplicatescheme e9a42b02 d5df 4
  • replace 如何分别替换第一次匹配和所有匹配之后得到的字符串

    JSAPI中 对于replace 方法的描述是这样的 replace 方法用于在字符串中用一些字符替换另一些字符 或替换一个与正则表达式匹配的子串 在实际应用中 举个例子 把字符串中的 a 替换为 空字符串 var str aaasssbs
  • Catowice City【Codeforces 1248 F】【Tarjan】

    Codeforces Round 594 Div 2 F 这道题的解法还真是不少 写了个枚举也可以做这道题 当然Tarjan自然也是可以的 我一开始没捋清楚思路 再想想 发现 我们看到审判者 他们都会指向一些参赛选手 那么我们是不是可以尽力
  • Android 源码编译

    Android 源码编译 即AOSP Android Open Source Project 编译 编译流程 source build envsetup sh 初始化编译环境 lunch 选择版型 make j64 表示64 线程编译 根据
  • 【C++】FindWindow

    HWND hwnd FindWindow NULL TEXT Epic Games启动程序 if hwnd nullptr cout lt lt OK lt lt endl else cout lt lt NO lt lt endl
  • iOS系统语音识别-Swift

    基于Speech框架 实现语音识别转文字功能 系统要求 gt iOS 10 以下是在官方提供的Demo基础上稍作改动 目的有两个 实现连续不间断地语音识别 除非自己手动调用停止 报错自动重新启动 应用切后台后再次进入前台后语音可以正常使用
  • Garmin社招 -- 面试总结复盘

    最近一段时间在准备着Garmin的面试 就在前天得知我已被录用 心里的石头也就终于落地了 其实 我之前有写过华为OD社招的文章 主要介绍了华为OD社招的一些基本的步骤或是流程 但不管怎么样 我不建议朋友们直接进入普通的外包公司 如果没有更好
  • 借助国内ChatGPT平替+markmap/Xmind飞速生成思维导图

    系列文章目录 借助国内ChatGPT平替 MindShow 飞速制作PPT 借助国内ChatGPT平替 剪映 百度AIGC平台快速制作短视频 利用ChatGPT编写Excel公式 对比讯飞星火与ChatGPT对Excel公式的回答 文章目录
  • 【unbiased teacher for semi-supervised object detection复现】

    unbiased teacher for semi supervised object detection 配环境复现 配pytorch环境 安装detectron2 跑代码 配pytorch环境 搭建名为ubteachers的虚拟环境 c
  • Pikachu 通关笔记

    Pikachu 靶机练习 1 暴力破解 1 1 基于表单的暴力破解 1 2 验证码绕过 on server 1 3 验证码绕过 on client 1 4 验证码绕过 token 防爆破 2 Cross Site Scripting XSS
  • 安卓 android:setInputType()属性全面收藏!

    1 输入类型为没有指定明确的类型的特殊内容类型 editText setInputType InputType TYPE NULL 2 输入类型为普通文本 editText setInputType InputType TYPE CLASS
  • Unity 基础 之 OnMouse 简单实现 GameObject 和 UGUI 元素随着鼠标移动,拖动的效果

    Unity 基础 之 OnMouse 简单实现 GameObject 和 UGUI 元素随着鼠标移动 拖动的效果 目录 Unity 基础 之 OnMouse 简单实现 GameObject 和 UGUI 元素随着鼠标移动 拖动的效果 一 简
  • 分布式内存和分布式数据库

    分布式内存 memcached redis 分布式内存数据库 mangdodb redis hbase 12306分布式内存数据库 GemFire mapreduce spark scala Hbase
  • MySQL 表的 增删查改

    表的 CRUD 操作 一 新增 数据 Create 1 单行数据 全列插入 2 多行数据 指定列插入 二 查询 数据 Retrieve 1 全列查询 2 指定列查询 3 查询字段为表达式 4 别名 5 去重 distinct 6 排序 or
  • 假设一个登录页面,你会如何测试

    问题 假设是一个登陆页面 包括用户名 密码 登录 勾选框 注册 你会如何进行测试 1 功能测试 1 输入为空 点击提交 是否有错误信息 非空检查 2 输入正确的用户明 密码 点击提交 是否正确登录 正常登录 3 输入错误的用户明或者错误的密
  • C语言计算任意两日期之间天数

    今天复习了会Program in c 有道题目计算任意两个日期之间的天数 想了好久 最后写了一个很挫的程序 include
  • mybatis,中解决不进mapper,不报错 问题

    idea工具中spring boot使用 mybatis 中解决不进mapper 不报错 问题 在resources下的application properties 中配置 mybatis mapper locations classpat
  • 回归及相关模型

    线性回归模型 一元线性回归模型使用单一特征来预测响应值 拟合的最佳曲线通过最小化预测值和真实值之间的误差得到 多元回归模型利用多个自变量估计因变量 从而解释和预测因变量的值 优点 模型简单 部署方便 回归权重可以用于结果分析 训练快 缺点