机器学习的基本问题
1.有监督学习:通过已知的输入和输出,寻找它们之间的关系,对未知输出的输入预测其输出。
1)回归问题:对连续形式的输出进行预测
2)分类问题:对离散形式的输出进行预测
2.无监督学习:在未知输出的前提下,根据输入数据内部的规则进行类别划分。
1)聚类问题
2)成分分析:降低维度,从多个特征中筛选部分最重要的特征
1.线性回归
介绍略,线性回归大家学过一点统计学的应该都知道吧
可能要导入的包
import pickle
import numpy as np
import sklearn.linear_model as lm
import sklearn.metrics as sm
import matplotlib.pyplot as mp
sklearn中的linear_model可以帮我们直接计算出模型来,下面是用训练-预测-保存模型的过程
# 创建线性回归器对象
model = lm.LinearRegression()
# 用训练数据集训练线性回归器对象
model.fit(x, y)
# 预测输出
pred_y = model.predict(x)
# 平均绝对值误差
print(sm.mean_absolute_error(y, pred_y))
# 平均平方值误差
print(sm.mean_squared_error(y, pred_y))
# 中位绝对值误差
print(sm.median_absolute_error(y, pred_y))
# R2评分
print(sm.r2_score(y, pred_y))
# 保存线性回归器对象
with open('../../data/linear.pkl', 'wb') as f:
pickle.dump(model, f)
加载模型
# 从文件加载线性回归器对象
with open('../../data/linear.pkl', 'rb') as f:
model = pickle.load(f)
2.岭回归
线性回归的主要问题是对异常值非常敏感。在真实世界的数据收集过程中,经常会遇到错误的度量结果,而线性回归使用的普通最小二乘法,其目标是使平方误差最小化。这时,由于异常值误差的绝对值较大,因此会导致模型参数的明显偏移,降低模型对正常样本的适用度。为了避免这个问题,通过在成本函数中引入正则化项,借助不同样本的阈值权重,削弱少数异常值对回归效果的影响,这就是岭回归。
回归分析中常用的最小二乘法是一种无偏估计。对于一个适定问题,X通常是列满秩的