gpt4 book ai didi

python - sklearn ShuffleSplit "__init__() got multiple values for argument ' n_splits '"错误

转载 作者:太空宇宙 更新时间:2023-11-03 11:45:13 25 4
gpt4 key购买 nike

我得到了

init() got multiple values for argument 'n_splits'

这一行的错误:

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

在下面的代码中:

import matplotlib.pyplot as pl
import numpy as np
import sklearn.model_selection as curves
from sklearn.tree import DecisionTreeRegressor
from sklearn.model_selection import ShuffleSplit, train_test_split, learning_curve

def ModelLearning(X, y):
""" Calculates the performance of several models with varying sizes of training data.
The learning and testing scores for each model are then plotted. """

# Create 10 cross-validation sets for training and testing
cv = ShuffleSplit(n_splits = 10, test_size = 0.2, random_state = 0)

# Generate the training set sizes increasing by 50
train_sizes = np.rint(np.linspace(1, X.shape[0]*0.8 - 1, 9)).astype(int)

# Create the figure window
fig = pl.figure(figsize=(10,7))

# Create three different models based on max_depth
for k, depth in enumerate([1,3,6,10]):

# Create a Decision tree regressor at max_depth = depth
regressor = DecisionTreeRegressor(max_depth = depth)

# Calculate the training and testing scores
sizes, train_scores, test_scores = learning_curve(regressor, X, y, \
train_sizes = train_sizes, cv = cv, scoring = 'r2')

# Find the mean and standard deviation for smoothing
train_std = np.std(train_scores, axis = 1)
train_mean = np.mean(train_scores, axis = 1)
test_std = np.std(test_scores, axis = 1)
test_mean = np.mean(test_scores, axis = 1)

# Subplot the learning curve
ax = fig.add_subplot(2, 2, k+1)
ax.plot(sizes, train_mean, 'o-', color = 'r', label = 'Training Score')
ax.plot(sizes, test_mean, 'o-', color = 'g', label = 'Testing Score')
ax.fill_between(sizes, train_mean - train_std, \
train_mean + train_std, alpha = 0.15, color = 'r')
ax.fill_between(sizes, test_mean - test_std, \
test_mean + test_std, alpha = 0.15, color = 'g')

# Labels
ax.set_title('max_depth = %s'%(depth))
ax.set_xlabel('Number of Training Points')
ax.set_ylabel('Score')
ax.set_xlim([0, X.shape[0]*0.8])
ax.set_ylim([-0.05, 1.05])

# Visual aesthetics
ax.legend(bbox_to_anchor=(1.05, 2.05), loc='lower left', borderaxespad = 0.)
fig.suptitle('Decision Tree Regressor Learning Performances', fontsize = 16, y = 1.03)
fig.tight_layout()
fig.show()

我知道这个错误通常表示参数顺序不正确,但这应该是正确的。这是 sklearn 文档中的示例:

rs = ShuffleSplit(n_splits=3, test_size=.25, random_state=0)

我还尝试删除 n_splits 参数,因为无论如何 10 都是默认值:

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

这会产生相同的错误。

我正在将代码从 python 2.7 转换为 3.5,并将 sklearn 的早期版本转换为 0.18.1,所以我可能遗漏了一些东西,但我不知道它可能是什么。调用 ShuffleSplit 的行中的参数似乎也是有序的:

sizes, train_scores, test_scores = learning_curve(regressor, X, y, \ train_sizes = train_sizes, cv = cv, scoring = 'r2')

调用该函数的 X 和 y 与 python 2.7 一起使用,因此它们也应该没问题。

回溯:

TypeError                                 Traceback (most recent call last)
<ipython-input-33-191abc15bbd7> in <module>()
1 # Produce learning curves for varying training set sizes and maximum depths
----> 2 vs.ModelLearning(features, prices)

E:\Python\machine-learning-master\projects\boston_housing\visuals.py in ModelLearning(X, y)
21
22 # Create 10 cross-validation sets for training and testing
---> 23 cv = ShuffleSplit(n_splits = 10, test_size = 0.2, random_state = 0)
24
25 # Generate the training set sizes increasing by 50

TypeError: __init__() got multiple values for argument 'n_splits'

最佳答案

代替:

from sklearn.model_selection import ShuffleSplit

使用:

from sklearn.cross_validation import ShuffleSplit

StratifiedShuffleSplit 会出现同样的错误,再次使用cross_validation 而不是 model_selection

关于python - sklearn ShuffleSplit "__init__() got multiple values for argument ' n_splits '"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41657551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com