feature = ['x1', 'x3', 'x4', 'x5', 'x6', 'x7', 'x8', 'x13'] data_train = data.loc[range(1994,2014)].copy()#取2014年前的数据建模 print(data_train.shape) data_mean = data_train.mean() data_std = data_train.std() data_train = (data_train - data_mean)/data_std #数据标准化 x_train = data_train[feature].values #特征数据 y_train = data_train['y'].values #标签数据 x = ((data[feature] - data_mean[feature]) / data_std[feature]).values #标准差标准化 预测,并还原结果。 linearsvr = LinearSVR().fit(x_train,y_train) #调用LinearSVR()函数 data[u'y_pred'] = linearsvr.predict(x) * data_std['y'] + data_mean['y'] # y ## SVR预测后保存的结果 outputfile = '../tmp/new_reg_data_GM11_revenue.xls' data.to_excel(outputfile) print('真实值与预测值分别为:',data[['y','y_pred']]) ax1=plt.figure(figsize=(5,5)).add_subplot(2,1,1) print('预测图为:') data[['y','y_pred']].plot(subplots = True,style=['b-o','r-*'],xticks=data.index[::2]) ##subplots = True两表分开 plt.show()
时间: 2023-12-21 09:04:25 浏览: 152
这段代码是一个简单的线性支持向量回归(LinearSVR)模型对财政收入数据进行训练和预测的过程。具体来说,它的步骤如下:
1. 定义了一个包含8个特征变量和1个目标变量的特征列表feature。这里的特征变量包括x1、x3、x4、x5、x6、x7、x8、x13,而目标变量为y。
2. 从原始数据中选取了1994年到2013年的数据作为训练集,并进行了数据标准化处理,使得数据的均值为0,标准差为1。其中,x_train为标准化后的特征数据,y_train为标准化后的标签数据。
3. 使用线性支持向量回归模型(LinearSVR)对标准化后的训练数据进行训练,得到了模型linearsvr。
4. 使用训练好的模型对整个数据集(包括训练集和测试集)进行预测,得到了预测结果y_pred。
5. 将预测结果y_pred还原为原始数据的单位,并将预测结果和真实值保存到Excel文件中。
6. 绘制了真实值和预测值的折线图,并输出了预测图。
需要注意的是,这段代码并没有进行模型的评估和调优,因此其预测性能可能不够优秀。如果需要更好的预测结果,可以考虑使用更复杂的模型或者进行参数调优等操作。
相关问题
X1_new = X1_pca X2_new = X2_pca X3_new = X3_pca X4_new = X4_pca X5_new = X5_pca X6_new = X6_pca X7_new = X7_pca X8_new = X8_pca X9_new = X9_pca X10_new = X10_pca X11_new = X11_pca X12_new = X12_pca X13_new = X13_pca X14_new = X14_pca X15_new = X15_pca如何将他们放在一起
可以使用Pandas库将这些新变量放在一起,生成一个DataFrame对象。以下是一个示例代码:
```python
import pandas as pd
import numpy as np
# 假设有15个新变量,将它们保存到一个Numpy数组中
X_new = np.random.rand(100, 15) # 生成随机数据
# 将15个新变量保存到一个DataFrame对象中
df_new = pd.DataFrame({'X1_new': X_new[:, 0], 'X2_new': X_new[:, 1], 'X3_new': X_new[:, 2],
'X4_new': X_new[:, 3], 'X5_new': X_new[:, 4], 'X6_new': X_new[:, 5],
'X7_new': X_new[:, 6], 'X8_new': X_new[:, 7], 'X9_new': X_new[:, 8],
'X10_new': X_new[:, 9], 'X11_new': X_new[:, 10], 'X12_new': X_new[:, 11],
'X13_new': X_new[:, 12], 'X14_new': X_new[:, 13], 'X15_new': X_new[:, 14]})
# 查看新的DataFrame对象
print(df_new.head())
```
上述代码中,我们首先生成了15个新变量的随机数据,并将它们保存到一个Numpy数组中。然后,使用`pd.DataFrame()`函数将这些新变量放在一起,生成一个DataFrame对象`df_new`。在`pd.DataFrame()`函数中,我们使用字典的方式将15个新变量命名,并将它们对应的数据分别取出来,放在一起组成一个新的DataFrame对象。
需要注意的是,在使用多元线性回归模型时,自变量需要进行标准化或归一化处理,以确保所有自变量的取值范围相同。可以使用scikit-learn库中的`StandardScaler`或`MinMaxScaler`进行标准化或归一化处理。
from sklearn.svm import LinearSVR import matplotlib.pyplot as plt data = pd.read_excel('../tmp/new_reg_data_GM11.xls') # 读取数据 data = data.set_index('Unnamed: 0') data = data.drop(index ='模型精度') feature = ['x1', 'x3', 'x4', 'x5', 'x6', 'x7', 'x8', 'x13'] #特征所在列 data_train = data.loc[range(1994, 2014)].copy() #取2014年前的数据建模 data_mean = data_train.mean() data_std = data_train.std() data_train = (data_train - data_mean) / data_std #数据标准化 x_train = data_train[feature].as_matrix() #特征数据 y_train = data_train['y'].as_matrix() #标签数据 linearsvr = LinearSVR(random_state=123) #调用LinearSVR()函数 linearsvr.fit(x_train, y_train) #预测2014 年和2015 年的财政收入,并还原结果 x = ((data[feature] - data_mean[feature]) / data std[feature]).as_matrix() data[u'y_pred'] = linearsvr.predict (x) * data_std['y'] + data_mean['y'] outputfile ='../tmp/new_reg_data_GM11_revenue.xls' data.to_excel(outputfile) print('真实值与预测值分别为: \n', data[['y', 'y_pred']]) print('预测图为: ',data[['y','y_pred']].plot(style = ['b-o','r-*'])) #画出预测结果图 plt.xlabel('年份') plt.xticks(range(1994,2015,2))
这段代码是使用线性支持向量回归(LinearSVR)进行财政收入预测的示例。首先,代码导入了所需的库,包括sklearn.svm中的LinearSVR和matplotlib.pyplot。然后,通过pd.read_excel方法读取了名为'../tmp/new_reg_data_GM11.xls'的Excel文件,并将数据设置为以'Unnamed: 0'列为索引。接下来,选择了特定的特征列,并将数据划分为训练集和测试集。然后,对训练集进行了数据标准化操作,并将特征数据和标签数据分别保存在x_train和y_train中。接着,创建了一个LinearSVR对象,并使用训练数据进行拟合。然后,对2014年和2015年的财政收入进行预测,并将结果还原至原始数据范围内。最后,将预测结果保存至Excel文件'../tmp/new_reg_data_GM11_revenue.xls',并打印出真实值和预测值。同时,代码还画出了真实值和预测值的图表,并设置了横坐标的刻度。
阅读全文