机器学习之回归

news2024/11/17 11:26:09

回归算法

线性回归

  • 求解线性回归方法
    • 正规方程
    • 梯度下降
      • 迭代

API

  • sklearn.linear_model.LinearRegression

    • 正规方程优化
    • fit_intercept 是否计算偏置量,没有的化经过原点
    • 属性
      • coef_ 回归系数
      • intercept_ 偏置量
  • sklearn.linear_model.SGDRegressor

    • 使用随机梯度下降优化
    • 参数
      • loss
        • 损失函数,默认=‘squared_error’,还有huber,epsilon_insensitive,squared_epsilon_insensitive
      • learning_rate
        • 学习率的算法,默认invscaling,
        • constant η = η 0 \eta=\eta_0 η=η0
        • optimal η = 1.0 / ( α ∗ ( t + t 0 ) ) \eta = 1.0 / (\alpha * (t + t_0)) η=1.0/(α(t+t0))
        • invscaling η = η 0 / t p o w e r t \eta = \eta_0 / t^{power_t} η=η0/tpowert
        • adaptive

代码示例

波士顿房价预测

  • LinearRegression
from sklearn.linear_model import LinearRegression
from sklearn.datasets import load_boston
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt 

data = load_boston()

x_train,x_test,y_train,y_test = train_test_split(data.data,data.target)
transfer = StandardScaler()

#数据标准化
x_train=transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)

reg = LinearRegression()
#使用LinearRegression
reg.fit(x_train,y_train)

print(reg.coef_,reg.intercept_)
y_predict = reg.predict(x_test)

print(y_test)
print(y_predict)

#绘图显示差异
x = list(range(len(y_test)))
plt.plot(x,y_test,'rx')
plt.plot(x,y_predict,'b-')
plt.show()

在这里插入图片描述

  • SGDRegressor
from sklearn.linear_model import SGDRegressor
from sklearn.datasets import load_boston
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt 

data = load_boston()

x_train,x_test,y_train,y_test = train_test_split(data.data,data.target)
transfer = StandardScaler()

#数据标准化
x_train=transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)

reg = SGDRegressor()
#SGDRegressor
reg.fit(x_train,y_train)

print(reg.coef_,reg.intercept_)
y_predict = reg.predict(x_test)

print(y_test)
print(y_predict)

x = list(range(len(y_test)))
plt.plot(x,y_test,'rx')
plt.plot(x,y_predict,'b-')
plt.show()

在这里插入图片描述

回归模型评估

  • 方法: 均方误差
  • API sklearn.metrics.mean_squared_error
mse = mean_squared_error(y_test,y_predict)

岭回归

实质上是一种改良的最小二乘估计法,通过放弃最小二乘法的无偏性,以损失部分信息、降低精度为代价获得回归系数更为符合实际、更可靠的回归方法,对病态数据的拟合要强于最小二乘法。

  • API

    • sklearn.linear_model.Ridge
    • 参数
      • alpha: 正则化力度,取值 0-1,1-10
      • solver:优化方法,默认auto
        • auto, svd, cholesky, lsqr, sparse_cg, sag, saga, lbfgs
      • normalize: 是否进行数据标准化
  • 带有交叉验证的岭回归

    from sklearn.linear_model import RidgeCV
    

代码示例

波士顿房价预测

from sklearn.linear_model import Ridge
from sklearn.datasets import load_boston
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt 
import pandas as pd
import numpy as np

data = load_boston()

x_train,x_test,y_train,y_test = train_test_split(data.data,data.target,random_state=0)
transfer = StandardScaler()

#数据标准化
x_train=transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)

reg = Ridge(max_iter=10000,alpha=0.8)
#使用LinearRegression
reg.fit(x_train,y_train)

print(reg.coef_,reg.intercept_)
y_predict = reg.predict(x_test)

# print(y_test)
# print(y_predict)
mse = mean_squared_error(y_test,y_predict)
print('方差为:',mse)

x = list(range(len(y_test)))
plt.plot(x,y_test,'rx')
plt.plot(x,y_predict,'b-')
plt.show()

