周报——写代码时解决的相关问题(7.22-7.28)

如何定义一个类

知识点1:类=属性(数据)+方法(函数)
知识点2:用类创建对象——会默认调用__init__()方法
知识点3:通过对象调用类中的方法——self相当于C语言中的this指针
在这里插入图片描述
注意:传参的时候并不用传self,它负责把其他参数定位到所创建对象的地址。
在这里插入图片描述

类的继承

子类与父类,就像集合中的真子集与子集。
当子类没有自己的构造函数时,就会调用父类的构造函数(用于创建和初始化对象,也就是__init__()。)
对于其他方法,调用逻辑是优先看所属的类有没有该方法,没有的话往上找父类的同名方法使用
当我调用父类构造方法的内容与我们需要的内容有不同,那就不能只写在父类中,可是如果写在子类中要么会重复,要么会只有该属性。此时,使用super()方法来解决——用来把一个方法的不同属性调用来源做分流,往往在继承父类方法时使用。
它会返回当前类(子类)的父类,告诉他哪些属性从父类调用,哪些使用子类的。
知识点1:如何继承——在类后面加上()
知识点2:理解super方法

对比两种写法:
super(哪些从子类调用LeNet, self).init()
super().init(要从父类继承哪些一样的)——适合知道要从父类继承哪些语句
在这里插入图片描述

为什么要有主函数的判断,何时要用?

一是清楚变量__name__的值
二是知道每个py文件都可以作为单独脚本运行,也可以被调用。
所以,为了防止输出时出现被调用文件的测试内容,主函数应该放在被调用的.py文件里。

当import xx找不到模块时,如何解决

出现此情况的原因,往往是Python解释器找不到xx的路径,也就是说需要手动给Python解释器添加搜索路径,如下:
在这里插入图片描述
在这里插入图片描述
当然还有一种极隐蔽的错误:若是所调用的模块名和某个脚本文件名正好相同,且该文件恰好在Python解释器的搜索路径范围内,程序运行也会报错。解决方法是:修改整个脚本的文件名。

如何使用日志来调试代码

在这里插入图片描述

提问的原则

1.想要做什么(不只是做了什么)
2.提示错误发生的具体信息(偶尔、总是)
3.把代码段或者整个复制出来
4.为解决这个问题做了哪些尝试
5.列出使用的Python版本、操作系统版本

查看程序执行的顺序及变量变化

1.可视化网站:pythontutor.com——查找错误
2.logging日志

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是求解多元多项式回归的 MATLAB 代码: ```matlab % 输入数据 x1 = [36.4 37.2 37.2 36.2 31.5 28.9 27.2 26.7 26.1 26.1 25.4 25.3 25.4]'; x2 = [50.0 52.0 49.0 51.0 68.0 74.0 83.0 82.0 88.0 88.0 90.0 88.0 87.0]'; x3 = [982.9 982.2 981.8 981.6 982.3 982.6 983.4 983.5 984.0 983.6 984.4 984.5 984.4]'; y = [-7.30 -7.36 -7.35 -7.33 -7.31 -7.30 -7.26 -7.22 -7.21 -7.23 -7.18 -7.17 -7.14]'; % 构建设计矩阵X X = [ones(size(x1)) x1 x2 x3 x1.^2 x1.*x2 x1.*x3 x2.^2 x2.*x3 x3.^2]; % 求解回归系数 beta = X \ y; % 构建预测模型 model = @(x1,x2,x3) beta(1) + beta(2)*x1 + beta(3)*x2 + beta(4)*x3 ... + beta(5)*x1.^2 + beta(6)*x1.*x2 + beta(7)*x1.*x3 ... + beta(8)*x2.^2 + beta(9)*x2.*x3 + beta(10)*x3.^2; % 预测并绘制拟合图 x1fit = min(x1):0.1:max(x1); x2fit = min(x2):0.1:max(x2); x3fit = min(x3):0.1:max(x3); [X1FIT,X2FIT,X3FIT] = meshgrid(x1fit,x2fit,x3fit); YFIT = model(X1FIT,X2FIT,X3FIT); figure; plot3(x1,x2,x3,'o',x1fit,x2fit,x3fit,'*'); hold on; mesh(X1FIT,X2FIT,X3FIT,YFIT); xlabel('x1'); ylabel('x2'); zlabel('x3'); title('拟合图'); % 绘制残差图 YFIT = model(x1,x2,x3); figure; plot(YFIT - y,'o'); xlabel('样本编号'); ylabel('残差'); title('残差图'); ``` 运行上述代码后,会先绘制拟合图,然后绘制残差图。拟合图中,蓝色的点表示原始数据,红色的点表示拟合值,可以看到拟合值与原始数据比较接近;残差图中,横轴表示样本编号,纵轴表示残差,残差的分布应该比较均匀,没有明显的规律。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值