開発環境
- Python3.6.5
- Jupyter notebook
- Windows7
困っていること
kaggleのTitanic課題kernelを写経して提出までこぎつけました。が、警告をガン無視して進めたので今から警告に対する対処をしようとしています。
写経対象: A Data Science Framework: To Achieve 99% Accuracy
一次元配列なのに列ベクトルyを渡されて困るから変えろ?
該当コード
python
1#Machine Learning Algorithm (MLA) Selection and Initialization 2MLA = [ 3 ensemble.AdaBoostClassifier(), 4 ensemble.BaggingClassifier(), 5 ensemble.ExtraTreesClassifier(), 6 ensemble.GradientBoostingClassifier(), 7 ensemble.RandomForestClassifier(), 8 9 gaussian_process.GaussianProcessClassifier(), 10 11 linear_model.LogisticRegressionCV(), 12 linear_model.PassiveAggressiveClassifier(), 13 linear_model.RidgeClassifierCV(), 14 linear_model.SGDClassifier(), 15 linear_model.Perceptron(), 16 17 naive_bayes.BernoulliNB(), 18 naive_bayes.GaussianNB(), 19 20 neighbors.KNeighborsClassifier(), 21 22 svm.SVC(probability=True), 23 svm.NuSVC(probability=True), 24 svm.LinearSVC(), 25 26 tree.DecisionTreeClassifier(), 27 tree.ExtraTreeClassifier(), 28 29 discriminant_analysis.LinearDiscriminantAnalysis(), 30 discriminant_analysis.QuadraticDiscriminantAnalysis(), 31 32 XGBClassifier() 33] 34 35cv_split = model_selection.ShuffleSplit(n_splits = 10, test_size = .3, train_size = .6, random_state = 0) 36 37MLA_columns = ['MLA Name', 'MLA Parameters', 'MLA Train Accuracy Mean', 'MLA Test Accuracy Mean', 'MLA Test Accuracy 3*STD', 'MLA Time'] 38MLA_compare = pd.DataFrame(columns = MLA_columns) 39 40MLA_predict = data1[Target] 41 42row_index = 0 43for alg in MLA: 44 MLA_name = alg.__class__.__name__ 45 MLA_compare.loc[row_index, 'MLA Name'] = MLA_name 46 MLA_compare.loc[row_index, 'MLA Parameters'] = str(alg.get_params()) 47 48 cv_results = model_selection.cross_validate(alg, data1[data1_x_bin], data1[Target], cv = cv_split) 49 50 MLA_compare.loc[row_index, 'MLA Time'] = cv_results['fit_time'].mean() 51 MLA_compare.loc[row_index, 'MLA Train Accuracy Mean'] = cv_results['train_score'].mean() 52 MLA_compare.loc[row_index, 'MLA Test Accuracy Mean'] = cv_results['test_score'].mean() 53 54 MLA_compare.loc[row_index, 'MLA Test Accuracy 3*STD'] = cv_results['test_score'].std()*3 55 56 alg.fit(data1[data1_x_bin], data1[Target]) 57 MLA_predict[MLA_name] = alg.predict(data1[data1_x_bin]) 58 59 row_index += 1 60 61 62MLA_compare.sort_values(by = ['MLA Test Accuracy Mean'], ascending = False, inplace = True) 63MLA_compare
警告文
同じ内容の文が重複して出てくるので一部だけですが、このような警告文が延々と出てきます。values.ravel()
をつければよいとの対処法?は見つけましたが、どれにつけたらよいかが分からない状態ですorz お知恵をお貸しください(>_<)
C:\Users\ayumusato\Anaconda3\lib\site-packages\sklearn\utils\validation.py:578: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel(). y = column_or_1d(y, warn=True) C:\Users\ayumusato\Anaconda3\lib\site-packages\sklearn\model_selection\_validation.py:458: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel(). estimator.fit(X_train, y_train, **fit_params) C:\Users\ayumusato\Anaconda3\lib\site-packages\ipykernel_launcher.py:56: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().
Target = ['Survived'] としているコード周辺
python
1label = LabelEncoder() 2for dataset in data_cleaner: 3 dataset['Sex_Code'] = label.fit_transform(dataset['Sex']) 4 dataset['Embarked_Code'] = label.fit_transform(dataset['Embarked']) 5 dataset['Title_Code'] = label.fit_transform(dataset['Title']) 6 dataset['AgeBin_Code'] = label.fit_transform(dataset['AgeBin']) 7 dataset['FareBin_Code'] = label.fit_transform(dataset['FareBin']) 8 9Target = ['Survived'] #←ここ 10 11data1_x = ['Sex', 'Pclass', 'Embarked', 'Title', 'SibSp', 'Parch', 'Age', 'Fare', 'FamilySize', 'IsAlone'] 12data1_x_calc = ['Sex_Code', 'Pclass', 'Embarked_Code', 'Title_Code', 'SibSp', 'Parch', 'Age', 'Fare'] 13data1_xy = Target + data1_x #←ここ 14print('Original X Y: ', data1_xy, '\n') 15 16data1_x_bin = ['Sex_Code', 'Pclass', 'Embarked_Code', 'Title_Code', 'FamilySize', 'AgeBin_Code', 'FareBin_Code'] 17data1_xy_bin = Target + data1_x_bin 18print('Bin X Y: ', data1_xy_bin, '\n') 19 20data1_dummy = pd.get_dummies(data1[data1_x]) 21data1_x_dummy = data1_dummy.columns.tolist() 22data1_xy_dummy = Target + data1_x_dummy 23print('Dummy X Y: ', data1_xy_dummy, '\n') 24 25data1_dummy.head()
list、データフレーム、numpy配列などの使い分け
**Pythonの組込関数であるリスト([オブジェクト1, オブジェクト2, ...])**は、要素としてあらゆるオブジェクトを持つことが可能。
→複数のオブジェクトをまとめて管理。
参考サイト: リストオブジェクト -PythonWeb
Pandasのデータを格納するオブジェクトDataFrameは、二次元配列に相当する。Seriesをラベリングしてディクショナリのように寄せ集めるとDataFrameになる。行と列のある表みたいな感じ。
DataFrameオブジェクトのdata部分を指定するには、NumPyの配列・Seriesを含む辞書などが使える。データ部分の指定方法は多岐にわたる。
ちなみに一次元配列はSeries。
参考サイト:Pandasのデータを格納するオブジェクトDataFrameを理解する -DeepAge
**NumPy配列 (N-dimensional array/ndarray) **は同じ型&サイズの項目で構成する固定長の多次元コンテナ。
参考サイト: The N-dimensional array (ndarray)
listとnumpy配列の違い
この質問&回答を参照。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/13 09:27
2018/09/13 09:30
2018/09/13 10:25
2018/09/13 12:23
2018/09/13 12:29
2018/09/13 14:39
2018/09/13 14:52
2018/09/14 01:50
2018/09/17 02:17
2018/09/17 05:18
2018/09/17 07:43