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」が表示される理由がわかりません。
誰かがこれを通して私を助けることができますか?