首页 > 解决方案 > partial_dependence() 为 python 广义加法模型得到了一个意外的关键字参数“特征”。我如何解决它?

问题描述

我正在尝试为一些海洋数据建立一个广义的加法模型。我的代码如下:

from pygam import LinearGAM
from pygam import LogisticGAM
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns


pdf = pd.read_csv("phytoplankton-ratio-project.csv")
feature =['year','month','Dinoflagellate','Diatom','sea_water_temp_WOA_clim','nitrate_WOA_clim','phosphate_WOA_clim','silicate_WOA_clim']
df= pd.DataFrame()
df= pdf[feature]
df.head(5)

df.loc[:,'total'] = df['Dinoflagellate'] + df['Diatom'] ##
df.loc[:,'percentdia'] = df['Diatom']/df['total']
df.loc[:,'percentdino'] = df['Dinoflagellate']/df['total']
df = df.drop('total', axis=1)
df = df.dropna()
dat2016 = df[df.year == 2016]
dat2016 = dat2016.drop('year', axis=1)

dat2015 = df[df.year == 2015]
dat2015 = dat2015.drop('year', axis=1)

dat16dia = dat2016.drop('percentdino', axis=1)
dat16dino = dat2016.drop('percentdia', axis=1)

X_train = dat2016.drop(['percentdia', 'percentdino'], axis = 1)
#X_train.to_numpy()

y_traindino = dat2016['percentdino']
y_traindia = dat2016['percentdia']

X_test = dat2015.drop(['percentdia', 'percentdino'], axis = 1)
#X_test.to_numpy()

y_testdino = dat2015['percentdino']
y_testdia = dat2015['percentdia']

#5,7
gam = LinearGAM(n_splines=25).gridsearch(X_train.values, y_traindia.values)
gamdino = LinearGAM(n_splines=25).gridsearch(X_train.values, y_traindino.values)

XX = gam.generate_X_grid(term=0)
fig, axs = plt.subplots(1,6, figsize=(20,4))
titles = feature[1:]

for i, ax in enumerate(axs):
    pdep, confi = gam.partial_dependence(XX, feature=i, width=.95)
    ax.plot(XX[:, i], pdep)
    ax.plot(XX[:, i], *confi, c='r', ls='--')
    ax.set_title(titles[i])

但是,当我运行它时,我收到以下错误:

File "C:\Users\A\Documents\PythonRepository\StatsProject\Part2gam.py", line 69, in <module>
    pdep, confi = gam.partial_dependence(XX, feature=i, width=.95)

TypeError: partial_dependence() got an unexpected keyword argument 'feature'

有人知道如何解决这个问题吗?

标签: pythonmachine-learninggampygam

解决方案


我认为您没有使用正确的参数,因为错误告诉您您传递了一个意外的参数。我猜你想使用 feature=i 你应该使用 term=i 。

如果您在 文档中看到此处,您可以看到 partial_dependence 作为输入的参数列表。

pygam partial_dependence 文档

这是一个关于他们如何使用它的示例Pygam 回归文档


推荐阅读