【组队学习】sklearn线性回归与逻辑回归

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

只了解基本的python,匆匆翻阅过一遍西瓜书的我大胆的加入了这个组队活动然后发现……这点知识不够用QAQ。把一些琐碎的东西记下来吧。

本文代码都来自于Datawhale~

一、线性回归

#1产生数据
import numpy as np
import matplotlib.pyplot as plt 

def true_fun(X): # 这是我们设定的真实函数,即ground truth的模型
    return 1.5*X + 0.2

np.random.seed(0) # 设置随机种子
n_samples = 30 # 设置采样数据点的个数

'''生成随机数据作为训练集,并且加一些噪声'''
X_train = np.sort(np.random.rand(n_samples)) 
y_train = (true_fun(X_train) + np.random.randn(n_samples) * 0.05).reshape(n_samples,1)

#2定义模型
from sklearn.linear_model import LinearRegression # 导入线性回归模型
model = LinearRegression() # 定义模型
model.fit(X_train[:,np.newaxis], y_train) # 训练模型
print("输出参数w:",model.coef_) # 输出模型参数w
print("输出参数b:",model.intercept_) # 输出参数b

#3可视化
X_test = np.linspace(0, 1, 100)
plt.plot(X_test, model.predict(X_test[:, np.newaxis]), label="Model")
plt.plot(X_test, true_fun(X_test), label="True function")
plt.scatter(X_train,y_train) # 画出训练集的点
plt.legend(loc="best")
plt.show()

这是我的运行结果:

 代码注释中还有个“增加噪声”,很好奇,调了下参数,把0.05调大了:

 可以看到,数据更加分散。

托群里小伙伴的福,困惑得到了大佬的解释。因为这些样本不是真实数据,而是随机数,按照正弦函数分布,但这样和真实数据差得太远了,看不出模型的好坏,于是增加了“噪声”,简而言之,就是在原本数据的基础上又给大家增加了一个小小的随机数,让他们更接近真实数据。所以当我把参数调大时,数据更加分散了,哪怕是真实函数的拟合效果也没那么好了。线性函数,不适合当前情况,可以考虑多项式回归。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import PolynomialFeatures # 导入能够计算多项式特征的类
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import cross_val_score

def true_fun(X): # 这是我们设定的真实函数,即ground truth的模型
    return np.cos(1.5 * np.pi * X)
np.random.seed(0)
n_samples = 30 # 设置随机种子

X = np.sort(np.random.rand(n_samples)) 
y = true_fun(X) + np.random.randn(n_samples) * 0.1

degrees = [1, 4, 15] # 多项式最高次
plt.figure(figsize=(14, 5))
for i in range(len(degrees)):
    ax = plt.subplot(1, len(degrees), i + 1)
    plt.setp(ax, xticks=(), yticks=())
    polynomial_features = PolynomialFeatures(degree=degrees[i],
                                             include_bias=False)
    linear_regression = LinearRegression()
    pipeline = Pipeline([("polynomial_features", polynomial_features),
                         ("linear_regression", linear_regression)]) # 使用pipline串联模型
    pipeline.fit(X[:, np.newaxis], y)
    
    scores = cross_val_score(pipeline, X[:, np.newaxis], y,scoring="neg_mean_squared_error", cv=10) # 使用交叉验证
    X_test = np.linspace(0, 1, 100)
    plt.plot(X_test, pipeline.predict(X_test[:, np.newaxis]), label="Model")
    plt.plot(X_test, true_fun(X_test), label="True function")
    plt.scatter(X, y, edgecolor='b', s=20, label="Samples")
    plt.xlabel("x")
    plt.ylabel("y")
    plt.xlim((0, 1))
    plt.ylim((-2, 2))
    plt.legend(loc="best")
    plt.title("Degree {}\nMSE = {:.2e}(+/- {:.2e})".format(
        degrees[i], -scores.mean(), scores.std()))
plt.show()

运行结果如下:

 二、逻辑回归

在运行逻辑回归的代码时,我遇到了很多问题。因为需要导入数据,但是程序总是告诉我无法找到相应的文件,在网上找了很多方法都不行,队长帮忙让导其他数据库也不可,后来大佬A重做了一份,大佬B上传,渣渣只负责下载2333

