czytanie/odczytywanie drzewa z/do pliku za pomocą pickle
This commit is contained in:
parent
4b73064f4e
commit
7cabeb6cbe
@ -3,7 +3,7 @@
|
|||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="56453584-72bd-49f4-a39c-fccf91ab20c6" name="Default Changelist" comment="">
|
<list default="true" id="56453584-72bd-49f4-a39c-fccf91ab20c6" name="Default Changelist" comment="">
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/py.py" beforeDir="false" afterPath="$PROJECT_DIR$/py.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/resources/mydecisiontree.png" beforeDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/treelearn.py" beforeDir="false" afterPath="$PROJECT_DIR$/treelearn.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/treelearn.py" beforeDir="false" afterPath="$PROJECT_DIR$/treelearn.py" afterDir="false" />
|
||||||
</list>
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
@ -133,6 +133,10 @@
|
|||||||
<workItem from="1621110850717" duration="377000" />
|
<workItem from="1621110850717" duration="377000" />
|
||||||
<workItem from="1621111315400" duration="72000" />
|
<workItem from="1621111315400" duration="72000" />
|
||||||
<workItem from="1621171225695" duration="880000" />
|
<workItem from="1621171225695" duration="880000" />
|
||||||
|
<workItem from="1621195639702" duration="147000" />
|
||||||
|
<workItem from="1621247003154" duration="155000" />
|
||||||
|
<workItem from="1621259807468" duration="619000" />
|
||||||
|
<workItem from="1621428139271" duration="1235000" />
|
||||||
</task>
|
</task>
|
||||||
<servers />
|
<servers />
|
||||||
</component>
|
</component>
|
||||||
@ -144,26 +148,26 @@
|
|||||||
<screen x="0" y="0" width="1920" height="1080" />
|
<screen x="0" y="0" width="1920" height="1080" />
|
||||||
</state>
|
</state>
|
||||||
<state x="628" y="343" key="#com.intellij.fileTypes.FileTypeChooser/0.0.1920.1080@0.0.1920.1080" timestamp="1621109431051" />
|
<state x="628" y="343" key="#com.intellij.fileTypes.FileTypeChooser/0.0.1920.1080@0.0.1920.1080" timestamp="1621109431051" />
|
||||||
<state x="690" y="287" key="#com.intellij.refactoring.safeDelete.UnsafeUsagesDialog" timestamp="1617994393023">
|
<state x="690" y="287" key="#com.intellij.refactoring.safeDelete.UnsafeUsagesDialog" timestamp="1621429221570">
|
||||||
<screen x="0" y="0" width="1920" height="1080" />
|
<screen x="0" y="0" width="1920" height="1080" />
|
||||||
</state>
|
</state>
|
||||||
<state x="690" y="287" key="#com.intellij.refactoring.safeDelete.UnsafeUsagesDialog/0.0.1920.1080@0.0.1920.1080" timestamp="1617994393023" />
|
<state x="690" y="287" key="#com.intellij.refactoring.safeDelete.UnsafeUsagesDialog/0.0.1920.1080@0.0.1920.1080" timestamp="1621429221570" />
|
||||||
<state width="1879" height="295" key="GridCell.Tab.0.bottom" timestamp="1621172112876">
|
<state width="1879" height="295" key="GridCell.Tab.0.bottom" timestamp="1621429389327">
|
||||||
<screen x="0" y="0" width="1920" height="1080" />
|
<screen x="0" y="0" width="1920" height="1080" />
|
||||||
</state>
|
</state>
|
||||||
<state width="1879" height="295" key="GridCell.Tab.0.bottom/0.0.1920.1080@0.0.1920.1080" timestamp="1621172112876" />
|
<state width="1879" height="295" key="GridCell.Tab.0.bottom/0.0.1920.1080@0.0.1920.1080" timestamp="1621429389327" />
|
||||||
<state width="1879" height="295" key="GridCell.Tab.0.center" timestamp="1621172112876">
|
<state width="1879" height="295" key="GridCell.Tab.0.center" timestamp="1621429389327">
|
||||||
<screen x="0" y="0" width="1920" height="1080" />
|
<screen x="0" y="0" width="1920" height="1080" />
|
||||||
</state>
|
</state>
|
||||||
<state width="1879" height="295" key="GridCell.Tab.0.center/0.0.1920.1080@0.0.1920.1080" timestamp="1621172112876" />
|
<state width="1879" height="295" key="GridCell.Tab.0.center/0.0.1920.1080@0.0.1920.1080" timestamp="1621429389327" />
|
||||||
<state width="1879" height="295" key="GridCell.Tab.0.left" timestamp="1621172112876">
|
<state width="1879" height="295" key="GridCell.Tab.0.left" timestamp="1621429389326">
|
||||||
<screen x="0" y="0" width="1920" height="1080" />
|
<screen x="0" y="0" width="1920" height="1080" />
|
||||||
</state>
|
</state>
|
||||||
<state width="1879" height="295" key="GridCell.Tab.0.left/0.0.1920.1080@0.0.1920.1080" timestamp="1621172112876" />
|
<state width="1879" height="295" key="GridCell.Tab.0.left/0.0.1920.1080@0.0.1920.1080" timestamp="1621429389326" />
|
||||||
<state width="1879" height="295" key="GridCell.Tab.0.right" timestamp="1621172112876">
|
<state width="1879" height="295" key="GridCell.Tab.0.right" timestamp="1621429389327">
|
||||||
<screen x="0" y="0" width="1920" height="1080" />
|
<screen x="0" y="0" width="1920" height="1080" />
|
||||||
</state>
|
</state>
|
||||||
<state width="1879" height="295" key="GridCell.Tab.0.right/0.0.1920.1080@0.0.1920.1080" timestamp="1621172112876" />
|
<state width="1879" height="295" key="GridCell.Tab.0.right/0.0.1920.1080@0.0.1920.1080" timestamp="1621429389327" />
|
||||||
<state width="1879" height="364" key="GridCell.Tab.1.bottom" timestamp="1619289752045">
|
<state width="1879" height="364" key="GridCell.Tab.1.bottom" timestamp="1619289752045">
|
||||||
<screen x="0" y="0" width="1920" height="1080" />
|
<screen x="0" y="0" width="1920" height="1080" />
|
||||||
</state>
|
</state>
|
||||||
@ -180,10 +184,10 @@
|
|||||||
<screen x="0" y="0" width="1920" height="1080" />
|
<screen x="0" y="0" width="1920" height="1080" />
|
||||||
</state>
|
</state>
|
||||||
<state width="1879" height="364" key="GridCell.Tab.1.right/0.0.1920.1080@0.0.1920.1080" timestamp="1619289752045" />
|
<state width="1879" height="364" key="GridCell.Tab.1.right/0.0.1920.1080@0.0.1920.1080" timestamp="1619289752045" />
|
||||||
<state x="0" y="0" key="com.intellij.ide.util.TipDialog" timestamp="1621171227060">
|
<state x="0" y="0" key="com.intellij.ide.util.TipDialog" timestamp="1621428140628">
|
||||||
<screen x="0" y="0" width="1920" height="1080" />
|
<screen x="0" y="0" width="1920" height="1080" />
|
||||||
</state>
|
</state>
|
||||||
<state x="0" y="0" key="com.intellij.ide.util.TipDialog/0.0.1920.1080@0.0.1920.1080" timestamp="1621171227060" />
|
<state x="0" y="0" key="com.intellij.ide.util.TipDialog/0.0.1920.1080@0.0.1920.1080" timestamp="1621428140628" />
|
||||||
</component>
|
</component>
|
||||||
<component name="XDebuggerManager">
|
<component name="XDebuggerManager">
|
||||||
<breakpoint-manager>
|
<breakpoint-manager>
|
||||||
@ -197,6 +201,6 @@
|
|||||||
</breakpoint-manager>
|
</breakpoint-manager>
|
||||||
</component>
|
</component>
|
||||||
<component name="com.intellij.coverage.CoverageDataManagerImpl">
|
<component name="com.intellij.coverage.CoverageDataManagerImpl">
|
||||||
<SUITE FILE_PATH="coverage/SmartTractor$py.coverage" NAME="py Coverage Results" MODIFIED="1621172058000" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
<SUITE FILE_PATH="coverage/SmartTractor$py.coverage" NAME="py Coverage Results" MODIFIED="1621429250145" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 67 KiB |
BIN
resources/tree.pkl
Normal file
BIN
resources/tree.pkl
Normal file
Binary file not shown.
29
treelearn.py
29
treelearn.py
@ -2,22 +2,27 @@ import matplotlib.image as pltimg
|
|||||||
import matplotlib.pyplot as plt
|
import matplotlib.pyplot as plt
|
||||||
import os
|
import os
|
||||||
import pandas
|
import pandas
|
||||||
|
import pickle
|
||||||
import pydotplus
|
import pydotplus
|
||||||
from sklearn import tree
|
from sklearn import tree
|
||||||
from sklearn.tree import DecisionTreeClassifier
|
from sklearn.tree import DecisionTreeClassifier
|
||||||
def treelearn(): #zwraca utworzone drzewo decyzyjne
|
def treelearn(): #zwraca utworzone drzewo decyzyjne
|
||||||
df = pandas.read_csv(os.path.join('resources', 'data.csv')) #czytanie danych do nauki drzewa z pliku .csv
|
if os.path.exists("resources/tree.pkl"): #jeżeli drzewo jest zapisane w pliku to odczytaj
|
||||||
features = ['amount of seeds', 'collected plants', 'fertilizer', 'fuel', 'water level']
|
dtree = pickle.load(open(os.path.join('resources', "tree.pkl"), "rb"))
|
||||||
x = df[features] #wczytanie atrybutów, z których ma się uczyć drzewo
|
else: #w przeciwnym razie utwórz drzewo od początku i zapisz do pliku
|
||||||
y = df['back to station'] #podjęte decyzje
|
df = pandas.read_csv(os.path.join('resources', 'data.csv')) #czytanie danych do nauki drzewa z pliku .csv
|
||||||
dtree = DecisionTreeClassifier() #tworzy obiekt drzewa
|
features = ['amount of seeds', 'collected plants', 'fertilizer', 'fuel', 'water level']
|
||||||
dtree = dtree.fit(x, y) #uczy drzewo
|
x = df[features] #wczytanie atrybutów, z których ma się uczyć drzewo
|
||||||
data = tree.export_graphviz(dtree, out_file=None, feature_names=features)
|
y = df['back to station'] #podjęte decyzje
|
||||||
graph = pydotplus.graph_from_dot_data(data)
|
dtree = DecisionTreeClassifier() #klasyfikuje drzewo
|
||||||
graph.write_png(os.path.join('resources', 'mydecisiontree.png'))
|
dtree = dtree.fit(x, y) #uczy drzewo
|
||||||
img = pltimg.imread(os.path.join('resources', 'mydecisiontree.png'))
|
pickle.dump(dtree, open(os.path.join('resources', "tree.pkl"), "wb"))
|
||||||
imgplot = plt.imshow(img)
|
data = tree.export_graphviz(dtree, out_file=None, feature_names=features)
|
||||||
plt.show() #wyświetl drzewo decyzyjne
|
graph = pydotplus.graph_from_dot_data(data)
|
||||||
|
graph.write_png(os.path.join('resources', 'mytree.png'))
|
||||||
|
img = pltimg.imread(os.path.join('resources', 'mytree.png'))
|
||||||
|
imgplot = plt.imshow(img)
|
||||||
|
plt.show() #wyświetl drzewo decyzyjne
|
||||||
return dtree
|
return dtree
|
||||||
def make_decision(tree, amount_of_seeds, collected_plants, fertilizer, fuel, water_level): #zwraca decyzję o powrocie do stacji (0 : NIE, 1 : TAK)
|
def make_decision(tree, amount_of_seeds, collected_plants, fertilizer, fuel, water_level): #zwraca decyzję o powrocie do stacji (0 : NIE, 1 : TAK)
|
||||||
decision = tree.predict([[amount_of_seeds, collected_plants, fertilizer, fuel, water_level]]) #podejmij decyzję na podstawie aktualnych parametrów traktora o powrocie do stacji lub nie
|
decision = tree.predict([[amount_of_seeds, collected_plants, fertilizer, fuel, water_level]]) #podejmij decyzję na podstawie aktualnych parametrów traktora o powrocie do stacji lub nie
|
||||||
|
Loading…
Reference in New Issue
Block a user