错误:__init__() 有一个意外的关键字参数“n_splits”

Posted

技术标签:

【中文标题】错误:__init__() 有一个意外的关键字参数“n_splits”【英文标题】:Error: __init__() got an unexpected keyword argument 'n_splits' 【发布时间】:2019-01-05 13:43:47 【问题描述】:

我将为加利福尼亚住房数据集(来源:https://www.dcc.fc.up.pt/~ltorgo/Regression/cal_housing.html)执行 ShuffleSplit() 方法以拟合 SGD 回归。 但是,应用方法时会发生“n_splits”错误。 代码如下:

from sklearn import cross_validation, grid_search, linear_model, metrics  
import numpy as np  
import pandas as pd


from sklearn.preprocessing import scale
from sklearn.cross_validation import ShuffleSplit


housing_data = pd.read_csv('cal_housing.csv', header = 0, sep = ',')
housing_data.fillna(housing_data.mean(), inplace=True)
df=pd.get_dummies(housing_data)


y_target = housing_data['median_house_value'].values
x_features = housing_data.drop(['median_house_value'], axis = 1)

from sklearn.cross_validation import train_test_split
from sklearn import model_selection

train_x, test_x, train_y, test_y = model_selection.train_test_split(x_features, y_target, test_size=0.2, random_state=4)
reg = linear_model.SGDRegressor(random_state=0)
cv = ShuffleSplit(n_splits = 10, test_size = 0.2, random_state = 0)

错误如下:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-22-8f8760b04f8c> in <module>()
----> 1 cv = ShuffleSplit(n_splits = 10, test_size = 0.2, random_state = 0)

TypeError: __init__() got an unexpected keyword argument 'n_splits'

我用 0.18 版本更新了 scikit-learn。

Anaconda 版本:4.5.8

您能就这个问题提出建议吗?

【问题讨论】:

好吧,ShuffleSplit 接受 n_splits 参数吗? 使用n=10 而不是n_splits 【参考方案1】:

您正在混淆两个不同的模块。

在 0.18 之前,cross_validation 用于 ShuffleSplit。其中,n_splits 不存在。 n 用于定义拆分次数

但由于您现在已更新到 0.18,cross_validationgrid_search 已被弃用,取而代之的是 model_selection。

这在docs here中有提及,这些模块将从0.20版本中移除

所以不要这样:

from sklearn.cross_validation import ShuffleSplit
from sklearn.cross_validation import train_test_split

这样做:

from sklearn.model_selection import ShuffleSplit
fro

m sklearn.model_selection 导入 train_test_split

那么你可以使用n_splits

cv = ShuffleSplit(n_splits = 10, test_size = 0.2, random_state = 0)

【讨论】:

@ArtyomMakarov 如果这个答案有帮助,请考虑接受它。

以上是关于错误:__init__() 有一个意外的关键字参数“n_splits”的主要内容,如果未能解决你的问题,请参考以下文章

Django Channels __init__() 有一个意外的关键字参数“范围”

Tensorflow 错误:TypeError:__init__() 得到了一个意外的关键字参数“dct_method”[关闭]

如何使用 keras 加载保存的模型? (错误: : TypeError: __init__() 得到了一个意外的关键字参数“可训练”)

__init__() 得到了一个意外的关键字参数“attrs”

__init__() 在 Python 2 中使用 argparse 得到了一个意外的关键字参数“必需”[重复]

Django __init__() 得到了一个意外的关键字参数“用户”