您的位置:

Python回归分析 Comprehensive Guide

Python回归分析 Comprehensive Guide

更新:

一、回归分析简介

回归分析是一种被广泛应用的统计分析方法,用于分析一个因变量随着一个或多个自变量的变化而变化的关系。回归分析可以用来预测未来趋势或控制因素,也可以用来揭示变量之间的相关性或造成因素。

Python的回归分析功能丰富,可以应用于不同类型的数据和不同的回归模型。以下是Python中常用的回归分析库。

import numpy as np
import pandas as pd
import statsmodels.api as sm
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import Ridge
from sklearn.linear_model import Lasso
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import RandomForestRegressor
from xgboost import XGBRegressor
from lightgbm import LGBMRegressor

二、简单线性回归

简单线性回归是指只有一个自变量的回归模型,可以用来分析变量之间的线性关系。在Python中可以使用numpy和statsmodels库实现简单线性回归。

实例1:使用numpy实现简单线性回归并绘制拟合曲线

x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 3, 4, 5, 6])

# 不带截距的简单线性回归
slope, _ = np.polyfit(x, y, 1)
y_pred = slope * x

import matplotlib.pyplot as plt
plt.scatter(x, y, color='b')
plt.plot(x, y_pred, color='k')
plt.show()

实例2:使用statsmodels库实现简单线性回归并分析结果

import statsmodels.api as sm

x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 3, 4, 5, 6])
x = sm.add_constant(x)

# 普通最小二乘法
model_OLS = sm.OLS(y, x).fit()
print(model_OLS.summary())

三、多元线性回归

多元线性回归是指有多个自变量的回归模型,可以用来分析多个变量之间的线性关系。在Python中可以使用statsmodels库实现多元线性回归。

实例3:使用statsmodels库实现多元线性回归并分析结果

x1 = np.array([1, 2, 3, 4, 5])
x2 = np.array([3, 4, 5, 6, 7])
y = np.array([10, 20, 30, 40, 50])
x = np.column_stack((x1, x2))
x = sm.add_constant(x)

model_OLS = sm.OLS(y, x).fit()
print(model_OLS.summary())

四、岭回归

岭回归是一种用于处理多重共线性的线性回归方法。它通过增加惩罚项来减小参数的绝对值,从而缩小参数之间的差异。在Python中可以使用sklearn库实现岭回归。

实例4:使用sklearn库实现岭回归并分析结果

x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 3, 4, 5, 6])
x = x.reshape(-1, 1)

ridge = Ridge(alpha=0.1)
ridge.fit(x, y)
print('系数:', ridge.coef_)
print('截距:', ridge.intercept_)

五、Lasso回归

Lasso回归也是一种用于处理多重共线性的线性回归方法。它通过增加惩罚项来减小参数的绝对值,从而将某些参数变为0,实现模型的特征选择。在Python中可以使用sklearn库实现Lasso回归。

实例5:使用sklearn库实现Lasso回归并分析结果

x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 3, 4, 5, 6])
x = x.reshape(-1, 1)

lasso = Lasso(alpha=0.1)
lasso.fit(x, y)
print('系数:', lasso.coef_)
print('截距:', lasso.intercept_)

六、决策树回归

决策树回归是一种基于决策树的回归方法。它将样本空间划分成若干个小区域,并在每个小区域内建立一个回归模型。在Python中可以使用sklearn库实现决策树回归。

实例6:使用sklearn库实现决策树回归并分析结果

x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 3, 4, 5, 6])
x = x.reshape(-1, 1)

dtreg = DecisionTreeRegressor(max_depth=5)
dtreg.fit(x, y)
print('R方:', dtreg.score(x, y))

from sklearn.tree import export_graphviz
import graphviz

dot_data = export_graphviz(dtreg, feature_names=['x'], out_file=None, filled=True, rounded=True)
graph = graphviz.Source(dot_data)
graph.render('dtreg', view=True)

七、随机森林回归

随机森林回归是一种基于随机森林的回归方法。它通过集成多个决策树模型来提高预测效果,同时也能够对特征进行选择和处理。在Python中可以使用sklearn库实现随机森林回归。

实例7:使用sklearn库实现随机森林回归并分析结果

x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 3, 4, 5, 6])
x = x.reshape(-1, 1)

rfreg = RandomForestRegressor(n_estimators=100, max_depth=5)
rfreg.fit(x, y)
print('R方:', rfreg.score(x, y))

八、XGBoost回归

XGBoost回归是一种基于Gradient Boosting的回归方法。它将多个回归树模型集成起来,能够有效地提高预测精度。在Python中可以使用xgboost库实现XGBoost回归。

实例8:使用xgboost库实现XGBoost回归并分析结果

x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 3, 4, 5, 6])
xgreg = XGBRegressor(n_estimators=100, max_depth=5)
xgreg.fit(x, y)
print('R方:', xgreg.score(x, y))

九、LightGBM回归

LightGBM回归是一种基于Gradient Boosting的回归方法,因其高效与精度而越来越受欢迎。在Python中可以使用lightgbm库实现LightGBM回归。

实例9:使用lightgbm库实现LightGBM回归并分析结果

x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 3, 4, 5, 6])

lgbreg = LGBMRegressor(n_estimators=100, max_depth=5)
lgbreg.fit(x, y)
print('R方:', lgbreg.score(x, y))