import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.linear_model import Lasso, Ridge, LinearRegression as LR
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import r2_score, explained_variance_score as EVS, mean_squared_error as MSE

# 读取数据
data = pd.read_excel('标准化数据.xlsx', sheet_name=0)

# 定义特征和目标变量
x = data[['接收距离(cm)', '热风速度(r/min)', '厚度mm', '孔隙率(%)', '压缩回弹性率(%)', '透气性 mm/s']]
y = data['新目标']

# 多项式特征扩展
from sklearn.preprocessing import PolynomialFeatures

po = PolynomialFeatures(degree=2, interaction_only=False, include_bias=False)
x_poly = po.fit_transform(x)

# 转换为DataFrame格式
x_poly = pd.DataFrame(x_poly, 
                     columns=['接收距离(cm)', '热风速度(r/min)', '厚度mm', '孔隙率(%)', '压缩回弹性率(%)', '透气性 mm/s', '接收距离(cm)^2', '接收距离(cm)*热风速度(r/min)', '接收距离(cm)*厚度mm', '接收距离(cm)*孔隙率(%)', '接收距离(cm)*压缩回弹性率(%)', '接收距离(cm)*透气性 mm/s', '热风速度(r/min)^2', '热风速度(r/min)*厚度mm', '热风速度(r/min)*孔隙率(%)', '热风速度(r/min)*压缩回弹性率(%)', '热风速度(r/min)*透气性 mm/s', '厚度mm^2', '厚度mm*孔隙率(%)', '厚度mm*压缩回弹性率(%)', '厚度mm*透气性 mm/s', '孔隙率(%)^2', '孔隙率(%)*压缩回弹性率(%)', '孔隙率(%)*透气性 mm/s', '压缩回弹性率(%)^2', '压缩回弹性率(%)*透气性 mm/s', '透气性 mm/s^2'])

# 划分训练集和测试集
x_train2, x_test2, y_train2, y_test2 = train_test_split(x_poly, y, test_size=0.2, random_state=0)

# 创建线性回归模型并训练
reg2 = LR().fit(x_train2, y_train2)

# 预测测试集结果
yhat2 = reg2.predict(x_test2)

# 打印模型系数和截距
print(reg2.coef_)
print(reg2.intercept_)

# 可视化预测结果
t = np.arange(len(x_test2))
plt.plot(t, y_test2, 'r-', linewidth=2, label='Actual')
plt.plot(t, yhat2, 'g-', linewidth=2, label='Predicted')
plt.title('Actual test y & Predicted test y')
plt.legend(loc='upper right')
plt.grid()
plt.show()

# 反标准化代码
from sklearn.preprocessing import StandardScaler

# 创建StandardScaler对象
scaler = StandardScaler()

# 对训练数据进行fit操作
scaler.fit(x)

# 对预测结果进行反标准化操作
yhat2_inverse = scaler.inverse_transform(yhat2.reshape(-1, 1))

# 打印反标准化后的预测结果
print(yhat2_inverse)

原文地址: https://www.cveoy.top/t/topic/fOPX 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录