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

安装multipolyfit库后运行代码出现ModuleNotFoundError: No module named 'core'错误的技术求助

解决multipolyfit导入错误及多变量多项式拟合问题

嘿,我来帮你搞定这个问题!你遇到的ModuleNotFoundError: No module named 'core'其实是因为PyPI上的官方multipolyfit包已经很久没维护了,内部模块结构出了问题。下面一步步给你解决:

一、先修复库的安装问题

先把有问题的旧版本卸载,然后装一个维护良好的分支版本:

pip uninstall -y multipolyfit
pip install git+https://github.com/mdboom/multipolyfit.git

这个版本已经修复了导入路径的bug,装完就能正常用了。

二、修正代码里的小问题

你的代码还有几个小坑得填上才能跑起来:

  • 你导入了numpy为np,但代码里却写了numpy.array,得统一改成np.array;
  • deg变量没定义,得指定拟合的多项式阶数,比如deg=3;
  • multipolyfit返回的系数不能直接用np.polyval计算预测值,得用库自带的mk_model函数生成预测函数;
  • 单变量拟合的时候,传入的自变量不需要堆叠,直接传一维数组就行(如果是多变量才需要堆叠成每行一个变量的二维数组)。

修正后的完整可运行代码:

import os
import csv
import pandas as pd
print('\n'*2)
import re
import matplotlib
import multipolyfit as mpf
from matplotlib.figure import Figure
from matplotlib import style
import numpy as np
import math
import matplotlib.pyplot as plt
from matplotlib.legend_handler import HandlerLine2D
from scipy.stats import linregress

x = [190,195,200,205,210,215,220,225,230,235,240,245,250,255,260,265,270,275,280,285,290]
av_50 = [5.045, 5.05, 5.115, 5.23, 5.355, 5.42, 5.59, 5.77, 5.855, 5.8, 5.745, 5.725, 5.795, 5.835, 5.81, 5.73, 5.675, 5.65, 5.63, 5.555, 5.405]

def min_max_values(num_list):
    results_list = sorted(num_list)
    return results_list[0], results_list[-1]

min_x, max_x = min_max_values(x)

# Plotting setup
plt.axis([min_x - 5, max_x + 5, 0, 8])
x_np = np.array(x)
y_np = np.array(av_50)
plt.plot(x_np, y_np, 'kx', label='Original Data')

# 定义多项式阶数
deg = 3
# 单变量多项式拟合
coeffs = mpf.multipolyfit(x_np, y_np, deg)
# 生成用于预测的函数
predict_func = mpf.mk_model(coeffs)
# 生成平滑的x序列用于绘制拟合曲线
x2 = np.arange(min(x_np)-1, max(x_np)+1, 0.01)
# 计算拟合值:单变量需要转成(1, N)的二维数组
y2 = predict_func(x2.reshape(1, -1))
plt.plot(x2, y2, label=f"Polynomial Fit (deg={deg})")

plt.legend()
plt.show()

三、如果是多变量拟合的情况

要是你真的需要做多变量(比如两个自变量x1和x2)的拟合,代码可以这么写:

# 示例:两个自变量的拟合
x1 = np.array([1,2,3,4,5])
x2 = np.array([2,3,4,5,6])
y = np.array([3,5,7,9,11])

# 把自变量堆叠成二维数组:每行对应一个变量
stacked_x = np.array([x1, x2])
deg = 2
coeffs = mpf.multipolyfit(stacked_x, y, deg)
predict_func = mpf.mk_model(coeffs)

# 生成新的自变量序列并预测
x1_new = np.arange(1,6,0.1)
x2_new = np.arange(2,7,0.1)
y_pred = predict_func(np.array([x1_new, x2_new]))

这样就能顺利完成多变量多项式拟合啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 12:42:33