机器学习监督算法
机器学习常用算法
一.回归算法
1.一元线性回归
- 存在y=ax+b的模型,称之为一元线性回归
2.多元线性回归 - 形如f(x)=w1x1+w2x2+w3x3+b的这种存在多个变量的线性回归,称之为多元线性回归.
- 可以将其写成一个向量表达形式:f(x)=wtxb
1.最小二乘法
1)定义
- 基于均方误差最小化求解的方法称为最小二乘法。
- 选择未知参数,是理论值和观测值的差值的平方和最小。
2)解法
- 因为最小二乘法的计算函数本身是一个凸函数,则存在最小值,令偏导数都为0的时候,则为最小点。
3)代码实现
# coding="utf-8"
# 引入依赖
import numpy as np;
import matplotlib.pyplot as plt;
# 导入数据
datas = np.genfromtxt("E:\CodeStudy\PythonCode\Demo01\data\data.csv", delimiter=',')
# 提取datas中的两列数据,分别作为x和y
x = datas[:, 0]
y = datas[:, 1]
# 定义损失函数,传入wb,和数据
def comput_cos(w, b, datas):
total_cost = 0
M = len(datas)
# 逐点计算平方损失误差,然后求平均数
for i in range(M):
x = datas[i, 0]
y = datas[i, 1]
total_cost += (y - w * x - b) ** 2
return total_cost / M;
# 定义一个算法拟合函数,先定义求均值的函数ava
def average(data):
sum = 0
num = len(data)
for i in range(num):
sum += data[i]
return sum / num;
# 定义核心拟合函数
def fit(datas):
M = len(datas)
x_bar = average(datas[:, 0])
sum_yx = 0;
sum_x2 = 0;
sum_delta = 0;
for i in range(M):
x = datas[i, 0]
y = datas[i, 1]
sum_yx += y * (x - x_bar)
sum_x2 += x ** 2
# 根据公式去算w和b
w = sum_yx /