2.4回归(regression)

本文介绍了Spark.ml中的加速失效时间(AFT)模型,这是一种用于生存分析的参数回归模型。AFT模型描述了生存时间对数的模型,相比比例风险模型,更适合并行化计算。模型中,协变量的效应通过θ表示,模型的解释是θ=2意味着事件发生速度是未暴露个体的两倍。该模型在处理生存时间数据时,尤其是存在右删失观察的情况下,提供了直观的解释。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2.4 回归(regression)

2.4.1 @生存分析(AFT Survival Regression)

在Spark.ml中,实现了加速失效时间(AFT(Accelerate Failure Time))模型,这是一个用于检查数据的参数生存回归模型。它描述了生存时间对数的模型,因此它通常被称为生存分析的对数线性模型。不同于为相同目的设计的比例风险模型,AFT模型更容易并行化,因为买个实例独立地贡献于目标函数。

模型规范(Wikipedia):

在通用性方面,加速失效时间模型可以指定为:

其中θ表示协变量的联合效应,通常。(用负号指定回归系数,意味着高的协变量值增加了生存时间,但这只是一个符号标记;如果没有负号,就会增加风险。

这满足了如果概率密度函数是然后,对于这个生存函数

### Python 实现线性回归算法 以下是通过两种方式实现线性回归的代码示例:一种是手动编写核心逻辑,另一种是利用 `scikit-learn` 库中的封装方法。 #### 手动实现线性回归 以下是一个基于 NumPy 的单变量简单线性回归的手动实现: ```python import numpy as np import matplotlib.pyplot as plt def fit_linear_regression(X, Y): """ 计算线性回归的最佳拟合直线 y = b0 + b1*x。 :param X: 自变量数组 :param Y: 因变量数组 :return: 截距(b0) 和斜率(b1) """ X_avg = np.mean(X) Y_avg = np.mean(Y) numerator = sum((X - X_avg) * (Y - Y_avg)) denominator = sum((X - X_avg)**2) b1 = numerator / denominator # 斜率 b0 = Y_avg - b1 * X_avg # 截距 return b0, b1 # 数据集 X = np.array([1.5, 0.8, 2.6, 1.0, 0.6, 2.8, 1.2, 0.9, 0.4, 1.3, 1.2, 2.0, 1.6, 1.8, 2.2]) Y = np.array([3.1, 1.9, 4.2, 2.3, 1.6, 4.9, 2.8, 2.1, 1.4, 2.4, 2.4, 3.8, 3.0, 3.4, 4.0]) # 调用函数并获取结果 b0, b1 = fit_linear_regression(X, Y) print(f'截距 (b0): {b0}') print(f'斜率 (b1): {b1}') # 绘制图像 plt.scatter(X, Y, color='blue', label="实际数据点") # 散点图 plt.plot(X, b0 + b1*X, color='red', linewidth=2, label=f'y={round(b0, 2)}+{round(b1, 2)}*x') # 拟合直线 plt.xlabel("自变量 X") plt.ylabel("因变量 Y") plt.legend() plt.title("手工实现的线性回归") plt.show() ``` 此代码实现了简单的单变量线性回归,并绘制了散点图以及最佳拟合直线[^3]。 --- #### 使用 scikit-learn 实现线性回归 如果需要处理更复杂的场景或多变量情况,可以借助 `scikit-learn` 提供的功能来快速构建模型: ```python from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error, r2_score import numpy as np import pandas as pd # 构造数据集 data = { 'X': [1.5, 0.8, 2.6, 1.0, 0.6, 2.8, 1.2, 0.9, 0.4, 1.3, 1.2, 2.0, 1.6, 1.8, 2.2], 'Y': [3.1, 1.9, 4.2, 2.3, 1.6, 4.9, 2.8, 2.1, 1.4, 2.4, 2.4, 3.8, 3.0, 3.4, 4.0] } df = pd.DataFrame(data) # 划分训练集和测试集 X_train, X_test, Y_train, Y_test = train_test_split(df[['X']], df['Y'], test_size=0.2, random_state=42) # 创建线性回归模型实例 model = LinearRegression() # 训练模型 model.fit(X_train, Y_train) # 输出模型参数 print(f'截距 (b0): {model.intercept_}') # 截距 print(f'系数 (b1): {model.coef_[0]}') # 斜率 # 预测 Y_pred = model.predict(X_test) # 性能评估 mse = mean_squared_error(Y_test, Y_pred) r2 = r2_score(Y_test, Y_pred) print(f'MSE: {mse}, R² Score: {r2}') ``` 这段代码展示了如何使用 `LinearRegression` 类完成建模过程,并提供了均方误差(MSE)和决定系数 \(R^2\) 来衡量模型性能[^1]。 --- #### 多元线性回归扩展 对于多个特征的情况,只需调整输入矩阵即可。例如: ```python from sklearn.datasets import make_regression from sklearn.linear_model import LinearRegression # 生成模拟数据集 X, Y = make_regression(n_samples=100, n_features=3, noise=0.1, random_state=42) # 初始化模型 regressor = LinearRegression() # 训练模型 regressor.fit(X, Y) # 查看权重和偏置项 print(f'系数 (w): {regressor.coef_}') print(f'截距 (b): {regressor.intercept_}') ``` 这里创建了一个具有三个特征的数据集,并应用多元线性回归进行了分析[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值