机器学习day7-线性回归3、逻辑回归、聚类、SVC

7欠拟合与过拟合

1.欠拟合

模型在训练数据上表现不佳,在新的数据上也表现不佳,常发生在模型过于简单无法处理数据中的复杂模式时。

特征:

训练误差较高

测试误差也高

模型过于简化,不能充分学习训练数据中的模式

2.过拟合

模型在训练数据上表现得非常好,在新的数据上表现较差,常发生在模型过于复杂,学习了数据的真实模式、噪声和异常值。

特征:

训练误差非常低

测试误差较高

模型可能过于复杂,对训练数据过度拟合

3.正则化

防止过拟合,增加模型的鲁棒性(健壮性),让模型的泛化能力和推广能力更加强大。

当w越小公式的容错能力就越好,但w太小(趋近0)模型没有意义,w太大会把误差放大。正则项可以保证一定的容错率和正确率。

正则化(鲁棒性调优)本质是牺牲模型在训练集上的正确率来提高推广、泛化能力,w在数值上越小越好,这样能抵抗数值的扰动。

将原来的损失函数加上一个惩罚项使得计算出来的模型W相对小一些来带来泛化能力,就是正则化。

常用的惩罚项有:

$$
L1正则项:L1=||w||_1=\textstyle\sum_{i=1}^{n}|w_i|,曼哈顿距离
$$

$$
L2正则项:L2=||w||_2=\textstyle\sqrt[p]{\sum_{i=1}^{n}x^p_i,X=(x_1,x_2,...x_n)},欧式距离
$$

代表空间中向量到原点的距离。L1和L2正则项惩罚项可以加到任何算法的损失函数上去提高模型的泛化能力。

8岭回归Ridge

1.损失函数公式

岭回归=多元线性回归损失函数+L2正则

$$
J(w) = \frac{1}{2m} \sum_{i=1}^{m} (h_w(x^{(i)}) - y^{(i)})^2+\lambda\sum_{j=1}^{n} w_j^2,w_j指所有的权重系数, λ指惩罚型系数,又叫正则项力度
$$

特点:

不会将权重压缩到0,会把权重缩小(所有的特征都会被保留)

特征见存在多重共线性

模型更为平滑

API
具有L2正则化的线性回归-岭回归。
sklearn.linear_model.Ridge()
1 参数:
(1)alpha, default=1.0,正则项力度
(2)fit_intercept, 是否计算偏置, default=True
(3)solver, {‘auto’, ‘svd’, ‘cholesky’, ‘lsqr’, ‘sparse_cg’, ‘sag’, ‘saga’, ‘lbfgs’}, default=’auto’
当值为auto,并且数据量、特征都比较大时,内部会随机梯度下降法。
(4)normalize:,default=True, 数据进行标准化,如果特征工程中已经做过标准化,这里就该设置为False
(5)max_iterint, default=None,梯度解算器的最大迭代次数,默认为15000
​
2 属性
coef_ 回归后的权重系数
intercept_ 偏置
​
​
说明:SGDRegressor也可以做岭回归的事情,比如SGDRegressor(penalty='l2',loss="squared_loss"),但是其中梯度下降法有些不同。所以推荐使用Ridge实现岭回归

eg1
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import Ridge
from sklearn.metrics import mean_squared_error
import math
import random
# 加载数据集
data=fetch_california_housing(data_home="./src")
​
x=data.data
y=data.target
​
# 数据标准化
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2)
def train():# 配置一些训练参数eta0=0.001epoch=1000batch_size=16n_sample=len(x_train)#样本数量,假设是20000个model=Ridge()model.fit(x_train,y_train)s=model.score(x_test,y_test)print(s)        
train()

9拉索回归Lasso

线性回归模式,拉索回归=+L1正则

目标是最小化损失函数

$$
\text{J(w)}= \frac{1}{2n}\sum_{i=1}^n (h_w(x_i)-y_i)^2 + \lambda \sum_{j=1}^p |w_j|
$$

$$
n 是样本数量, p 是特征的数量, y_i 是第 i个样本的目标值, x_i 是第 i个样本的特征向量, w是模型的参数向量
$$

$$
\lambda是正则化参数,控制正则化项的强度。
$$

特点

拉索回归可以将一些权重压缩到0,可能模型最终只包含一部分特征

适用于特征数量远大于样本数量的情况,或者特征间存在相关性时可以从中选择最相关的特征

模型会更简单(去除了一些不重要的特征)

