复试 || 就业day02(2024.01.02)项目一

前言

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

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

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

最小二乘法的推导

在这里插入图片描述
注意这里定义的凹凸函数和考研中的凹凸函数的定义正好是相反的

使用正规方程求解 y = w x + b y=wx+b y=wx+b

import numpy as np
import matplotlib.pyplot as plt'''
生成[0, 10]的30个数,重塑为30行1列,"-1" 代表让计算机自行判断
这里的值包括 0 和 10
下述代码效果等同于:
X = np.linspace(0, 10, num = 30).reshape(30, 1)
注意生成的数是均匀分布的(生成的是等差数列)
'''
X = np.linspace(0, 10, num = 30).reshape(-1, 1)# 随机生成斜率和截距(这是真正的斜率和截距)
# 生成[1, 5)的1个数(size = 1)
w = np.random.randint(1, 5, size = 1)
b = np.random.randint(1, 10, size = 1)
'''
加一些噪声,让数据上下波动
np.random.randn(30, 1):生成一个30行1列的数组
其中的元素是从标准正态分布中随机抽取的,其值可以是整个实数域
但由于服从标准正态分布,其值通常在0附近
'''
y = X * w + b + np.random.randn(30, 1)plt.scatter(X, y)

在这里插入图片描述

'''
根据最小二乘法去估计 w 和 b
再次强调上述的 w 和 b 是真实值,现求 w 和 b 的估计值
需要给X额外去添加一列全为1的列, axis = 1 代表列拼接
'''
X = np.concatenate([X, np.full(shape = (30, 1),fill_value= 1)],axis = 1)# 正规方程求解
θ = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y).round(2) # 保留2位小数
print('一元一次方程真实的斜率和截距是:', w, b)
print('通过正规方程计算求解的斜率和截距是:', θ )'''
二维切片:
提取第一行:X[0, :]
提取第一列:X[:, 0]
提取最后一行:X[-1, :]
提取最后一列:X[:, -1]
提取第二行:X[1, :]
切片的语法是:array[start_row : stop_row, start_col : stop_col]
start_row 和 stop_row 分别表示行切片的起始和结束位置;
start_col 和 stop_col 分别表示列切片的起始和结束位置
'''plt.plot(X[:,0],X.dot(θ),color = 'green')'''
例子:
import numpy as nparr_2d = np.array([[0, 1, 2],[3, 4, 5],[6, 7, 8]])# 提取第一行
row_1 = arr_2d[0, :]
print(row_1)# 提取第一列
col_1 = arr_2d[:, 0]
print(col_1)# 提取子矩阵(2x2)
sub_matrix = arr_2d[1:3, 0:2]
print(sub_matrix)
''''''
输出:
print(row_1):[0 1 2]
print(col_1):[0 3 6]
print(sub_matrix):[[3 4][6 7]]
'''

在这里插入图片描述

# 组合代码,同时打印出来两幅图
import numpy as np
import matplotlib.pyplot as plt
X = np.linspace(0, 10, num = 30).reshape(-1, 1)
w = np.random.randint(1, 5, size = 1)
b = np.random.randint(1, 10, size = 1)
y = X * w + b + np.random.randn(30, 1)
plt.scatter(X, y)
X = np.concatenate([X, np.full(shape = (30, 1),fill_value= 1)],axis = 1)
θ = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y).round(2) # 保留2位小数
print('一元一次方程真实的斜率和截距是:', w, b)
print('通过正规方程计算求解的斜率和截距是:', θ )
plt.plot(X[:,0],X.dot(θ),color = 'green')

在这里插入图片描述

多元线性回归 y = w 1 x 1 + w 2 x 2 + b y=w1x1+w2x2+b y=w1x1+w2x2+b

