0

scikit を使用した Python ML は初めてです。私は、ペット、所有者、および場所の 3 つの列を持つモデルを作成するソリューションに取り組んでいました。

import pandas
import joblib
from sklearn.tree import DecisionTreeClassifier
from collections import defaultdict
from sklearn import preprocessing 

df = pandas.DataFrame({
    'pets': ['cat', 'dog', 'cat', 'monkey', 'dog', 'dog'], 
    'owner': ['Champ', 'Ron', 'Brick', 'Champ', 'Veronica', 'Ron'], 
    'location': ['San_Diego', 'New_York', 'New_York', 'San_Diego', 'San_Diego', 
                 'New_York']
})

ここで、ラベル エンコーダーを使用して、データ フレーム全体をエンコードしています。

le = preprocessing.LabelEncoder()
df_encoded = df.apply(le.fit_transform)
df_array=df_encoded.values

ここで、エンコードされた配列を入力セット (ペットと所有者) と出力セット (場所) に分割しています。

IpSet = df_array[:,0:2]
Opset = df_array[:,2:3]

次に、決定木分類器の新しいモデルを作成し、入力セットと出力セットをフィッティングしています。

model = DecisionTreeClassifier()
model.fit(IpSet,Opset)

今、新しいデータフレームのモデルを使用して場所を予測しようとしています。以前に使用したのと同じラベル エンコーダーを使用しています。

df_Predict = pandas.DataFrame({
    'pets': ['cat'], 
    'owner': ['Champ']})
df_encoded_Predict = df_Predict.apply(le.fit_transform)
predictions_train = model.predict(df_encoded_Predict)
print(le.inverse_transform(predictions_train)[:1])

これで、「サンディエゴ」という値が表示されることを期待しています。出力として「Champ」が表示される理由がわかりません。

誰かがこれを通して私を助けることができますか?

4

1 に答える 1