You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从PKL格式模型文件中获取输入数组形状,避免手动硬编码特征维度

解决方案

你使用scikit-learn训练的线性回归模型自带输入特征维度属性,直接读取即可替换硬编码的数值:

  • 训练完成的LinearRegression模型会生成n_features_in_属性,存储的就是训练时X_train的特征列数,也就是你需要的输入数组长度。

修改后的Flask代码

from flask import Flask, request, render_template
import numpy as np
import joblib

app = Flask(__name__)
model = joblib.load('MC_Model.pkl')
# 新增:直接从模型读取输入特征维度,不需要手动修改数值
input_feature_num = model.n_features_in_

@app.route('/', methods=["GET", "POST"])
def home():
    # default values for `GET`
    cluster = None
    material = None
    # 替换硬编码的21为动态获取的特征数
    MC_features = [np.zeros((input_feature_num,), dtype=int)]
    MC_text = 'Usage Amount: ???'
    
    if request.method == 'POST':
        cluster = request.form.get('cluster')
        print('cluster:', cluster)
        
        material = request.form.get('material')
        print('material:', material)
                  
        if cluster:
            index = int(cluster)
            MC_features[0][index] = 1.0

        if material:
            index = int(material)
            MC_features[0][index] = 1.0

        print(MC_features)
        
        MC_prediction = model.predict(MC_features)
        #prediction = [np.random.randint(0, 100)]
        
        MC_text = 'Usage Amount: {}'.format(MC_prediction[0])
                
    return render_template('BOM.html',MC_prediction=MC_text, MC_features=MC_features[0], cluster=cluster, material=material)

补充说明

如果后续你换用其他scikit-learn模型(比如决策树、随机森林等),这个方法同样适用,所有scikit-learn的监督学习模型训练完成后都会携带n_features_in_属性。

内容的提问来源于stack exchange,提问作者Yanjie Koo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 08:15:02