0

決定木を作成し、それを python で剪定したかったのです。ただし、sklearn 自体はプルーニングをサポートしていません。インターネット検索で、私はこれを見つけました :

しかし、ファイルの使い方がわかりません。私は試した:

from sklearn.datasets import load_iris
import tree

clf = tree.DecisionTreeClassifier()
iris = load_iris()

clf = clf.fit(iris.data, iris.target)

しかし、エラー ValueError: Attempted relative import in non-package が表示されます。それは私がインポートする方法ではありませんか?別の方法でファイルを保存する必要がありますか? ありがとうございました。

4

3 に答える 3

0

Python では、モジュール (=他の言語ではパッケージ) が相互に依存するルーチンを定義することがよくあります。このような場合、.py ファイルを 1 つだけダウンロードしてワークスペース (つまり、ソースが配置されているディレクトリ) に配置することはできません。代わりに、パッケージ全体をそのフォルダーにダウンロードし、相対的にインポートします。つまり、次のようにします。

# a general import, should only be used if you are absolutely certain that there will be no namespace conflicts
from sklearn.tree.tree import * 
# a more "safe" way is to import the classes/functions you need explicitely
from sklearn.tree.tree import DecisionTreeClassifier
于 2015-01-23T22:44:36.840 に答える
0

2012 年にさかのぼるsgenoud の 7 年前scikit-learn のフォークを本当に使用したい場合git cloneは、レポのベース ディレクトリで、個々のファイルをコピー/クローンしようとしないでください (もちろん、すべてを失うことになります)。 2012 年以降の改善/修正; v 0.12にさかのぼる)

しかし、その考えは誤解されているように聞こえます:パラメータを変更して早期停止パラメータ max_depth、min_samples、min_samples_leaf、min_impurity_decrease、min_impurity_splitを取得することで、より浅い/剪定されたツリーを取得できますDecisionTreeClassifier。ドキュメントを見てパラメータをいじってみてください。私は 10 年以上にわたって ML を行ってきましたが、DT ソースをハックする必要があることは一度もありませんでした。これをしない正当な理由は山ほどありますし、そうすべき正当な理由もありません。

(そして、DecisionTreeClassifier パラメーターをいじってみてもまだ欲しいものが得られない場合は、アイリスなどのオープンソース データセットを使用して再現可能なコード例をここに投稿してください。)

于 2019-10-05T02:20:58.443 に答える