复试 || 就业day01(2023.12.29)项目一

news2024/11/23 6:39:00

文章目录

前言

💫你好,我是辰chen,本文旨在准备考研复试或就业
💫本文内容来自某机构网课,是我为复试准备的第一个项目
💫欢迎大家的关注,我的博客主要关注于考研408以及AIoT的内容
🌟 预置知识详见我的AIoT板块,需掌握 基本Python语法, Numpy, Pandas, Matplotlib

以下的几个专栏是本人比较满意的专栏(大部分专栏仍在持续更新),欢迎大家的关注:

💥ACM-ICPC算法汇总【基础篇】
💥ACM-ICPC算法汇总【提高篇】
💥AIoT(人工智能+物联网)
💥考研
💥CSP认证考试历年题解

正规方程

二元一次示例

在这里插入图片描述

import numpy as np
X = np.array([[1, 1], [2, -1]])
y = np.array([14, 10])
# np.linalg : 线性代数, .solve : 解决线性回归问题
np.linalg.solve(X, y)   # 效果和 LinearRegression 是等同的,默认也是计算不带截距

在这里插入图片描述

正规方程 : w = ( X T X ) − 1 X T y w = (X^TX)^{-1}X^Ty w=(XTX)1XTy

A = X.T.dot(X)   # 计算 X^T · X
B = np.linalg.inv(A) # 计算 A^(-1 )
C = B.dot(X.T)
C.dot(y)

在这里插入图片描述

三元一次方程示例

在这里插入图片描述

X = np.array([[1, -1, 1], [2, 1, -1], [3, -2, 6]])
y = np.array([100, 80, 256])
w = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y) # 正规方程
print(w)

在这里插入图片描述

八元一次方程示例

在这里插入图片描述

X = np.array([[0, 14, 8, 0, 5, -2, 9, -3],
              [-4, 10, 6, 4, -14, -2, -14, 8],
              [-1, -6, 5, -12, 3, -3, 2, -2],
              [5, -2, 3, 10, 5, 11, 4, -8],
              [-15, -15, -8, -15, 7, -4, -12, 2],
              [11, -10, -2, 4, 3, -9, -6, 7],
              [-14, 0, 4, -3, 5, 10, 13, 7],
              [-3, -7, -2, -8, 0, -6, -5, -9]])
y = np.array([339, -114, 30, 126, -395, -87, 422, -309])
w = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y)
print(w)

在这里插入图片描述

sklearn

# linear model : 线程方程
# LinearRegression : 线性回归
from sklearn.linear_model import LinearRegression

model = LinearRegression()

# X : 数据, y : 目标值
display(X, y)
model.fit(X, y)

# coef_ : 结果,返回值,系数,斜率,方程的解
model.coef_

在这里插入图片描述

# 调用 model 计算结果和使用正规方程不同
# 因为 LinearRegression 默认计算截距,而我们要计算的八元一次方程没有截距这个参数
# 设置 fit_intercept = False : 不用计算截距
from sklearn.linear_model import LinearRegression

model = LinearRegression(fit_intercept = False)

# X : 数据, y : 目标值
display(X, y)
model.fit(X, y)

# coef_ : 结果,返回值,系数,斜率,方程的解
model.coef_

在这里插入图片描述

带截距的线性方程

# 默认 axis = 0, 表示纵向拼接(多一行), axis = 1 表示横向拼接(多一列)
# np.full : shape(8, 1) : 8行1列  ;  fill_value : 填充值 
X = np.concatenate([X, np.full(shape = (8, 1), fill_value = 1)], axis = 1)
# 设 X 的每一行都添加了一个截距 12, 同样 y 也得跟着变换
y += 12  # 增加一列 12 的截距
# 需注意,我们是知道截距=12,但是计算机是不知道的,它会将12当成一个未知参数去计算
# 那么就相当于变成了九元一次方程组,若想出唯一解,我们需要至少九个方程
display(X, y) # 此代码块只能执行一次,每执行一次会添一列 1

在这里插入图片描述

# 增加一个方程
w = np.array([ 1.,  5., 15.,  3.,  8.,  4., 17., 12.]) # 这是标准答案
display(w)

# 随机生成 8个数作为第九个方程的xi
# 生成长度为8的一维数组,数组元素为 [-15, 15)
X9 = np.random.randint(-15, 15, size = 8) 
display(X9)

#新添加的方程也需要添加 12
y = np.concatenate([y, [X9.dot(w) + 12]])

