python 线性回归模型预测国民GDP值

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 3个月
简介: python 线性回归模型预测国民GDP值

使用线性回归模型预测国民GDP

 

数据准备

1. import numpy as np
2. import pandas as pd
3. import matplotlib.pyplot as plt
4. 
5. plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
6. plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
7. 
8. df = pd.read_excel('./tax.xlsx', index_col='年份')
9. df.head(10)
tax GDP
年份
1978 519.28 3645.22
1979 537.82 4062.58
1980 571.70 4545.62
1981 629.89 4889.46
1982 700.02 5330.45
1983 775.59 5985.55
1984 947.35 7243.75
1985 2040.79 9040.74
1986 2090.73 10274.38
1987 2140.36 12050.62

数据处理

1. df.describe()
2. # 对数据进行描述分析

1. plt.figure(figsize=(10.,6))  # 设置图框大小尺寸
2. 
3. plt.scatter(df.iloc[:,1], df.iloc[:,0], c='r', marker='o')
4. 
5. plt.xlabel('国民生产总值')
6. plt.ylabel('税收')
7. plt.title('税收与国民生产总值')
8. 
9. plt.show()

数据建模

1. np.array(df.iloc[:,1]).reshape([-1,1])#GDP
2. np.array(df.iloc[:,0]).reshape([-1,1])#tax
1. # 计算
2. 
3. x = np.array(df.iloc[:, 1]).reshape([-1, 1]) # 国民生产总值
4. y = np.array(df.iloc[:, 0]).reshape([-1,1]) # 税收
5. 
6. b = ((x - x.mean()) * (y - y.mean())).sum() / np.power(x - x.mean(), 2).sum()
7. a = y.mean() - b * x.mean()
8. 
9. print("手工计算的公式的斜率为{} 截距为{}".format(str(b)[:8], str(a)[:8]))

 

1. x = np.array(df.iloc[:, 1]) # 国民生产总值
2. y = np.array(df.iloc[:, 0]) # 税收
3. cols = ['GDP']
4. x = pd.DataFrame(x, columns=cols)
5. x
1. #利用第三方sklearn计算
2. from sklearn.linear_model import LinearRegression
3. 
4. model = LinearRegression()
5. reg = model.fit(x, y)
6. #回归系数 回归截距项
7. [reg.coef_.round(4), reg.intercept_.round(4)]

 

 

绘制拟合曲线

1. #利用sklearn库函数计算拟合度R2
2. from sklearn.metrics import r2_score
3. 
4. y_pred=reg.predict(x)
5. r2=r2_score(y,y_pred).round(6)
6. r2

 

1. #3绘制拟合曲线
2. plt.figure()
3. 
4. x = np.array(df.iloc[:, 1]) # 国民生产总值
5. y = np.array(df.iloc[:, 0]) # 税收
6. 
7. plt.scatter(x, y, label='actual', c='r', marker='o')
8. 
9. plt.plot(x, y_pred)
10. 
11. plt.xlabel('国民生产总值')
12. plt.ylabel('税收')
13. plt.title('税收与国民生产总值')
14. 
15. plt.show()

回归分析是确定预测属性(数值型)与其他变量间相互依赖的定量。关系的最常用的统计学方法。包括线性回归、非线性回归、Logistic回归、岭回归、主成分回归、偏最小二乘回归等模型。

 

