python机器学习之线性回归

python机器学习之线性回归

线性回归是一种统计学习方法,它用于建立自变量与因变量之间的线性关系。在简单线性回归中,只有一个自变量和一个因变量;在多元线性回归中,有多个自变量和一个因变量。线性回归的目标是找到一个最优的线性函数,使得这个函数能够最好地拟合样本数据,同时能够泛化到新的数据。
线性回归模型可以表示为:

$$ y = β0 + β1x1 + β2x2 + ... + βnxn + ϵ  $$

其中, y y y 是因变量, x 1 x_1 x1 x n x_n xn 是自变量, β 0 \beta_0 β0 β n \beta_n βn 是回归系数, ϵ \epsilon ϵ 是误差项。

线性回归模型的目标是最小化误差平方和,即:
∑ i = 1 n ( y i − y i ^ ) 2 \sum_{i=1}^n (y_i - \hat{y_i})^2 i=1n(yiyi^)2

其中, y i y_i yi 是实际的因变量值, y i ^ \hat{y_i} yi^ 是由模型预测的因变量值。最小化误差平方和的过程可以通过最小二乘法来实现。

线性回归模型在许多领域得到了广泛的应用,例如经济学、金融学、社会科学、生物学、医学等。它是一种简单而有效的预测模型,但也有一些限制,例如它只能捕捉到自变量与因变量之间的线性关系,而无法处理非线性关系。

以下是使用Python的Scikit-learn库实现线性回归的代码示例:

from sklearn.linear_model import LinearRegression

# 创建线性回归模型对象
lr_model = LinearRegression()

# 准备训练数据
X_train = [[1, 2], [3, 4], [5, 6]]
y_train = [3, 7, 11]

# 训练模型
lr_model.fit(X_train, y_train)

# 使用模型进行预测
X_test = [[7, 8], [9, 10]]
y_pred = lr_model.predict(X_test)

# 打印预测结果
print(y_pred)

在这个示例中,我们首先导入了线性回归模型对象,然后创建了一个对象。接着,我们准备了训练数据,其中 X_train 是一个二维数组,包含了训练样本的自变量,y_train 是一个一维数组,包含了训练样本的因变量。我们使用 fit 方法对模型进行训练。

训练完成后,我们使用模型对测试数据 X_test 进行预测,得到了预测结果 y_pred。最后,我们打印出预测结果。

需要注意的是,这只是一个简单的示例,实际使用中,我们需要对数据进行预处理、特征工程等操作,以便更好地训练模型。

以下是使用Python的NumPy库手动实现简单线性回归模型的代码:

import numpy as np

class LinearRegression:
    def __init__(self):
        self.w = None
        
    def fit(self, X, y):
        # 添加偏置项
        X = np.concatenate([X, np.ones((X.shape[0], 1))], axis=1)
        
        # 计算最优解
        self.w = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y)
        
    def predict(self, X):
        # 添加偏置项
        X = np.concatenate([X, np.ones((X.shape[0], 1))], axis=1)
        
        # 进行预测
        y_pred = X.dot(self.w)
        return y_pred

在这个代码中,我们首先导入了NumPy库,然后定义了一个名为LinearRegression的类。这个类包含两个方法:fit和predict,分别用于训练模型和进行预测。

在fit方法中,我们首先添加了偏置项,即一个全为1的列向量,然后计算最优解。最优解可以使用最小二乘法来计算,这里使用了NumPy库提供的线性代数工具np.linalg.inv来计算矩阵的逆。

在predict方法中,我们同样添加了偏置项,然后使用训练好的模型参数进行预测。

需要注意的是,这只是一个简单的示例,实际使用中,我们需要对数据进行预处理、特征工程等操作,以便更好地训练模型。此外,这个模型只适用于简单线性回归,对于多元线性回归需要进行相应的修改。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值