# 给 X9 增加一列 1,并添加到 X 中
X9 = np.concatenate([X9, [1]])
display(X9)
X = np.concatenate([X, [X9]])
display(X)

在这里插入图片描述

print('标准答案:', w)
print('调用正规方程:', np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y))

model = LinearRegression(fit_intercept= False) # 注意这里还是 False
model.fit(X, y)
print('调用LinearRegression:', model.coef_, '截距:', model.intercept_)

在这里插入图片描述

model = LinearRegression(fit_intercept= True) # 注意这里更改为了 True
# 即让计算机去计算截距 12,所以求得的 x9 的值为 0
model.fit(X, y)
print('调用LinearRegression:', model.coef_, '\n截距:', model.intercept_)

在这里插入图片描述

model = LinearRegression(fit_intercept= True) # 注意这里更改为了 True
# 把截距这一列去掉(不当成参数)(x9 == 0 没有什么意义)
model.fit(X[:,:-1], y)
print('调用LinearRegression:', model.coef_, '\n截距:', model.intercept_)

在这里插入图片描述

总结

在这里插入图片描述
调用 np.linalg.solve(X, y) 和调用 LinearRegression 计算正规方程是一个效果,np.linalg.solve(X, y) 也是默认的不计算截距

说一下最后的添加截距(拿上述八元一次方程组举例),首先调用 LinearRegression 默认的 fit_interceptTrue 即为计算截距,如果我们本身方程没有截距,那么计算的结果就会有出入。

第一种方法:仍写成:fit_intercept= False 我们对于添加截距相当于要额外添加一列,需要对参数方程额外添加一列 1 ,但是计算机是不知道我们自己添加了一列的,只会把多出来的这一列当作新的未知变量,即方程变成了九元一次方程,这时候只有八个方程,故欲确定唯一解,我们需要自己补一行方程,注意这种方法解出来其实仍然是没有截距的(计算机把截距当成了一个新的未知数) ,所以调用 model.intercept_ 查看斜率仍然是 0,解得的新参数 X9 的值为 12
第二种方法:写成 fit_intercept= True 即把新添加进来的视为截距,那么就没有必要再添加额外的一列未知量 1 了,添加的话则会解得 X9 的值为 0 代表 X9 无权(没用),调用 model.intercept_ 查看斜率则为 12.000000000000007 舍入后得 12

额外说一下切片相关得内容,直接上截图:
在这里插入图片描述

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

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

相关文章

unity exe程序置顶和全屏

