简单线性回归原理&sklearn简单实现

1. 回归与分类

复制代码
回归模型:针对于连续值的预测,即线性关系
分类模型:预测离散值,非线性,针对于分类问题

2. 回归

回归算法是相对分类算法而言的,与我们想要预测的目标变量y的值类型有关。

复制代码
如果目标变量y是分类型变量,
    如预测用户的性别(男、女),预测月季花的颜色(红、白、黄......),预测是否患有肺癌(是、否),那我们就需要用分类算法去拟合训练数据并做出预测;

如果y是连续型变量,
    如预测用户的收入(4千,2万,10万......),
    预测员工的通勤距离(500m,1km,2万里......),
    预测患肺癌的概率(1%,50%,99%......),
我们则需要用回归模型。

有时分类问题也可以转化为回归问题,例如的肺癌预测,我们可以用回归模型先预测出患肺癌的概率,然后再给定一个阈值, 例如50%,概率值在50%以下的人划为没有肺癌,50%以上则认为患有肺癌。

复制代码
回归分析:寻找变量之间近似的函数关系
线性回归分析:寻找变量之间近似的线性函数关系

3. 一元线性回归

y=β0+β1x

当给定参数β0和β1的时候,画在坐标图内是一条直线(这就是"线性"的含义)

当我们只用一个x来预测y,就是一元线性回归,也就是在找一个直线来拟合数据。

线性回归就是要找一条直线,并且让这条直线尽可能地拟合图中的数据点。

4. 回归问题常用的损失函数

复制代码
残差平方和(RSS/SSR,residual sum of squares/sum squared residual)
均方误差 (MSE,Mean Squared Error)

5. python实现

sklearn中封装好了线性回归模型的实现,直接实例化类LinearRegression即可,

一般分为以下几个步骤:

1)训练集准备

特征集X

特征集对应的标签集y

  1. 实例化模型&模型拟合

model = LinearRegression()

model.fit(X_train,y_train)

  1. 预测新数据

model.predict(...)

4)误差计算,sklearn对于常见的误差函数也已经封装好

from sklearn.metrics import mean_squared_error

mse= mean_squared_error(y_真实,y_预测)

python 复制代码
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
import pickle # 保存模型的包

# 假设有特征矩阵X和目标变量y
X = [[1, 2], [2, 4], [3, 6], [4, 8], [5, 10]]
y = [3, 6, 9, 12, 15]

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建线性回归模型
model = LinearRegression()

# 拟合模型
model.fit(X_train, y_train)

print(model.intercept_)  # 常数项  0.0
print(model.coef_)  # 变量系数  [0.6 1.2]

# 预测测试集
y_pred = model.predict(X_test)

# 计算均方误差
mse = mean_squared_error(y_test, y_pred)

print("线性回归模型的均方误差:", mse)


# # load the saved model
# with open('my_model.pkl', 'rb') as f:
#     model = pickle.load(f)
#
# # predict using the loaded model
# model.predict(X)


# # load the saved model
# with open('my_model.pkl', 'rb') as f:
#     model = pickle.load(f)
#
# # continue training the model
# model.fit(X_train, y_train)
#
# # save the updated model
# with open('my_updated_model.pkl', 'wb') as f:
#     pickle.dump(model, f)
相关推荐
魔镜er15 小时前
04-pytorch构建线性回归
人工智能·pytorch·线性回归
知识分享小能手2 天前
统计学学习教程,从入门到精通,一元线性回归 —— 知识点详解(17)
学习·算法·线性回归
你想知道什么?3 天前
线性回归-学习笔记
笔记·学习·线性回归
All The Way North-10 天前
【NLP文本分类实战】随机森林 + TF-IDF 完整流程,准确率82.5%(数据分析/分词/模型训练)
随机森林·机器学习·nlp·tf-idf·文本分类·sklearn·保姆级教程
金融小师妹11 天前
AI多因子模型解析PPI信号:PPI数据降温紧缩加息预期,推动黄金回升——机器学习宏观预测框架
大数据·逻辑回归·线性回归
deephub12 天前
用 Scikit-LLM 和 Groq 搭建情感分析 pipeline
人工智能·大语言模型·sklearn
AI科技星12 天前
《全域数学·工程应用大典》113–200讲完整总目录
数据结构·人工智能·算法·机器学习·线性回归·乖乖数学·全域数学
金融小师妹13 天前
多因子宏观推演模型:地缘局势风险与利率预期共振下,黄金价格为何持续承压的智能预测框架
均值算法·线性回归·transformer
Dream_ksw17 天前
机器学习之基于最小二乘的线性回归正规方程求解公式推导(有监督学习)
学习·机器学习·线性回归
AI科技星19 天前
线性回归不是拟合直线工具,是两套耦合双螺旋提取同步主干,生成二者共生平衡基准轨迹《全域数学vs传统数学:人类文明进阶200讲》第67讲 高中通俗版逐字稿
算法·回归·线性回归·乖乖数学·全域数学