Q:为什么仅仅距离二元线性回归?
A:可以绘出3D图,再高维不可绘图,不方便演示

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.axes3d import Axes3D # 绘制三维图像
# 构造 x1, x2
# 相比于 X = np.linspace(-150, 149, num = 300).reshape(-1, 1)生成的等差数列
# np.random.randint(-150, 150, size = (300, 1)) 完全随机
x1 = np.random.randint(-150, 150, size = (300, 1))
x2 = np.random.randint(0, 300, size = (300, 1))
# 随机生成 w, b
w = np.random.randint(1, 5, size = 2) # 生成 w1 和 w2,注意生成的是一维数组
b = np.random.randint(1, 10, size = 1)
# 根据二元一次方程计算目标值 y,并且加上噪声,让数据有上下波动
y = x1 * w[0] + x2 * w[1] + b + np.random.randn(300, 1)
fig = plt.figure(figsize = (9, 6)) # 图像的宽度为9,高度为6
ax = Axes3D(fig)      # 创建一个三维坐标轴
ax.scatter(x1, x2, y) # 三维散点图, x1, x2, y 是三个维度:x轴, y轴, z轴
ax.view_init(elev = 10, azim = -20) # 调整视角,仰角10°,视角-20°
# 重新构造 X 
X = np.concatenate([x1, x2, np.full(shape = (300, 1), fill_value = 1)], axis = 1)
w = np.concatenate([w, b])   # 注意这里生成的仍然是一个一维数组(包含3个元素)
θ = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y).round(2)
print('二元一次方程真实的斜率和截距是:', w)
# θ是一个包含3个元素的列向量,通过 reshape 操作将之变成一个三个元素的数组
print('通过正规方程求解的斜率和截距是:', θ.reshape(-1))
# 根据求解进行绘图
'''
注意这里使用的是重新生成的x和y,并非之前用来训练数据的x1和x2
我们当然也可以使用之前训练的x1和x2,但是之前的数据是随意生成的,并非等分
使用x1和x2进行绘图的化会比较丑hhhh,所以新生成一组等分的x和y进行最终的绘图
'''
x = np.linspace(-150, 150, 100)
y = np.linspace(0, 300, 100)
z = x * θ[0] + y * θ[1] + θ[2]
ax.plot(x, y, z, color = 'red')

在这里插入图片描述

总结

关于二维切片:
在这里插入图片描述

上图中的代码:
例一:

import numpy as np# 创建一个二维数组
arr = np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9]])# 二维切片,提取第一行和第二行,第一列和第二列
slice_2d = arr[:2, :2]print("原始数组:")
print(arr)
print("\n二维切片后的子数组:")
print(slice_2d)

输出:

原始数组:
[[1 2 3][4 5 6][7 8 9]]二维切片后的子数组:
[[1 2][4 5]]

例二:

import numpy as np# 创建一个二维数组
arr = np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9]])# 切片第一行和第一列
slice_first_row_col = arr[:1, :1]print("原始数组:")
print(arr)
print("\n切片后的子数组:")
print(slice_first_row_col)

输出:

原始数组:
[[1 2 3][4 5 6][7 8 9]]切片后的子数组:
[[1]]

例三:

import numpy as np# 创建一个二维数组
arr = np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9]])# 切片第二行和第二列
slice_second_row_col = arr[1:2, 1:2]print("原始数组:")
print(arr)
print("\n切片后的子数组:")
print(slice_second_row_col)

输出:

原始数组:
[[1 2 3][4 5 6][7 8 9]]切片后的子数组:
[[5]]

例四:

import numpy as np# 创建一个二维数组
arr = np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9]])# 切片最后一行和最后一列
slice_last_row_col = arr[-1:, -1:]print("原始数组:")
print(arr)
print("\n切片后的子数组:")
print(slice_last_row_col)

输出:

原始数组:
[[1 2 3][4 5 6][7 8 9]]切片后的子数组:
[[9]]

完整截图:
在这里插入图片描述

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

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

相关文章

视频会员付费系统源码 影视视频模版源码 模板PC+WAP苹果CMS影视模板源码

