2017-08-28 8 views
1

から抽出フィーチャクラス/種類、私のようなモデルをトレーニングすることができます内蔵のアイリスデータセットを使用してキャレット列車のオブジェクト

model <- train(Species~., data=iris, method='xgbTree') 

私は、機能の名前を抽出することができますが、私は取得しようとすると、それらのクラスは、単に文字列であるため文字を返します。

model$coefnames 
## "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" 

lapply(model$coefnames, class) 
## "character" "character" "character" "character" 

あなたが予測を行うために、別の型の変数に入れしようとすると、キャレットが期待されるタイプを知っているかのようにしかし、それはそうです。

test<- data.frame(Sepal.Length=1, 
        Sepal.Width=2, 
        Petal.Length=3, 
        Petal.Width="x") # character instead of numeric 

predict(model, newdata=test) 
## Error: variable 'Petal.Width' was fitted with type "numeric" but type "factor" was supplied 

私はちょうどモデルオブジェクトそのものを使用してモデルを訓練するために使用される機能の種類を抽出することができます方法はありますか?私が得ることができる最も近いのはdplyrファンクションtype.convertを使用することですが、これは入力があることを知る必要があります。私の理想的な機能は次のようなものに動作します:

model_types(model$coefnames) 
## "numeric" "numeric" "numeric" "numeric" 

答えて

1

この情報は

attr(terms(model), "dataClasses") 
#  Species Sepal.Length Sepal.Width Petal.Length Petal.Width 
#  "factor" "numeric" "numeric" "numeric" "numeric" 
+0

本当にありがとうございました、モデルの用語の属性として保存されているが、それがどこかにあると知っていました。 – tjq

関連する問題