问题还是要记下来的,我在github上看到的文件是这样:

但是下载下来:

 就散开了,然后还有一份.py文件和raw同级在外面,里面的这些文件依然找不到。

据说方法是:需要新clone一次仓库,然后再回退到这个版本
git clone https://github.com.cnpmjs.org/datawhalechina/machine-learning-toy-code.git
然后回退
git reset --hard 5d09e889df3a1169eed3059dd542696d83e32e08

啊,我就先记下来吧,渣渣的电脑连git都要现装,今天实在来不及了。

总之正确做法后,是这样的:

 就不赘述了,代码改天再贴,今天全耗在这个找文件上了。

但是我还是改了下随机梯度下降里的参数,是正则化参数的倒数,调大正则化减弱,调小正则化加强。调小后输出结果确实有变化,调大很多也没变化。

这部分其实没看懂,输出结果是啥也不是很理解来着,留一下改天再补。

 

组队学习二:逻辑回归算法梳理 逻辑回归算法梳理 一、逻辑回归线性回归的联系区别 1.逻辑回归是分类问题,线性回归是预测问题。 2.逻辑回归的输出范围在【0,1】之间,可以看做是一个概率值。而线性回归的输出则没有限制条件,具体输出要看解决的问题决定。 3.损失函数,线性回归使用的是均方误差作为损失函数,逻辑回归使用的是交叉熵作为损失函数。 二者之间的联系:逻辑回归就是在线性回归的基础上增加了一个sigmoid函数,把线性回归... 阅读详情

相关推荐

Numpy 实现线性回归

监督学习的步骤: 根据随机初始化的参数计算Loss function 根据当前的参数Loss function给出一个梯度信息,根据梯度信息更新模型的参数值 不断循环前两个步骤得到最优的Loss值并得到最优参数 Loss 估量模型的输出公式真实值公式之间的差距,给模型的优化指引方向。 模型的结构风险包括了经验风险和结构风险,Loss是经验风险函数的核心部分。 Loss学科:凸优化 常见Loss函数 Classification常用 0-1损失函数(zero-one loss) 绝对值损失函数

luis_jie的博客 5048

纯numpy实现线性回归

该博客记录了一个基于numpy实现线性回归的例子。sklearn不同,numpy实现的多为梯度下降方式优化模型性能。以下为代码部分:定义RMSE,loss,r2函数,定义回归模型,标准化,可视化等。

pylittlebrat的博客 1959

线性回归 numpy实现线性回归

使用numpy实现线性回归,更好地理解线性回归的原理

2201_75381449的博客 1134

NumPy实现线性回归

【代码】NumPy实现线性回归

m0_46306264的博客 1077

numpy实现线性回归_如何用numpy实现线性回归

numpy实现线性回归Let’s first briefly recall what linear regression is: 让我们首先简要回顾一下线性回归是什么: Linear regression is estimating an unknown variable in a linear fashion based on some other known variables. Visua...

weixin_26750481的博客 5871

Task01——线性回归+逻辑回归

本系列是2022年12月DataWhale组队学习sklearn机器学习实战的学习任务,一共分为八个任务章节,开源的在线学习地址在这里,下面我们就开始本次学习之旅了! 线性回归 线性:两个变量之间的关系是一次函数关系的——图象是直线,叫做线性。 非线性:两个变量之间的关系不是一次函数关系的——图象不是直线,叫做非线性。 回归:人们在测量事物的时候因为客观条件所限,求得的都是测量值,而不是事物真实的值,为了能够得到真实值,无限次的进行测量,最后通过这些测量数据计算回归到真实值,这就是回归的由来。 线性回

weixin_43757695的博客 1573

Datawhale组队学习:初级算法梳理课程任务

背景 Datawhale 是国内很有名的一个开源学习组织。这个组织将渴望改变的学习者以及一群有能力有想法的青年人集结在一起,营造出一种互促高效的学习环境,一起为开源学习付出努力。 Datawhale 近期将推出三门课程的组队学习。我先将 初级算法梳理 的任务发布出来。如果你愿意跟我们一起来学习这门课程,请留意我们近期公布的 “Datawhale第八期组队学习计划”。 学习任务 Task01:机器...