1.置顶和无边框 设置显示位置和范围 using System; using System.Runtime.InteropServices; using UnityEngine; public class WindowMod : MonoBehaviour {public enum appStyle{FullScreen,WindowedFullScreen,Windowed,WindowedWithoutBorder}public enum zDepth{Normal…

手写Spring与基本原理--简易版

文章目录 手写Spring与基本原理解析简介写一个简单的Bean加载容器定义一个抽象所有类的BeanDefinition定义一个工厂存储所有的类测试 实现Bean的注册定义和获取基于Cglib实现含构造函数的类实例化策略Bean对象注入属性和依赖Bean的功能Spring.xml解析和注册Bean对象实现应用上下…

STM32CubeMX学习(二) USB CDC 双向通信

STM32CubeMX学习(二) USB CDC 双向通信 简介CubeMX新建工程(串口LED)测试串口和LED串口接收测试USB CDC通信 简介 利用正点原子F407探索者开发板,测试基于USB CDC的双向数据通信。 CubeMX新建工程(串口LE…

ES6+ 面试常问题

一、let const var 的区别 1. var: 没有块级作用域的概念,有函数作用域和全局作用域的概念全局作用域性下创建变量会被挂在到 windows 上存在变量提升同一作用域下,可以重复赋值创建未初始化,值为 undefined 2. let&#xff1a…

2023年末,软件测试面试题总结与分享

大家好,最近有不少小伙伴在后台留言,得准备年后面试了,又不知道从何下手!为了帮大家节约时间,特意准备了一份面试相关的资料,内容非常的全面,真的可以好好补一补,希望大家在都能拿到…

天擎终端安全管理系统clientinfobymid存在SQL注入漏洞

产品简介 奇安信天擎终端安全管理系统是面向政企单位推出的一体化终端安全产品解决方案。该产品集防病毒、终端安全管控、终端准入、终端审计、外设管控、EDR等功能于一体,兼容不同操作系统和计算平台,帮助客户实现平台一体化、功能一体化、数据一体化的…

《PCI Express体系结构导读》随记 —— 第I篇 第1章 PCI总线的基本知识(16)

接前一篇文章:《PCI Express体系结构导读》随记 —— 第I篇 第1章 PCI总线的基本知识(15) 1.3 PCI总线的存储器读写总线事务 1.3.5 Delayed传送方式 如前文所述,当处理器使用Non-Posted总线周期对PCI设备进行操作、或者PCI设备使…

Android MVVM 写法

前言 Model:负责数据逻辑 View:负责视图逻辑 ViewModel:负责业务逻辑 持有关系: 1、ViewModel 持有 View 2、ViewModel 持有 Model 3、Model 持有 ViewModel 辅助工具:DataBinding 执行流程:View &g…

linux源码编译升级安装openssl3.0.1导致系统启动失败的问题解决

前两天在安装curl的时候,提示openssl版本太老了,原有的版本是openssl1.0的版本,需要将其升级到openssl3的版本。 直接使用命令行sudo apt install默认安装的还是openssl1.1.1版本,因此决定使用源码自行安装。 具体的安装过程就不赘…

webpack打包批量替换路径(string-replace-webpack-plugin插件)

string-replace-webpack-plugin 是一个用于在 webpack 打包后的文件中替换字符串的插件。它可以用于将特定字符串替换为其他字符串,例如将敏感信息从源代码中移除或对特定文本进行本地化处理。比如文件的html、css、js中的路径地址想批量更改一下 http://localhost:…

海德堡UV灯电源维修eta Plus Elc PE22-400-210

uv灯电源维修故障包括: 1、电压不稳:检查uv打印机的电压,设置一个稳压箱即可。 2、温度过高:uv打印机温度过高也会影响uv灯,可以更换为水冷式循环降温。 3、水箱里的信号线接触不好:将两边的信号线对调&…

leetcode刷题记录07(2023-04-30)【二叉树展开为链表 | 买卖股票的最佳时机 | 二叉树中的最大路径和(递归) | 最长连续序列(并查集)】

114. 二叉树展开为链表 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。 展开后的单链表应该与二叉树 先序遍历 顺…

ArcGIS批量计算shp面积并导出shp数据总面积(建模法)

在处理shp数据时, 又是我们需要知道许多个shp字段的批量计算,例如计算shp的总面积、面积平均值等,但是单个查看shp文件的属性进行汇总过于繁琐,因此可以借助建模批处理来计算。 首先准备数据:一个含有多个shp的文件夹。…

前后端分离nodejs+vue+ElementUi网上订餐系统69b9

课题主要分为两大模块:即管理员模块和用户模块,主要功能包括个人中心、用户管理、菜品类型管理、菜品信息管理、留言反馈、在线交流、系统管理、订单管理等; 运行软件:vscode 前端nodejsvueElementUi 语言 node.js 框架:Express/k…

Lumerical------按键中断程序执行

Lumerical------中断程序执行 引言正文 引言 在 Lumerical 中,很多时候我们需要通过 sweep 的方式来获取我们想要的结果,然而,有时候当我们运行程序后发现书写的脚本有问题时,我们想要强行终止程序的执行,该怎么办呢&…

代码随想录-刷题第四十二天

0-1背包理论基础 0-1背包问题介绍 0-1背包问题:有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 0-1背包问题可以使用回溯法进…

Collector收集器的高级用法

Collectors收集器的高级用法 场景1:获取关联的班级名称 原先如果需要通过关联字段拿到其他表的某个字段,只能遍历List匹配获取 for (Student student : studentList) {Long clazzId student.getClazzId();// 遍历班级列表,获取学生对应班级…

【ArkTS入门】ArkTS开发初探:语言特点和开发特点

什么是ArkTS? ArkTS是一个为鸿蒙组件而生的框架,语法亲人好用。基于TypeScript,ArkTS拓展了声明式UI、状态管理等的能力,从本质上来讲,是TypeScript的扩展,主要服务于前端。 ArkTS的开发可以满足“一次开…

vue-cli3/webpack打包时去掉console.log调试信息

文章目录 前言一、terser-webpack-plugin是什么?二、使用配置vue-cli项目 前言 开发环境下,console.log调试信息,有助于我们找到错误,但在生产环境,不需要console.log打印调试信息,所以打包时需要将consol…

【React源码 - ReactDom.render发生了什么】

在React开发中,在入口文件我们都会执行ReactDom.render来讲整个应用挂载在主document中,那其中发生了什么,React是如何讲我们写的JSX代码,一步一步更新Fiber进而挂载渲染的呢。本文主要是基于react17.0.2的源码以及自己的理解来简…