11.19 机器学习-岭回归+拉索回归+逻辑回归

server/2024/11/20 13:20:47/

# 欠拟合 训练不够

# 过拟合 训练太够了 噪声也学进去了

# 一般来说w的值越大 误差越大 w的值小误差小 但也不能太小 不然失去了应用的意义

# 防止 欠拟合和过拟合的方式 就岭回归和拉索回归  正则化

# 本质上就是牺牲模型在训练集上的正确率来提高推广、泛化能力,W在数值上越小越好,这样能抵抗数值的扰动。同时为了保证模型的正确率W又不能极小。

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

# 这里面损失函数就是原来固有的损失函数,比如回归的话通常是MSE,然后在加上一部分惩罚项来使得计算出来的模型W相对小一些来带来泛化能力。

# 岭回归Ridge

# 在 原来的均方差函数的基础上加一个 各个W的欧式距离 这样让均方差最小的同时 还要让各个W之间的距离变小也就是 w的值要小 变相实现了减小w的值 但准确率肯定降了

# 特点:

# - 岭回归不会将权重压缩到零,这意味着所有特征都会保留在模型中,但它们的权重会被缩小。

# - 适用于特征间存在多重共线性的情况。

# - 岭回归产生的模型通常更为平滑,因为它对所有特征都有影响。


 

# 拉索回归Lasso

# 在 原来的均方差函数的基础上加一个 各个W的曼哈顿距离 这样让均方差最小的同时 还要让各个W之间的距离变小也就是 w的值要小 变相实现了减小w的值 但准确率肯定降了

# 特点:

# - 拉索回归可以将一些权重压缩到零,从而实现特征选择。这意味着模型最终可能只包含一部分特征。

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

# - 拉索回归产生的模型可能更简单,因为它会去除一些不重要的特征。

# API

# 具有L2正则化的线性回归-岭回归

# sklearn.linear_model.Ridge()

# 1 参数:

# (1)alpha, default=1.0,正则项力度 惩罚力度 各w的距离的值  惩罚力度小准确率高 鲁棒性差

# (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实现岭回归

from sklearn.linear_model import Ridge,Lasso

from sklearn.datasets import fetch_california_housing

from sklearn.model_selection import train_test_split

from sklearn.preprocessing import StandardScaler

def ridge1():

    x,y=fetch_california_housing(data_home="assets/datasets",return_X_y=True)

    scaler1=StandardScaler()

    model1=Ridge(alpha=1.0,fit_intercept=True,solver="auto",max_iter=1000)

    x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=666,train_size=0.7)

    x_train_stand=scaler1.fit_transform(x_train)

    x_test_stand=scaler1.transform(x_test)

    model1.fit(x_train_stand,y_train)

    score1=model1.score(x_test_stand,y_test)

    print(score1)

    pass

"""

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)**:

   - 训练样本中特征的数量。

"""

def lasso1():

    x,y=fetch_california_housing(data_home="assets/datasets",return_X_y=True)

    scaler1=StandardScaler()

    model1=Lasso(alpha=1.0,fit_intercept=True,max_iter=1000,positive=True)

    x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=666,train_size=0.7)

    x_train_stand=scaler1.fit_transform(x_train)

    x_test_stand=scaler1.transform(x_test)

    model1.fit(x_train_stand,y_train)

    score1=model1.score(x_test_stand,y_test)

    print(score1)

    pass


 

if __name__=="__main__":

    # ridge1()

    lasso1()

# 逻辑回归(Logistic Regression)是机器学习中的一种分类模型,**逻辑回归是一种分类算法**,虽然名字中带有回归,但是它与回归之间有一定的联系。由于算法的简单和高效,在实际中应用非常广泛

# 一般用于二分类问题 只有两个结果的

# 使用一个sigmoid激活函数 把线性回归的结果传入进去 这个sigmoid激活函数 的值域在[0,1] 以0.5为分界线进行分类

# 损失函数 变为了复合函数


 

# API

