线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。线性回归中的数据呈现线性关系,其表达形式为y = w(T)x+b。其中w为系数向量组,x为特征值向量组,b为常值系数。
我们通常将数据集分为训练集和测试集,使用训练集来确定待定系数,测试集来测试误差,通过代价函数进行优化。
- 训练模型的一些方法:正规方程法,梯度下降法等。
- 测试模型的一些方法:留出法,交叉验证法,自助法等。
此次实现主要使用的是梯度下降法和留一法。
代码如下,详情见注释:
//
//main.cpp
//Created by zzx on 2018.7.16
#include <iostream>
#include<fstream>
#include<cmath>
const int sample = 28;//样本数 fish样本为44 house_price样本为28
const int feature = 13;//特征值数 fish样本为4 house_price样本为13
const int scaling = 10;//特征缩放大小 fish样本为100 house_price样本为10
double a =0.001;//学习率 fish样本为0.0002 house_price样本为0.001
#define path "D:\house_price.txt"
using namespace std;
int main()
{
double x[sample][feature] = { 0 };
ifstream i