快猫视频会员付费视频系统/x站视频模板/苹果CMS影视模板/可打包成双端APP 适用程序:苹果cmsv10 兼容性和面向场景: 1、Windows 平台: IIS/Apache PHP(5.6) MySQL(5.5) 2、Linux/Unix 平台…

基于 ESP32-C3 开启 Flash 加密和安全启动并进行 OTA 测试

软件: esp-idf v5.1.2 硬件: ESP32-C3 board 1. 首先,准备一个明文固件 hello-world.bin 基于 esp-idf-v5.1.2\examples\get-started\hello_world 例程,使用如下指令,直接编译,获取明文固件 hello-worl…

哨兵1号回波数据(L0级)FDBAQ压缩算法详解

本专栏目录: 全球SAR卫星大盘点与回波数据处理专栏目录-CSDN博客 1. 全球SAR卫星回波数据压缩算法统计 各国的SAR卫星的压缩算法按照时间轴排列如下: 可以看出传统的分块BAQ压缩算法(上图粉色)仍然是主流,哨兵1号其实也有传统的BAQ压缩模式。 本文介绍哨兵1号用的FDBAQ算…

安卓Android Studio读写FM1208CPU卡源码

本示例使用的发卡器:https://item.taobao.com/item.htm?spma1z10.5-c-s.w4002-21818769070.11.6c46789elLwMzv&id615391857885 package com.usbreadertest;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.view.M…

Spring Boot 2.7.11 集成 GraphQL

GraphQL介绍 GraphQL(Graph Query Language)是一种用于API的查询语言和运行时环境,由Facebook于2012年创建并在2015年公开发布。与传统的RESTful API相比,GraphQL提供了更灵活、高效和强大的数据查询和操作方式。 以下是GraphQL…

关于时间格式yyyy-M-d或yyyy-MM-d到yyyy-MM-dd的转换

工作时遇到前端传的时间格式是"2023-12-3 17:41:52",和"2023-1-1 17:41:52"但是我想要的是"2023-12-03 17:41:52"和"2023-01-01 17:41:52"。下面给大家分享几个解决方法 方法一: 找前端!让他改&…

ES6 class详解

✨ 专栏介绍 在现代Web开发中,JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性,还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言,JavaScript具有广泛的应用场景&#x…

频谱论文:空间频率插值的无线电地图 Space-Frequency-Interpolated Radio Map

#频谱# K. Sato, K. Suto, K. Inage, K. Adachi and T. Fujii, "Space-Frequency-Interpolated Radio Map," in IEEE Transactions on Vehicular Technology, vol. 70, no. 1, pp. 714-725, Jan. 2021, doi: 10.1109/TVT.2021.3049894. 东京理科大学&#xff0…

GZ075 云计算应用赛题第4套

2023年全国职业院校技能大赛(高职组) “云计算应用”赛项赛卷4 某企业根据自身业务需求,实施数字化转型,规划和建设数字化平台,平台聚焦“DevOps开发运维一体化”和“数据驱动产品开发”,拟采用开源OpenSt…

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

完全背包理论基础 完全背包和0-1背包问题唯一不同的地方就是,完全背包中每种物品有无限个。 完全背包和0-1背包在代码上唯一的不同体现在遍历顺序上,直接对两个问题的遍历顺序进行分析。 0-1背包在使用一维dp数组时,是先遍历物品&#xff…

HTML----JavaScript操作对象BOM对象

文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 本章要求 了解BOM模型掌握BOM模型实际应用 一.BOM模型概述 BOM(浏览器对象模型)是JavaScript中的一个重要概念,它提供了一组用于控制浏览器窗口和页面内容的…

云计算:OpenStack 分布式架构管理FLAT网络(单控制节点与多计算节点)

目录 一、实验 1.环境 2.控制节点创建网络 3.控制节点创建规格 4.控制节点新增安全组入口规则 5.控制节点创建实例 二、问题 1.FLAT网络底层如何实现 2.无法SSH 云主机实例 一、实验 1.环境 (1) 主机 表1 主机 主机架构IP备注controller控制节点192.168.204.210已部…