# sklearn.linear_model.LogisticRegression()

# 参数:

#   fit_intercept bool, default=True 指定是否计算截距

#   max_iter int, default=100  最大迭代次数。迭代达到此数目后,即使未收敛也会停止。

# 模型对象:

#   .coef_ 权重

#   .intercept_ 偏置

#   predict()预测分类

#   predict_proba()预测分类(对应的概率)

#   score()准确率

from sklearn.datasets import load_iris

from sklearn.linear_model import LogisticRegression

from sklearn.model_selection import train_test_split

def logistic_regression1():

    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,random_state=666,train_size=0.7)

    model1=LogisticRegression()

    model1.fit(x_train,y_train)

    score1=model1.score(x_test,y_test)

    print(score1)


 

if __name__=="__main__":

    logistic_regression1()


http://www.ppmy.cn/server/143479.html

相关文章

游戏引擎学习第13天

视频参考:https://www.bilibili.com/video/BV1QQUaYMEEz/ 改代码的地方尽量一张图说清楚吧,懒得浪费时间 game.h #pragma once #include <cmath> #include <cstdint> #include <malloc.h>#define internal static // 用于定义内翻译单元内部函数 #…

使用OpenFeign+Eureka实现HTTP调用的简单示例

由于RPC调用需要使用注册中心&#xff0c;所以首先需要创建eureka服务&#xff0c;创建SpringBoot项目后导入spring-cloud-starter-netflix-eureka-server&#xff0c;注意SpringBoot和SpringCloud版本一致性&#xff0c;然后进行配置&#xff0c;启动类添加注解EnableEurekaSe…

排序排序的概念及其运用和选择排序

排序排序的概念及其运用和选择排序 7. 排序7.1 排序的概念及其运用7.2 选择排序算法——直接选择排序选择排序基本思想&#xff1a;直接选择排序选择排序原理参考程序 如何交换数据直接选择排序的特性总结&#xff1a; 7. 排序 7.1 排序的概念及其运用 排序&#xff1a;所谓排…

诡异错误:返回给前端的id被前端自动修改

使用mybatis-plus生成的id&#xff0c;使用雪花算法&#xff0c;是一个long类型的id。 当调用list接口返回给前端后&#xff0c;接口显示数据正常&#xff0c;但是界面上的id不对&#xff0c;多了好几个0&#xff0c;数据都是以0结尾。 由于前端使用vue编写&#xff0c;我不太会…

实时监控,智能分析:输电线路多目视频监控装置提升运维效率

在快速变迁的现代社会中&#xff0c;安全监控技术已成为各行各业安全管理体系的核心组成部分。无论是工厂生产线的安全保障&#xff0c;城市治安的维护&#xff0c;还是偏远区域电力巡检的顺利进行&#xff0c;都离不开高效且智能的监控解决方案。 在高压输电线路的监测领域&am…

JVM 内存分配的调优过程

以一个创建 1MB 对象的接口来模拟万级并发请求产生大量对象的场景。 RequestMapping(value "/test1")public String test1(HttpServletRequest request) {List<Byte[]> temp new ArrayList<Byte[]>();Byte[] b new Byte[1024*1024];temp.add(b);retur…

农村生活污水排水监测系统:助力乡村生态环境建设

在广袤的农村大地&#xff0c;清新的空气、绿色的田野和潺潺的溪流共同构成了美丽的乡村画卷。然而&#xff0c;随着农村经济的发展和生活水平的提高&#xff0c;农村生活污水的排放问题日益凸显&#xff0c;成为影响乡村生态环境的一个重要因素。为了有效解决这一问题&#xf…

Springboot集成ElasticSearch实现minio文件内容全文检索

一、docker安装Elasticsearch &#xff08;1&#xff09;springboot和Elasticsearch的版本对应关系如下&#xff0c;请看版本对应&#xff1a; 注意安装对应版本&#xff0c;否则可能会出现一些未知的错误。 &#xff08;2&#xff09;拉取镜像 docker pull elasticsearch:7…