<p>如果切换到<code>lightgbm</code>的<code>sklearn</code>API,则错误消息将消失。这是<a href="https://pdpbox.readthedocs.io/en/latest/pdp_isolate.html" rel="nofollow noreferrer">docs</a>中建议的正确API:</p>
<blockquote>
<p>model: a fitted <strong><em>sklearn</em></strong> model</p>
</blockquote>
<p><strong>证明</strong></p>
<pre><code>import lightgbm as lgb
import seaborn as sns
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from pdpbox import pdp, get_dataset, info_plots
#load some data
df = sns.load_dataset("iris")
X = df.iloc[:,:4]
y , mapping = pd.factorize(df["species"])
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.80)
lgd_train = lgb.Dataset(X_train, label=y_train)
params={ "objective": "multiclass",
"num_class": 3,}
clf = lgb.LGBMClassifier() # < Choose sklearn API !!!
clf.fit(X_train, y_train)
pdp_dist = pdp.pdp_isolate(model=clf, dataset=X_train
, model_features=X_train.columns
, feature='petal_width')
pdp.pdp_plot(pdp_dist, 'petal_width');
</code></pre>
<p><a href="https://i.stack.imgur.com/ULIrx.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/ULIrx.png" alt="enter image description here"/></a></p>
<p>就您的另一个错误而言,如果从<code>conda-forge</code>安装了<code>lightgbm v. 2.3.1</code>,我无法在我的计算机上重现它</p>
<p>因此,我相信你有两个行动方案:</p>
<ul>
<li>安装没有此类问题的lightgbm版本</li>
<li>或替换列名中的所有非字母数字字符:</li>
</ul>
<pre><code>X_train.columns = ["".join (c if c.isalnum() else "_" for c in str(x)) for x in X_train.columns]
</code></pre>
<p>如建议<a href="https://www.kaggle.com/c/data-science-bowl-2019/discussion/120344" rel="nofollow noreferrer">here</a></p>