python – “__init __()得到参数’n_splits’的多个值”与sklea
我正进入(状态
此行的错误:
在以下代码中: 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,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,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,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文档中的示例:
我也尝试删除n_splits参数,因为10是默认值:
这会产生相同的错误. 我将代码从python 2.7转换为3.5,从早期版本的sklearn转换为0.18.1,所以我可能错过了一些东西,但我不知道它可能是什么.调用ShuffleSplit的行中的参数似乎也是顺序的:
调用该函数的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:Pythonmachine-learning-masterprojectsboston_housingvisuals.py in ModelLearning(X,y) 21 22 # Create 10 cross-validation sets for training and testing ---> 23 cv = ShuffleSplit(n_splits = 10,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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |