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