相关文章
|
1天前
|
机器学习/深度学习 TensorFlow API
Python深度学习基于Tensorflow(3)Tensorflow 构建模型
Python深度学习基于Tensorflow(3)Tensorflow 构建模型
10 2
|
4天前
|
机器学习/深度学习 自然语言处理 算法
Python遗传算法GA对长短期记忆LSTM深度学习模型超参数调优分析司机数据|附数据代码
Python遗传算法GA对长短期记忆LSTM深度学习模型超参数调优分析司机数据|附数据代码
|
10天前
|
机器学习/深度学习 数据采集 前端开发
【Python机器学习专栏】模型泛化能力与交叉验证
【4月更文挑战第30天】本文探讨了机器学习中模型泛化能力的重要性,它是衡量模型对未知数据预测能力的关键。过拟合和欠拟合影响泛化能力,而交叉验证是评估和提升泛化能力的有效工具。通过K折交叉验证等方法,可以发现并优化模型,如调整参数、选择合适模型、数据预处理、特征选择和集成学习。Python中可利用scikit-learn的cross_val_score函数进行交叉验证。
|
10天前
|
机器学习/深度学习 数据可视化 前端开发
【Python机器学习专栏】机器学习模型评估的实用方法
【4月更文挑战第30天】本文介绍了机器学习模型评估的关键方法,包括评估指标(如准确率、精确率、召回率、F1分数、MSE、RMSE、MAE及ROC曲线)和交叉验证技术(如K折交叉验证、留一交叉验证、自助法)。混淆矩阵提供了一种可视化分类模型性能的方式,而Python的scikit-learn库则方便实现这些评估。选择适合的指标和验证方法能有效优化模型性能。
|
10天前
|
机器学习/深度学习 算法 前端开发
【Python机器学习专栏】机器学习中的模型融合技术
【4月更文挑战第30天】模型融合,即集成学习,通过结合多个模型提升预测性能。常见方法包括:Bagging(如Random Forest)、Boosting(如AdaBoost、XGBoost)和Stacking。Python中可使用`scikit-learn`实现,例如BaggingClassifier示例。模型融合是机器学习中的强大工具,能提高整体性能并适应复杂问题。
|
10天前
|
机器学习/深度学习 Python
【Python 机器学习专栏】模型选择中的交叉验证与网格搜索
【4月更文挑战第30天】交叉验证和网格搜索是机器学习中优化模型的关键技术。交叉验证通过划分数据集进行多次评估,如K折和留一法,确保模型性能的稳定性。网格搜索遍历预定义参数组合,寻找最佳参数设置。两者结合能全面评估模型并避免过拟合。Python中可使用`sklearn`库实现这一过程,但需注意计算成本、过拟合风险及数据适应性。理解并熟练应用这些方法能提升模型性能和泛化能力。
|
10天前
|
机器学习/深度学习 数据可视化 TensorFlow
【Python 机器学习专栏】使用 TensorFlow 构建深度学习模型
【4月更文挑战第30天】本文介绍了如何使用 TensorFlow 构建深度学习模型。TensorFlow 是谷歌的开源深度学习框架,具备强大计算能力和灵活编程接口。构建模型涉及数据准备、模型定义、选择损失函数和优化器、训练、评估及模型保存部署。文中以全连接神经网络为例,展示了从数据预处理到模型训练和评估的完整流程。此外,还提到了 TensorFlow 的自动微分、模型可视化和分布式训练等高级特性。通过本文,读者可掌握 TensorFlow 基本用法,为构建高效深度学习模型打下基础。
|
10天前
|
算法 数据挖掘 Python
Python贝叶斯MCMC:Metropolis-Hastings、Gibbs抽样、分层模型、收敛性评估
Python贝叶斯MCMC:Metropolis-Hastings、Gibbs抽样、分层模型、收敛性评估
|
10天前
|
机器学习/深度学习 算法 数据挖掘
【Python 机器学习专栏】Python 中的线性回归模型详解
【4月更文挑战第30天】本文介绍了Python中的线性回归模型,包括基本原理、实现步骤和应用。线性回归假设因变量与自变量间存在线性关系,通过建立数学模型进行预测。实现过程涉及数据准备、模型构建、参数估计、评估和预测。常用的Python库有Scikit-learn和Statsmodels。线性回归简单易懂,广泛应用,但对异常值敏感且假设线性关系。其扩展形式如多元线性、多项式回归和正则化方法能适应不同场景。理解并运用线性回归有助于数据分析和预测。
|
10天前
|
Python
Python随机波动性SV模型:贝叶斯推断马尔可夫链蒙特卡洛MCMC分析英镑/美元汇率时间序列数据|数据分享
Python随机波动性SV模型:贝叶斯推断马尔可夫链蒙特卡洛MCMC分析英镑/美元汇率时间序列数据|数据分享

热门文章

最新文章