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('C题数据.xlsx',sheet_name=2)
data
x = data[['接收距离(cm)', '热风速度(r/min)', '厚度mm', '孔隙率(%)', '压缩回弹性率(%)', '过滤阻力Pa','透气性 mm/s']]
y = data['过滤效率(%)']
from sklearn.preprocessing import PolynomialFeatures   #StandardScaler

#degree 表示多项式的维度,即^2, interaction_only表示是否仅使用a*b, include_bias表示是否添加一列全部等于1的偏置项
po = PolynomialFeatures(degree=2, interaction_only=False, include_bias=False)
x_poly = po.fit_transform(x)
pd.DataFrame(x_poly).head()
x_train2, x_test2, y_train2, y_test2 = train_test_split(x_poly, y, test_size=0.2, random_state=1)
reg2 = LR().fit(x_train2, y_train2)
yhat2 = reg2.predict(x_test2)
yhat2
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()

# 定义函数来获取y在0到100之间的最大值对应的X矩阵内容
def get_max_y_within_range(x_poly, reg2):
    # 生成0到100之间的预测值
    y_pred = reg2.predict(x_poly)
    y_pred[y_pred < 0] = 0
    y_pred[y_pred > 100] = 100
    
    # 找到最大值对应的索引
    max_index = np.argmax(y_pred)
    
    # 获取最大值对应的X矩阵内容
    x_max = x_poly[max_index]
    
    return y_pred[max_index], x_max

# 调用函数获取y在0到100之间的最大值对应的X矩阵内容
max_y, x_max = get_max_y_within_range(x_poly, reg2)

print("最大值对应的y值:", max_y)
print("最大值对应的X矩阵内容:", x_max)
Python 使用线性回归模型预测过滤效率并找出最大值

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

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