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

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

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

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

3018閲覧

Xgboostのアルゴリズム

yamato_user

総合スコア2321

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/04/19 10:49

Xgboostについての質問です(プログラミング関連の質問でないことご容赦ください)

Xgboostは欠損値があっても、内部で自動的に補完してくれるそうですが、どのようなアルゴリズムで欠損値を補完しているのでしょうか?

下記のプログラムはPythonでirisデータセットに対して、意図的に欠損値を代入しXgboostでmodelを作成したものです

Python

1# 学習関連 2import xgboost as xgb 3from sklearn import model_selection 4import pandas as pd 5import numpy as np 6 7# データセット 8from sklearn import datasets 9iris = datasets.load_iris() 10iris_df = pd.DataFrame(iris.data) 11iris_df = iris_df.rename(columns={ 12 0: 'sepal_length', 13 1: 'sepal_width', 14 2: 'petal_length', 15 3: 'petal_width'}) 16iris_df['target'] = iris.target 17 18# 訓練データとテストデータに分割 19train_df, test_df = model_selection.train_test_split(iris_df, test_size=0.3) # 30%をテスト 20train_df_y = train_df[['target']] 21train_df_x = train_df.copy().drop('target', axis=1) 22test_df_y = test_df[['target']] 23test_df_x = test_df.copy().drop('target', axis=1) 24 25# 意図的に欠損値を挿入 26import random 27for i in range(0,len(train_df_x)): 28 a = int(random.uniform(0, 4)) 29 train_df_x.values[i][a]=None 30 a = int(random.uniform(0, 4)) 31 train_df_x.values[i][a]=None 32 33# XGBClassifierの基本モデル 34clf = xgb.XGBClassifier() 35# ハイパーパラメータ探索 36clf_cv = model_selection.GridSearchCV(clf, {'max_depth': [2,4,6], 'n_estimators': [50,100,200]}, verbose=1) 37clf_cv.fit(train_df_x, train_df_y) 38# 良さげなパラメータで学習しなおす 39clf = xgb.XGBClassifier(**clf_cv.best_params_) 40clf.fit(train_df_x, train_df_y) 41 42# 予測 43prediction = clf.predict(test_df_x) 44print("正答率は") 45print(np.sum(np.array(test_df_y["target"])==prediction)/len(np.array(test_df_y["target"])))

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

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

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

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

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

guest

回答1

0

自己解決

補完じゃなく、木の分岐の際に欠損データは使用していないようでした

投稿2019/07/24 05:16

yamato_user

総合スコア2321

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問