用 C 语言写个简单的【多元线性回归】
很久没写 C语言了吧!语法都忘了。
数据集:UCI
abalone http://archive.ics.uci.edu/dataset/1/abalone
.data 格式,另外两个说明文件。
关于 C 语言数据结构
https://blog.csdn.net/u012243115/article/details/44563331
参照案例,来自百度知道
https://zhidao.baidu.com/question/1430140331146250339.html
ASCII 对照表,用户 hexdump -C filename
https://c.biancheng.net/c/ascii/
指针移动
https://blog.csdn.net/st66688/article/details/108356361
https://blog.csdn.net/XWXnb6/article/details/144379184
指针数组
https://blog.csdn.net/cjzjolly/article/details/82116772
生成新文件的案例
https://blog.csdn.net/weixin_55491446/article/details/128392448
.dat 转文本 的参考
https://blog.csdn.net/weixin_55491446/article/details/128392448
2025.1.13 今天,数据集变成 txt,逗号分隔
参考 https://blog.csdn.net/rng_uzi_/article/details/118426947
用 strtok(变量,分隔符) 完成每一行的变量制作。
用 strtof() 作强制类型转换
根据数据集描述,分析的目的,就是预测鲍鱼的年龄。一共 4900+ 样本。最后一列就是Y。整个整数,+1.5就是年龄。
我们用 OLS,以及同方差假设,以及变量之间的协防方差阵,反推出系数矩阵的逆矩阵。用于估计系数向量,beta 。
参考:矩阵形式的线性回归模型 https://www.cnblogs.com/lixddd/p/14360079.html
来源:计量经济学导论 https://www.cnblogs.com/lixddd/p/14360079.html
接下来的工作,还要编写一个求方差的函数。
2025.1.13 17:44 完成方差函数。接下来的工作,写一个协方差的函数。
2025.1.13 18:30 完成协方差,其中花了 12 分钟玩数独。现在开始计算每个变量的方差,暂时用一阶中心矩作为估计量。
18:35 变量方差计算完毕。
18:48 根号不好用,自己编写个根号试试。
昨天 11 点左右到家里。我本来想立刻写代码,但是先搞了卫生工作,然后就睡着了!所以,还是得先把任务完成。
今天早上 9点半,醒。给自己放两个礼拜的假,这是这几年来的假期,从 2018 年开始计算。平均每年 2 天假期。
11点多,到达工作场所,打开工作界面。我还是会有分心的时候,但是不回拨出脑力处理 Process (进程)。
13点18分,遇到问题,C语言写代码的时候,函数里套函数 ,参数传不进去。
参考:深入理解计算机系统(3.7)------过程(函数的调用原理) https://www.cnblogs.com/ysocean/p/7625917.html
计算机用 Stack 存传递参数。因此,可以判断,指针指到内层函数的时候,Stack pop 出来的是 NULL value。
教你手动写 SQRT
参考:C/C++手动实现sqrt() https://www.cnblogs.com/bluettt/p/13025259.html
2个小时之后,发现是 %f 没写。我现在知道,为什么 print 的时候无需定义 Type 了。
接下来的任务,完成 (X.T*X) 这个矩阵的逆矩阵。
线性回归的矩阵表示:
依据上述两个公式推导,得出
其中,sigma 为协方差阵,X 是自变量,Y 是响应变量。
做法,乘号两边,各放两个向量。这样系数就估计出来了。
选的算法:左边先用顺序的,0-27 顺序排列;右边,差额扩大的数列,称为“跳点”。
第一步,先完成顺序部分。
第二步,完成跳点部分。
然后确认几个向量的维度。
因为 Scale 差得有点多,就看正负,准确率。C语言模型,搞定了!!
2025.1.15 17:15
Confusion Matrix
计算逻辑
2025.1.15 晚上 6 点。完成第 20 个模型。
最主要是自己做实验!!!
收乐财