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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

解決済

1回答

762閲覧

dtree.predict()を実行したい。

yasutin

総合スコア41

Python 3.x

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

0クリップ

投稿2023/01/09 01:06

前提

楽天市場のレビューアーの特徴からスパムを検出するAIを作成しています。
決定木分析を行っており、訓練データで学習をし終えましたが結果を予測することができていません。

実現したいこと

ここに実現したいことを箇条書きで書いてください。

  • dtree.predict()を使えるようにする。

発生している問題・エラーメッセージ

ValueError: X has 4 features, but DecisionTreeClassifier is expecting 3 features as input.

該当のソースコード

python

1from sklearn import tree 2from dtreeviz.trees import * 3import dtreeviz 4import graphviz 5 6df_past = pd.read_csv(r"C:\Users\Yasu\Documents\情報科学特別演習\csv\スパム検出済み.csv") 7df_predict = pd.read_csv(r"C:\Users\Yasu\Documents\情報科学特別演習\csv\predict_data.csv") 8 9X_name = ["reputation","age","sex"]#説明変数 10y_name = "spam"#目的変数 11X = df_past[X_name] 12X = X.values 13y = df_past[y_name] 14 15dtree = tree.DecisionTreeClassifier(max_depth=3) 16dtree.fit(X,y) 17 18m = dtreeviz.model(dtree,X,y, 19 target_name = y_name, 20 feature_names = X_name, 21 class_names = ["not spam","spam"]) 22 23m_view = m.view() 24dtree.predict(df_predict) 25 26

データについて

訓練データと予測したいデータ
訓練データが左で、予測データが右です。

試したこと

予測したいデータの欠損値をドロップさせましたが改善できませんでした。

補足情報(FW/ツールのバージョンなど)

windows11
IDLE

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

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

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

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

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

pig_vba

2023/01/09 01:36

>ValueError: X は 4 つの特徴を持ちますが、DecisionTreeClassifier は 3 つの特徴を入力として期待しています。 dtree.fit直前のXの中身がどのようになっているか確認してください X=X.values不要?
yasutin

2023/01/09 02:49

提示したエラーに関しては、can110様の回答が適切でした。 ですが、その後にもエラーがでており、その解決にはpig_vba様の回答を参考にさせていただきました。 どちらもベストアンサーにさせていただきたいのですが、今回の質問はcan110様のものをベストアンサーにさせていただきます。 ありがとうございました!
guest

回答1

0

ベストアンサー

動作未検証ですがdf_predictの読み込み時に左端のA列を含めて4列(特徴量)存在するのがエラー原因だと思われます。
読み込み時に必要な列のみを指定するか、読み込み後にdf_pastと同じく必要な列のみ抽出するとよいでしょう。

投稿2023/01/09 02:01

編集2023/01/09 02:08
can110

総合スコア38266

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

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

yasutin

2023/01/09 02:50

その通りでした。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問