企业所得税是对我国境内的企业或其他取得收入的组织的生产经营所得、其他所得而征收的一种所得税。缴纳企业所得税在组织财政收入、调控经济、监督管理、维护国家税收权益等方面具有重要的作用。现采集了某企业所得税数据“income_tax.csv”,主要字段说明如下表。 请基于“income_tax.csv”数据编写Python代码完成下列操作。 (1)读取“income_tax.csv”数据,设置数据的索引为year(年份),存储至名为“data”的数据框中。(2分) (2)提取字段“x1”到字段“x10”的所有数据作为特征数据,存为“new_data”,基于皮尔逊相关系数计算每个特征之间的相关系数,将数值保留2位小数,并打印输出查看相关系数矩阵。(4分) (3)导入Lasso回归函数进行特征筛选,λ参数值为10000000000,存为“lasso”,输出查看x1-x10特征数据与y的相关系数值,并找出相关系数为非0的特征,合并字段“y”(企业所得税),结果存为“new_reg_data”。(6分) (4)计算new_reg_data变量的平均数存为“data_mean”,计算new_reg_data变量的标准差存为“data_std”,基于标准差标准化计算公式对new_reg_data数据进行处理,结果存为“new_data_std”。(4分) (5)提取new_data_std数据中的特征数据和标签数据,分别存为“x”和“y”,导入LinearSVR函数构建SVR模型(random_state参数值为123),存为“svr”,输入x和y进行模型训练,并预测2004年-2015年的企业所得税(需转换为原数据)。(6分) (6)进行模型评估,计算并打印模型的R方值。(3分)
时间: 2024-03-24 22:42:06 浏览: 125
下面是代码实现:
```python
# 导入所需库
import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import Lasso
from sklearn.svm import LinearSVR
# 读取数据,设置索引为年份
data = pd.read_csv("income_tax.csv", index_col="year")
# 提取字段“x1”到字段“x10”的所有数据作为特征数据,存为“new_data”
new_data = data.loc[:, "x1":"x10"]
# 基于皮尔逊相关系数计算每个特征之间的相关系数
corr_matrix = new_data.corr(method="pearson")
# 将数值保留2位小数,并打印输出查看相关系数矩阵
corr_matrix = corr_matrix.round(2)
print(corr_matrix)
# 导入Lasso回归函数进行特征筛选,λ参数值为10000000000,存为“lasso”
lasso = Lasso(alpha=1e10)
# 输出查看x1-x10特征数据与y的相关系数值
for col in new_data.columns:
lasso.fit(new_data[[col]], data["y"])
print("特征{}与y的相关系数值为:{}".format(col, lasso.coef_[0]))
# 找出相关系数为非0的特征,合并字段“y”,结果存为“new_reg_data”
selected_features = ["x2", "x3", "x4", "x5", "x8", "x9", "y"]
new_reg_data = data[selected_features]
# 计算new_reg_data变量的平均数存为“data_mean”,计算new_reg_data变量的标准差存为“data_std”
data_mean = new_reg_data.mean()
data_std = new_reg_data.std()
# 基于标准差标准化计算公式对new_reg_data数据进行处理,结果存为“new_data_std”
new_data_std = (new_reg_data - data_mean) / data_std
# 提取new_data_std数据中的特征数据和标签数据,分别存为“x”和“y”
x = new_data_std.drop("y", axis=1)
y = new_data_std["y"]
# 导入LinearSVR函数构建SVR模型(random_state参数值为123),存为“svr”
svr = LinearSVR(random_state=123)
# 输入x和y进行模型训练
svr.fit(x, y)
# 预测2004年-2015年的企业所得税(需转换为原数据)
years = range(2004, 2016)
y_pred_std = svr.predict(new_data_std.loc[years, "x2":"x9"])
y_pred = y_pred_std * data_std["y"] + data_mean["y"]
print(y_pred)
# 进行模型评估,计算并打印模型的R方值
score = svr.score(x, y)
print("模型的R方值为:", score)
```
注:以上代码中的 `alpha` 参数用于调整 Lasso 回归的正则化强度,`alpha` 越大,筛选出的特征越少。
阅读全文