質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

解決済

1回答

3188閲覧

TypeError: Cannot clone object のエラー対応(機械学習 Kaggleコンペ)

scienceman

総合スコア8

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

0クリップ

投稿2020/05/11 12:38

編集2020/05/12 01:38

Kaggleコンペ 住宅価格予想について、エラーの原因が特定できません。

1AIacademyと言うサイトのコード、カリキュラムを参考にしてます。 2データの前処理後、学習データと訓練データに分け、さらに訓練データを「訓練のための訓練セット」に分けました。 3その後グリッドサーチにて、ランダムフォレストとSVRを試していき、グリッドサーチを行う段階でエラーが出ました。 4 5```ここに言語を入力 Python 6コード 7 8#データの読み込み 9import numpy as np 10import pandas as pd 11 12train= pd.read_csv("/kaggle/input/house-prices-advanced-regression-techniques/train.csv") 13test = pd.read_csv("/kaggle/input/house-prices-advanced-regression-techniques/test.csv") 14 15train.head() 16 17train.info() 18 19print(train.shape,test.shape) 20 21 22#欠損地の多いデータを消す 23train = train.drop('Alley',axis=1).drop('FireplaceQu',axis=1).drop('PoolQC',axis=1).drop('Fence',axis=1).drop('MiscFeature',axis=1) 24 25test =test.drop('Alley',axis=1).drop('FireplaceQu',axis=1).drop('PoolQC',axis=1).drop('Fence',axis=1).drop('MiscFeature',axis=1) 26 27 28train_id = train['Id'] 29test_id = test['Id'] 30 31y_train = train['SalePrice'] 32x_train = train.drop(['Id','SalePrice'],axis=1) 33x_test = test.drop('Id',axis=1) 34 35 36#欠損値を中央値で補完 37x_train = x_train.fillna(x_train.median()) 38x_test = x_test.fillna(x_test.median()) 39 40x_train.info() 41 42#object型の欠損値をmodeで埋める 43for i in range(x_train.shape[1]): 44 if x_train.iloc[:,i].dtype == object: 45 mode = x_train.mode()[x_train.columns.values[i]].values 46 for j in range(x_train.shape[0]): 47 if x_train.isnull().iloc[j,i]==True: 48 x_train.iloc[j,i] =mode 49 50 51for i in range(x_test.shape[1]): 52 if x_test.iloc[:,i].dtype == object: 53 mode = x_test.mode()[x_test.columns.values[i]].values 54 for j in range(x_test.shape[0]): 55 if x_test.isnull().iloc[j,i]==True: 56 x_test.iloc[j,i] = mode 57 58 59x_train.isnull().sum().sum() 60 61#ラベルエンコーディング 62from sklearn.preprocessing import LabelEncoder 63le = LabelEncoder() 64 65#ラベルエンコーダー(訓練セット) 66for i in range(x_train.shape[1]): 67 if x_train.iloc[:,i].dtypes == object: 68 le.fit(list(x_train[x_train.columns.values[i]].values)) 69 x_train[x_train.columns.values[i]] = le.transform(list(x_train[x_train.columns.values[i]].values)) 70 71#ラベルエンコーダー(テストセット) 72for i in range(x_test.shape[1]): 73 if x_test.iloc[:,i].dtypes == object: 74 le.fit(list(x_test[x_test.columns.values[i]].values)) 75 x_test[x_test.columns.values[i]] = le.transform(list(x_test[x_test.columns.values[i]].values)) 76 77x_train.info() 78 79 80#特徴量の削減 81from sklearn.feature_selection import SelectKBest,f_regression 82 83selector = SelectKBest(score_func=f_regression,k=5) 84selector.fit(x_train,y_train) 85print(selector.get_support()) 86 87 88x_train_selected =pd.DataFrame({'OverallQual':x_train['OverallQual'],'ExterQual':x_train['ExterQual'],'GrLivArea':x_train['GrLivArea'],'GarageCars':x_train['GarageCars'],'GarageArea':x_train['GarageArea']}) 89 90x_test_selected = pd.DataFrame({'OverallQual':x_test['OverallQual'],'ExterQual':x_test['ExterQual'],'GrLivArea':x_test['GrLivArea'],'GarageCars':x_test['GarageCars'],'GarageArea':x_test['GarageArea']}) 91 92x_train_selected.head() 93 94#訓練セットを分ける 95from sklearn.model_selection import train_test_split 96xp_train,xp_test,yp_train,yp_test = train_test_split(x_train_selected,y_train,test_size=0.3,random_state=1) 97 98#ランダムフォレストとサポートベクター回帰(SVR)を読み込み、グリッドサーチを行う 99from sklearn.svm import SVR 100from sklearn.ensemble import RandomForestRegressor 101 102forest = RandomForestRegressor 103svr =SVR() 104 105parameters_forest = {'n_estimators':[100,500,1000,3000],'max-depth':[3,6,12]} 106parameters_svr = {'C':[0.1,10,1000],'epsilzon':[0.01,0.1,0.5]} 107 108 109#グリッドサーチを行う(エラー発生) 110from sklearn.model_selection import GridSearchCV 111 112grid_forest = GridSearchCV(forest,parameters_forest) 113grid_forest.fit(xp_train,yp_train) 114 115 116grid_svr = GridSearchCV(svr,parameters_svr) 117grid_svr.fit(xp_train,yp_train) 118 119 120 121エラーメッセージ 122--------------------------------------------------------------------------- 123TypeError Traceback (most recent call last) 124<ipython-input-17-5e7673965b55> in <module> 125 2 # ランダムフォレスト 126 3 grid_forest = GridSearchCV(forest,parameters_forest) 127----> 4 grid_forest.fit(xp_train,yp_train) 128 5 129 6 # SVR 130 131/opt/conda/lib/python3.7/site-packages/sklearn/model_selection/_search.py in fit(self, X, y, groups, **fit_params) 132 653 n_splits = cv.get_n_splits(X, y, groups) 133 654 134--> 655 base_estimator = clone(self.estimator) 135 656 136 657 parallel = Parallel(n_jobs=self.n_jobs, verbose=self.verbose, 137 138/opt/conda/lib/python3.7/site-packages/sklearn/base.py in clone(estimator, safe) 139 65 "it does not seem to be a scikit-learn estimator " 140 66 "as it does not implement a 'get_params' methods." 141---> 67 % (repr(estimator), type(estimator))) 142 68 klass = estimator.__class__ 143 69 new_object_params = estimator.get_params(deep=False) 144 145TypeError: Cannot clone object '<class 'sklearn.ensemble._forest.RandomForestRegressor'>' (type <class 'abc.ABCMeta'>): it does not seem to be a scikit-learn estimator as it does not implement a 'get_params' methods. 146 147初心者で対処の仕方など、よくわかってないので試したことは特にありません。 148コードのスペルミスはないか2度コード全体のスペルチェックはしてます。 149このエラーはどんな意味で、対応法をを知っている方いましたら、解答よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2020/05/11 13:55

・コードは「コードの挿入」で記入してください。 ・コードが部分的すぎて分かりません。参考サイトのリンクを貼ってください。
meg_

2020/05/12 01:35

「grid_forest = GridSearchCV(forest,parameters_forest)」の「forest」について情報をください。この変数を生成したコードを教えてください。(エラーの原因かと思われます)
guest

回答1

0

ベストアンサー

forest = RandomForestRegressorforest = RandomForestRegressor()にすれば良いかと思います。

投稿2020/05/12 02:05

meg_

総合スコア10577

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

scienceman

2020/05/12 12:42

解決できました。ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問