老马的程序人生 946

组队学习:基于逻辑回归的分类预测

一、基本概念 1、逻辑回归的介绍 逻辑回归(Logistic regression,简称LR)虽然其中带有"回归"两个字,但逻辑回归其实是一个分类模型,并且广泛应用于各个领域之中。虽然现在深度学习相对于这些传统方法更为火热,但实则这些传统方法由于其独特的优势依然广泛应用于各个领域中。 而对于逻辑回归而言,最为突出的两点就是其模型简单和模型的可解释性强。 逻辑回归模型的优劣势: 优点:实现简单,易于理解和实现;计算代价不高,速度很快,存储资源低; 缺点:容易欠拟合,分类精度可能不高 当z≥0.

iajin的博客 305

datawhale-sklearn组队学习-task01

一元线性回归 1.1 数据生成 生成数据,适当给数据增加一些扰动来检验线性回归的性能 import numpy as np import matplotlib.pyplot as plt def true_fun(X): # 真实函数 return 1.5*X + 0.2 np.random.seed(0) # 设置随机种子 #随机种子的目的是为了保证每次实验数据保持一致 n_samples = 30 # 设置采样数据点的个数 '''生成随机数据作为训练集,并且加一些噪声''' X_train

the_anmuxi的博客 210

从零到实战:机器学习算法代码实战完整指南

还在为机器学习理论难以落地而烦恼吗?想要真正掌握机器学习算法的核心原理而不只是调包调用?Datawhale的machine-learning-toy-code项目为你提供了一条从理论到实践的捷径。这个开源项目基于周志华老师的《机器学习》(西瓜书)🍉,通过NumPy和Scikit-learn两种实现方式,让你真正理解机器学习算法的数学本质和代码实现。 ## 🎯 为什么你需要这个项目? 想象一

gitblog_00738的博客 914

【2021.03--集成学习(上)-Task05】使用sklearn构建完整的分类项目