API
sklearn.linear_model.Lasso()
​
参数:
​
1. alpha (float, default=1.0):- 控制正则化强度;必须是非负浮点数。较大的 alpha 增加了正则化强度。
2. fit_intercept (bool, default=True):- 是否计算此模型的截距。如果设置为 False,则不会使用截距(即数据应该已经被居中)。
3. precompute (bool or array-like, default=False):- 如果为 True,则使用预计算的 Gram 矩阵来加速计算。如果为数组,则使用提供的 Gram 矩阵。
4. copy_X (bool, default=True):- 如果为 True,则复制数据 X,否则可能对其进行修改。
5. max_iter (int, default=1000):- 最大迭代次数。
6. tol (float, default=1e-4):- 精度阈值。如果更新后的系数向量减去之前的系数向量的无穷范数除以 1 加上更新后的系数向量的无穷范数小于 tol,则认为收敛。
7. warm_start (bool, default=False):- 当设置为 True 时,再次调用 fit 方法会重新使用之前调用 fit 方法的结果作为初始估计值,而不是清零它们。
8. positive (bool, default=False):- 当设置为 True 时,强制系数为非负。
9. random_state (int, RandomState instance, default=None):- 随机数生成器的状态。用于随机初始化坐标下降算法中的随机选择。
10. selection ({'cyclic', 'random'}, default='cyclic'):- 如果设置为 'random',则随机选择坐标进行更新。如果设置为 'cyclic',则按照循环顺序选择坐标。
​
属性:
​
1. coef_- 系数向量或者矩阵,代表了每个特征的权重。
2. intercept_ - 截距项(如果 fit_intercept=True)。
3. n_iter_ - 实际使用的迭代次数。
4. n_features_in_ (int):- 训练样本中特征的数量。
​
eg2
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import Lasso
from sklearn.metrics import mean_squared_error
import math
import random
def data_load():data = fetch_california_housing(data_home="./src")X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42)return X_train, X_test, y_train, y_test
def train(X_train, y_train):model=Lasso(alpha=0.01)model.fit(X_train, y_train)return model
def test(model, X_test, y_test):y_pred=model.predict(X_test)mse=mean_squared_error(y_test, y_pred)rmse=math.sqrt(mse)return rmse
X_train, X_test, y_train, y_test=data_load()
model=train(X_train,y_train)
s=test(model,x_test,y_test)
print(s)
print(model.coef_)
y=model.predict(x_test[0:4])
print(y)
s=model.score(X_test,y_test)
print(s)

十二逻辑回归-分类

1概念

分类模型,常用于处理二分类问题

2原理

逻辑回归的输入是线性回归的输出

①.样本特征值x输入,和线性回归

$$
h(w)=w_1x_1+w_2x_2+....+b
$$

求出的w做计算,得到逻辑回归的输入

②.输入和sigmoid激活函数

$$
f(x)=\frac{1}{1+e^{-x}}
$$

做运算,得到[0,1]区间内的一个概率值

此时的损失函数为:

③.设定一个阈值(一般是0.5),大于阈值认为是正例,输出1;小于阈值认为是负例,输出0

④.将③输出的结果和真实数据的y/结果/目标值作对比判断是否一致,如果不一致则继续调整w去提高1降低0的比例

3API

sklearn.linear_model.LogisticRegression()
参数:fit_intercept bool, default=True 指定是否计算截距max_iter int, default=100  最大迭代次数。迭代达到此数目后,即使未收敛也会停止。
模型对象:.coef_ 权重.intercept_ 偏置predict()预测分类predict_proba()预测分类(对应的概率)score()准确率
eg3
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
x,y=load_iris(return_X_y=True)
index=y!=2
y=y[index]
x=x[index]
​
x_train,x_test,y_train,y_test=train_test_split(x,y,train_size=0.8)
# print(x.shape)
# print(y!=2)
​
print(y)
print(x.shape)
model=LogisticRegression()
model.fit(x_train,y_train)
y_pred=model.predict(x_test)
s=sum(y_test==y_pred)
print(s)
# new_x=[[4.3,2.5,7.2,2.5]]
# y_predd=model.predict(x[0:5])
# print(y_predd)

十三聚类

十四支持向量机

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

反向代理模块

1 概念 1.1 反向代理概念 反向代理是指以代理服务器来接收客户端的请求,然后将请求转发给内部网络上的服务器,将从服务器上得到的结果返回给客户端,此时代理服务器对外表现为一个反向代理服务器。 对于客户端来说,反向代理就相当于…

STM32 独立看门狗(IWDG)详解

目录 一、引言 二、独立看门狗的作用 三、独立看门狗的工作原理 1.时钟源 2.计数器 3.喂狗操作 4.超时时间计算 5.复位机制 四、独立看门狗相关寄存器 1.键寄存器(IWDG_KR) 2.预分频寄存器(IWDG_PR) 3.重载寄存器&…

足球虚拟越位线技术FIFA OT(二)

足球虚拟越位线技术FIFA OT(二) 在FIFA认证测试过程中,留给VAR系统绘制越位线的时间只有90秒(在比赛中时间可能更短),那么90秒内要做什么事呢,首先场地上球员做出踢球动作,然后VAR要…

MySQL数据库3——函数与约束

一.函数 1.字符串函数 MySQL中内置了很多字符串函数,常用的几个如下: 使用方法: SELECT 函数名(参数);注意:MySQL中的索引值即下标都是从1开始的。 2.数值函数 常见的数值函数如下: 使用方法: SELECT…

Proteus 8.17的详细安装教程

通过百度网盘分享的文件:Proteus8.17(64bit).zip 链接:https://pan.baidu.com/s/1zu8ts1Idhgg9DGUHpAve7Q 提取码:8q8v 1.右击【Proteus8.17(64bit).zip】,选择【全部解压缩......】。 , 2.…