逻辑回归

  • 逻辑回归是分类算法,准确来说是解决二分类

  • 激活函数

    • sigmoid函数

    g ( x ) = 1 1 + e − x g(x)=\frac{1}{1+e^{-x}} g(x)=1+ex1

    函数图像如下
    在这里插入图片描述

  • 输出结果

    • 大于0.5,输出1,小于0.5,输出0
  • 损失函数

    • 对数似然损失
      c o s t ( h θ ( x ) , y ) = { − l o g ( h θ ( x ) ) i f   y = 1 − l o g ( 1 − h θ ( x ) ) i f   y = 0 cost(h_\theta(x),y)=\left\{ \begin{matrix} -log(h_\theta(x)) & if\space y=1 \\ -log(1-h_\theta(x)) & if\space y=0 \end{matrix} \right. cost(hθ(x),y)={log(hθ(x))log(1hθ(x))if y=1if y=0
      函数图像

在这里插入图片描述y=1时,预测结果(横轴)越接近1,损失越小

在这里插入图片描述

y=0时,预测结果(横轴)越接近1,损失越大

  • 损失函数
    c o s t ( h θ ( x ) , y ) = ∑ i = 1 m ( − y i l o g ( h θ ( x ) ) − ( 1 − y i ) l o g ( 1 − h θ ( x ) ) ) cost(h_\theta(x),y)=\sum^m_{i=1}(-y_ilog(h_\theta(x))-(1-y_i)log(1-h_\theta(x))) cost(hθ(x),y)=i=1m(yilog(hθ(x))(1yi)log(1hθ(x)))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/111601.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

转行了!文科生转程序员的外包工作经历分享

01 种子 我是一名文科生,法律专业,武汉某 211 ,入这行纯属巧合。 大三下半年,大家纷纷准备秋招,我去校园招聘会上溜达了一圈,好奇而去,丧气而归。 或许是因为大学三年过得太过安逸(宅在宿舍打…

C#语言实例源码系列-实现本地磁盘目录

专栏分享点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册 👉关于作者 众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中…

POMO: Policy Optimization with Multiple Optima for Reinforcement Learning学习笔记

文章目录摘要零、一些基础1.梯度近似2.策略梯度定理3.REINFORCE4.REINFORCE with Baseline5.REINFORCE Actor-Critic一、介绍二、相关工作(1)深度强化学习构建法(2)推理技术(3)深度强化学习改善法三、激励四…

制作 iOS 证书

准备工作 您需要 注册并加入 Apple Developer Program,才能在 App Store 上架应用。请准备一台 macOS 系统的电脑,用于证书制作。 创建 App ID 登录 Apple Developer,选择 Certificates, Identifiers & Profiles 选项。 选择 Identifi…

自学编程和计算机科班出身的差别在哪里

前不久逛知乎的时候看到一个问题:自学编程和计算机科班出身的差别在哪里? 自己回答了一下,获得了比较多的点赞和评论,在这里也分享给大家。 985 通信专业学长,转行程序员,聊一聊我的看法:说一千…

k8s之Job 与 CronJob

写在前面 语雀原文阅读效果更佳: 5、Job与CronJob 语雀 《5、Job与CronJob》 Job 与 CronJob 接下来给大家介绍另外一类资源对象:Job,我们在日常的工作中经常都会遇到一些需要进行批量数据处理和分析的需求,当然也会有按时间来…

RK3568平台开发系列讲解(工具命令篇)常用 GIT 命令汇总

🚀返回专栏总目录 文章目录 一、GIT BASICS二、GIT DIFF三、UNDOING CHANGES四、REWRITING GIT HISTORY五、GIT BRANCHES六、REMOTE REPOSITORIES七、GIT CONFIG八、GIT LOG九、GIT RESET十、GIT PULL十一、GIT PUSH沉淀、分享、成长,让自己和他人都能有所收获!😄 一、GI…

基于51单片机的酒精气体检测器设计

使用说明: 上电以后,需要预热一段时间,此时lcd显示Loading... (预热过程为电压先上升后下降的改成,通过检测电压来检测是否预热完成) , 预热完成后显示酒精浓度,按下按下按键key1即…

MySQL:互联网公司常用分库分表方案汇总

本文目录 一、数据库瓶颈 IO瓶颈 CPU瓶颈 二、分库分表 水平分库 水平分表 垂直分库 垂直分表 三、分库分表工具 四、分库分表步骤 五、分库分表问题 非partition key的查询问题 非partition key跨库跨表分页查询问题 扩容问题 六、分库分表总结 七、分库分表示例 …

因特网概述

目录1 网络、互连网(互联网)和因特网2 因特网发展的三个阶段3 因特网的标准化工作4 因特网的组成1 网络、互连网(互联网)和因特网 网络(Network)由若干结点(Node)和连接这些结点的链…

2022年山东省职业院校技能大赛高职组“网络系统管理”赛项规程

2022年山东省职业院校技能大赛高职组“网络系统管理”赛项规程一、赛项名称赛项名称:网络系统管理赛项组别:高职组赛项类别:电子与信息大类二、竞赛目的本赛项旨在借鉴世界技能大赛的办赛理念与技术规程,通过竞赛让参赛选手经历一…

论文导读 | 关于内存子图匹配算法的调研

前言 近年来,图数据结构在学术界和工业界的应用越来越广泛,包括社交网络分析、道路分析、化学分子合成、生物蛋白质网络分析、金融欺诈检测等等。子图匹配(Subgraph Matching)是图分析领域研究的一个重要课题,其旨在一…

批发进销存软件哪个好用?求测评

产品产量增加,在其他条件不变的情况下,就会形成规模效应,这样产品的生产成本就会降低。批发市场就可以对接大批量生产和出售单价更低的商品。而零售业往往也会采取批发货物的方式来降级成本。但是产品种类多,对于的供应商和客户也…

FactoryBean

FactoryBean ①简介 FactoryBean是Spring提供的一种整合第三方框架的常用机制。和普通的bean不同,配置一个FactoryBean类型的bean,在获取bean的时候得到的并不是class属性中配置的这个类的对象,而是getObject()方法的返回值。通过这种机制&…

网友:我30多岁了,现在转行学编程来得及吗?

这些年,互联网行业的变化发展很快,很多公司也是借助互联网发展的大趋势发展的非常好。 水涨船高,行业好,意味着互联网行业的从业者的工资也就跟着高,很多互联网行业刚入门的月薪基本都已经过万了,一些传统行…

Android设计模式详解之命令模式

前言 命令模式是行为型设计模式之一; 定义:将一个请求封装成一个对象,从而让用户使用不同的请求把客户端参数化;对请求排队或者记录日志,以及支持可撤销的操作; 使用场景: 需要抽象出待执行…

自动化测试高手-价值篇

自动化测试的最终交付价值是什么:自动化测试项目的最终交付价值是它产生的收益,也就是投入回报率比,ROI,一个成功的自动化测试项目必然是获得了高ROI的收益。 自动化测试高手就是要做出成功的自动化测试项目,不仅要写代…

linux命令date

linux命令date 文章目录linux命令date一、date二、使用(一)结合格式,格式输出数据(二)结合选项(options)一、date date命令可以获取到当前系统时间,主要是为了shell脚本的 date用法…

Html中锚点的使用

概述 URL是由多个部分组成。包括协议、主机(域名)、端口、路径、查询参数和锚点 https://www.example.com:80/path/to/myfile.html?key1value1&key2value2#anchor锚点(anchor)是网页内部的定位点,使用 # 加上锚…

3_Spring_IOC原理分析_重要

IOC底层原理 1 XML解析技术读取配置文件 <bean id"empDao" class"com.msb.dao.impl.EmpDaoImpl"></bean> 将上面的信息读取进入程序 对象的ID ,一个是对象的类的全路径名 2 反射技术实例化对象,放到容器中 获得类的字节码 Class clazz Clas…