本次 DataWhale 第二十三期组队学习,其开源内容的链接为:[https://github.com/datawhalechina/team-learning-data-mining/tree/master/EnsembleLearning](https://github.com/datawhalechina/team-learning-data-mining/tree/master/EnsembleLearning) 本次Task的任务是从回归问题过渡到分类的问题,使用大名鼎鼎的鸢尾花数据集。对于该数

Shepard_的博客 200

《机器学习基础》组队学习第二次打卡

一、学习内容:贝叶斯概率模型 二、知识点梳理 相关概念(生成模型、判别模型) 先验概率、条件概率 贝叶斯决策理论 贝叶斯定理公式 极值问题情况下的每个类的分类概率 下溢问题如何解决 零概率问题如何解决? 优缺点 sklearn参数详解,Python绘制决策树 1. 相关概念 **生成模型:**在概率统计理论中, 生成模型是指能够随机生成观测数据的模型,尤其是在给定某些隐含参数的条件下。它给观测...

liculture的博客 206

day4-分类问题(相关案例代码理解分享)

day4-分类问题(相关案例代码理解分享) https://blog.csdn.net/Codewith_jing/article/details/118927246 目录day4-分类问题(相关案例代码理解分享)心得体会前言一、回归、分类、无监督学习1.引入相关科学计算包2. 回归连续型变量问题2.1 导入并查看数据集2.2 画散点图三、作业(1)请详细阐述线性回归模型得最小二乘法表达(2)在线性回归模型中,极大似然估计最小二乘估计有什么联系区别吗(3)为什么多项式回归在实际问题中的表现经常不是很好总

啧啧怪的博客 434

数学建模入门指南:从零到一掌握Python实战团队协作

数学建模是将现实问题转化为数学问题并求解的核心方法,其关键在于构建清晰的数学模型。从原理上看,它依赖于函数、概率统计等基础数学概念,并通过编程工具实现模型求解。在技术价值上,数学建模能有效提升问题分析、预测决策能力,是数据分析机器学习的重要基础。常见的应用场景包括票房预测、销量分析和资源优化等实际问题。对于初学者,掌握Python中的Pandas、NumPy等库进行数据处理,并理解线性回归等基础模型,是快速入门的关键。本文围绕数学建模的实战流程,结合团队协作常见误区,为新手提供了从环境搭建到论文撰写的

weixin_30425949的博客 395

AI工程师转型指南:大模型时代的学习路线求职策略

机器学习作为人工智能的核心技术,通过算法使计算机系统从数据中自动学习并改进。其核心原理涉及统计学、优化理论和神经网络,在工程实践中常使用Python生态的Scikit-learn和PyTorch等框架。随着Transformer架构和大模型技术的突破,AI工程师成为实现商业智能化的关键角色,在智能客服、推荐系统等场景创造显著价值。当前市场对掌握大模型微调(如LoRA技术)和分布式训练的人才需求激增,一线城市AI岗位起薪普遍达25k以上。从数学基础到HuggingFace实战的体系化学习,配合商业项目经验积累

weixin_34241036的博客 360

AI入门指南:四位大牛课程构建机器学习到深度学习完整路径

机器学习作为人工智能的核心技术,通过算法让计算机从数据中学习规律。其基本原理涉及特征提取、模型训练和预测推理,其中梯度下降等优化算法是关键。深度学习作为机器学习的延伸,利用神经网络模拟人脑处理复杂模式,在图像识别、自然语言处理等领域展现出强大能力。PyTorch框架凭借动态计算图和易用性,成为深度学习实践的重要工具。计算机视觉作为AI的热门应用方向,通过卷积神经网络实现图像分类、目标检测等任务。本文基于李宏毅、吴恩达、李飞飞、李沐四位专家的经典课程,系统梳理从机器学习基础到深度学习实战的学习路径,帮助初学者

weixin_34095889的博客 330

MathorCup数学建模备赛指南:从组队分工到历届资源深度利用

数学建模是运用数学工具和计算机技术解决实际问题的系统性方法,其核心在于将现实问题抽象为数学模型,并通过算法求解结果分析。这一过程不仅需要扎实的数学编程基础,更强调团队协作工程化实践能力。在各类科技竞赛中,数学建模能力是评估参赛者综合素质的关键指标,广泛应用于数据分析、运筹优化、预测评估等场景。对于MathorCup这类高水平赛事,高效的备赛策略尤为关键。本文聚焦于如何系统性地进行赛前筹备,特别是通过深度挖掘历届赛题获奖论文这一核心资源,构建知识框架并优化团队分工,从而将报名转化为一次有价值的系统性学

weixin_30328063的博客 385

Python数学建模全流程实战:从数据处理到论文写作的保姆级指南

数据处理可视化是数据科学和工程实践中的基础环节,它们构成了从原始信息到有效洞察的技术闭环。数据处理涉及数据清洗、转换和特征工程,旨在为模型提供高质量输入;可视化则通过图表直观揭示数据内在规律,辅助决策分析。在数学建模竞赛等应用场景中,这些技术能显著提升问题求解的效率和结果的可解释性。本文聚焦于Python生态,系统讲解如何利用Pandas、NumPy进行数据处理,并借助Matplotlib、Seaborn实现专业可视化,最终形成一套从赛题分析到论文成稿的完整实战方案,帮助读者构建可落地的建模能力。

weixin_30719711的博客 363

数学建模竞赛编程手成长路线:从数据处理到算法实战

算法是解决复杂问题的核心工具,其本质是通过一系列计算步骤将输入转化为期望的输出。在工程实践中,算法的高效实现离不开扎实的编程基础和数据处理能力。对于数学建模、数据分析等应用场景,掌握Python及其核心科学计算库(如NumPy、Pandas)进行数据清洗、特征工程和可视化,是构建可靠模型的第一步。在此基础上,理解并应用优化、预测、分类等经典算法(如线性规划、随机森林、时间序列分析),能将数学思想转化为可运行的代码,从而创造实际的技术价值。本文聚焦于**数学建模**和**编程学习路线**,为初学者梳理了一条从

weixin_34216107的博客 360
上一篇: 【蓝桥杯】BASIC-29 高精度加法
下一篇: 【蓝桥杯】BASIC-28 Huffman树
荔枝炖梨
博客等级 码龄10年 26粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值