MySQL安装及数据库基础

目录 一. MySQL下载安装 1.1 安装(如果之前有安装过MySQL,先执行下面的卸载流程) 1.1.1 更新系统的软件包列表 1.1.2 安装MySQL服务器 1.1.3 检查MySQL服务是否启动,若没有启动手动启动 1.1.4 登录MySQL&#x…

NavVis VLX3的精度怎么去进行验证?【上海沪敖3D】

01、精度评价现状 三维捕捉行业还没有建立一个用于估算或验证移动激光扫描系统精度的统一标准。因此,需要高精度交付成果的专业人士很难相信设备所标注的精度规格,也就很难知道基于SLAM的移动激光扫描系统是否适合当前的项目。 NavVis将通过展示一种严格…

css3新特性(二十六课)

1、css3盒子模型 box - sizing: content - box; 是 CSS 中用于定义盒模型宽度和高度计算方式的一个属性值。在这种盒模型下,元素的宽度和高度(width和height属性)仅包括内容区域(content)的大小&#xff…

macbook外接2k/1080p显示器调试经验

准备工具 电脑 满足电脑和显示器要求的hdmi线或者转接头或者扩展坞 betterdisplay软件 Dell P2419H的最佳显示信息如下 飞利浦 245Es 2K的最佳显示比例如下 首选1152

【Hadoop】【大数据技术基础】实践三 NoSQL数据库 大数据基础编程、实验和案例教程(第2版)

第6章 典型NoSQL数据库的安装和使用 Redis安装和使用MongoDB的安装和使用 6.1 Redis安装和使用 6.1.1 Redis简介 Redis是一个键值(key-value)存储系统,即键值对非关系型数据库,和Memcached类似,目前正在被越来越多的…

零基础Java第二十二期:异常(二)

目录 一、异常的捕获 1.1. 多个异常,一次捕获 1.2. 异常之间的父子关系 1.3. finally 二、自定义异常 一、异常的捕获 1.1. 多个异常,一次捕获 由于Exception类是所有异常类的父类,因此可以用这个类型表示捕捉所有异常。也就是说&am…

IO流(九):打印流-字节打印流PrintStream、字符打印流PrintWriter

目录 1、什么是打印流? 2、字节打印流-PrintStream 2.1 代码演示以及注释 2.2 演示几种字节打印流常用的创建方式 3、字符打印流-PrintWriter 3.1 代码演示以及注释 3.2 演示几种字符打印流常用的创建方式 4、案例-System.out.println();输出内容重定向到指…

如何将几个音频合成一个音频?非常简单的几种合成方法

如何将几个音频合成一个音频?音频合成不仅仅是将不同的音频文件按顺序排列,它还可能涉及到音量调节、剪辑、淡入淡出、音效调整等多个方面。对于一些专业的音频制作人员来说,音频的每一部分细节都可能需要精心打磨,以确保最终合成…

JVM性能分析工具JProfiler的使用

一、基本概念 JProfiler:即“Java Profiler”,即“Java分析器”或“Java性能分析工具”。它是一款用于Java应用程序的性能分析和调试工具,主要帮助开发人员识别和解决性能瓶颈问题。 JVM:即“Java Virtual Machine”&#xff0c…

Flutter 扫描二维码

在今天的移动开发中,二维码扫描已经成为了常见的功能之一。Flutter作为一款跨平台的开发框架,提供了丰富的插件和功能,使得开发者可以轻松实现二维码扫描以及图像识别功能。本文将介绍如何在Flutter中通过结合 scan 插件、permission_handler…

金山云Q3调整后EBITDA率提升至9.8% 经营效率和盈利能力强劲增长

11月19日,金山云公布了2024年第三季度业绩。 季度内,公司在收入规模、盈利能力、经营现金流方面都取得了扎实的进展。财报显示,金山云Q3营收18.9亿元,同比回归两位数快速增长,达16.0%;公有云实现收入11.8亿…

AI模型新发现:精度的重要性超出预期

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

Pytest 学习 @allure.severity 标记用例级别的使用

一、前言 使用allure.serverity注解,可以在allure报告中清晰的看到不同级别用例情况 使用等级介绍 allure提供的枚举类 二、等级介绍 二、等级介绍 blocker:阻塞缺陷(功能未实现,无法下一步) critical:…

R语言 | 宽数据变成一列,保留对应的行名和列名

对应稀疏矩阵 转为 宽数据框,见 数据格式转换 | 稀疏矩阵3列还原为原始矩阵/数据框,自定义函数 df3toMatrix() 目的:比如查看鸢尾花整体的指标分布,4个指标分开,画到一个图中。每个品种画一个图。 1.数据整理&#…

Java——多线程

🏡个人主页:謬熙,欢迎各位大佬到访❤️❤️❤️~ 👲个人简介:本人编程小白,正在学习互联网开发求职知识…… 如果您觉得本文对您有帮助的话,记得点赞👍、收藏⭐️、评论&#x1f4ac…