Difference between revisions of "Orange: Python Script"

From OnnoWiki
Jump to navigation Jump to search
(Created page with "Sumber: https://docs.biolab.si//3/visual-programming/widgets/data/pythonscript.html Extends functionalities through Python scripting. Inputs Data (Orange.data.Table): i...")
 
 
(13 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
Sumber: https://docs.biolab.si//3/visual-programming/widgets/data/pythonscript.html
 
Sumber: https://docs.biolab.si//3/visual-programming/widgets/data/pythonscript.html
  
Extends functionalities through Python scripting.
+
Widget Python Script memperluas fungsi Orange melalui script Python.
  
Inputs
+
==Input==
  
    Data (Orange.data.Table): input dataset bound to in_data variable
+
Data (Orange.data.Table): input dataset bound to in_data variable
 +
Learner (Orange.classification.Learner): input learner bound to in_learner variable
 +
Classifier (Orange.classification.Learner): input classifier bound to in_classifier variable
 +
Object: input Python object bound to in_object variable
  
    Learner (Orange.classification.Learner): input learner bound to in_learner variable
+
==Output==
  
    Classifier (Orange.classification.Learner): input classifier bound to in_classifier variable
+
Data (Orange.data.Table): dataset retrieved from out_data variable
 +
Learner (Orange.classification.Learner): learner retrieved from out_learner variable
 +
Classifier (Orange.classification.Learner): classifier retrieved from out_classifier variable
 +
Object: Python object retrieved from out_object variable
  
    Object: input Python object bound to in_object variable
+
Widget Python Script dapat digunakan untuk menjalankan skrip python di input, ketika fungsionalitas yang sesuai tidak diterapkan dalam widget yang ada. Script memiliki variabel in_data, in_distance, in_learner, in_classifier dan in_object (dari sinyal input) di namespace lokalnya. Jika sinyal tidak terhubung atau belum menerima data apa pun, variabel tersebut akan berisi None.
  
Outputs
+
Setelah script dijalankan, variabel dari namespace lokal script diekstraksi dan digunakan sebagai output dari widget. Widget dapat lebih lanjut dihubungkan ke widget lain untuk memvisualisasikan output.
  
    Data (Orange.data.Table): dataset retrieved from out_data variable
+
Misalnya script berikut hanya akan meneruskan semua sinyal yang diterimanya:
  
    Learner (Orange.classification.Learner): learner retrieved from out_learner variable
+
out_data = in_data
 +
out_distance = in_distance
 +
out_learner = in_learner
 +
out_classifier = in_classifier
 +
out_object = in_object
  
    Classifier (Orange.classification.Learner): classifier retrieved from out_classifier variable
+
'''Catatan:''' Anda tidak boleh memodifikasi objek input di tempat.
  
    Object: Python object retrieved from out_object variable
+
[[File:PythonScript-stamped.png|center|600px|thumb]]
  
Python Script widget can be used to run a python script in the input, when a suitable functionality is not implemented in an existing widget. The script has in_data, in_distance, in_learner, in_classifier and in_object variables (from input signals) in its local namespace. If a signal is not connected or it did not yet receive any data, those variables contain None.
+
* Info box contains names of basic operators for Orange Python script.
 +
* The Library control can be used to manage multiple scripts. Pressing “+” will add a new entry and open it in the Python script editor. When the script is modified, its entry in the Library will change to indicate it has unsaved changes. Pressing Update will save the script (keyboard shortcut “Ctrl+S”). A script can be removed by selecting it and pressing the “-“ button.
 +
* Pressing Execute in the Run box executes the script (keyboard shortcut “Ctrl+R”). Any script output (from print) is captured and displayed in the Console below the script.
 +
* The Python script editor on the left can be used to edit a script (it supports some rudimentary syntax highlighting).
 +
* Console displays the output of the script.
  
After the script is executed variables from the script’s local namespace are extracted and used as outputs of the widget. The widget can be further connected to other widgets for visualizing the output.
+
==Contoh==
  
For instance the following script would simply pass on all signals it receives:
+
Widget Python Script dimaksudkan untuk memperluas fungsionalitas bagi pengguna tingkat lanjut. Class dari library Orange dijelaskan dalam dokumentasi. Untuk menemukan informasi lebih lanjut tentang Table class lihat Table, Domain, and Variable documentation.
  
out_data = in_data
+
Dalam contoh penggunaan widget Python Script berikut, kita bisa melakukan pemfilteran batch berdasarkan atribut. Kita menggunakan zoo.tab sebagai contoh dan kita memfilter semua atribut yang memiliki lebih dari 5 nilai diskrit. Dalam kasus kita hanya menghapus atribut 'leg', tetapi bayangkan dimana kita bisa memiliki contoh lain dengan banyak atribut seperti itu.
out_distance = in_distance
 
out_learner = in_learner
 
out_classifier = in_classifier
 
out_object = in_object
 
  
Note: You should not modify the input objects in place.
+
from Orange.data import Domain, Table
 +
domain = Domain([attr for attr in in_data.domain.attributes
 +
                  if attr.is_continuous or len(attr.values) <= 5],
 +
                in_data.domain.class_vars)
 +
out_data = Table(domain, in_data)
  
../../_images/PythonScript-stamped.png
+
[[File:PythonScript-filtering.png|center|600px|thumb]]
  
    Info box contains names of basic operators for Orange Python script.
 
  
    The Library control can be used to manage multiple scripts. Pressing “+” will add a new entry and open it in the Python script editor. When the script is modified, its entry in the Library will change to indicate it has unsaved changes. Pressing Update will save the script (keyboard shortcut “Ctrl+S”). A script can be removed by selecting it and pressing the “-“ button.
+
Contoh penggunaan widget Python Script berikut ini menunjukkan bagaimana membulatkan semua nilai dalam beberapa baris kode. Kali ini kita menggunakan wine.tab dan bulatkan semua nilai menjadi bilangan bulat.
  
    Pressing Execute in the Run box executes the script (keyboard shortcut “Ctrl+R”). Any script output (from print) is captured and displayed in the Console below the script.
+
import numpy as np
 +
out_data = in_data.copy()
 +
#copy, otherwise input data will be overwritten
 +
np.round(out_data.X, 0, out_data.X)
  
    The Python script editor on the left can be used to edit a script (it supports some rudimentary syntax highlighting).
+
[[File:PythonScript-round.png|center|600px|thumb]]
  
    Console displays the output of the script.
+
Contoh penggunaan widget Python Script berikut ini memasukan noise Gaussian ke data. Sekali lagi kita membuat salinan data input, lalu berjalan melalui semua nilai dengan loop ganda untuk dan menambahkan noise random.
  
Examples
+
import random
 +
from Orange.data import Domain, Table
 +
new_data = in_data.copy()
 +
for inst in new_data:
 +
  for f in inst.domain.attributes:
 +
    inst[f] += random.gauss(0, 0.02)
 +
out_data = new_data
  
Python Script widget is intended to extend functionalities for advanced users. Classes from Orange library are described in the documentation. To find further information about orange Table class see Table, Domain, and Variable documentation.
+
[[File:PythonScript-gauss.png|center|600px|thumb]]
  
One can, for example, do batch filtering by attributes. We used zoo.tab for the example and we filtered out all the attributes that have more than 5 discrete values. This in our case removed only ‘leg’ attribute, but imagine an example where one would have many such attributes.
 
 
from Orange.data import Domain, Table
 
domain = Domain([attr for attr in in_data.domain.attributes
 
                if attr.is_continuous or len(attr.values) <= 5],
 
                in_data.domain.class_vars)
 
out_data = Table(domain, in_data)
 
 
../../_images/PythonScript-filtering.png
 
 
The second example shows how to round all the values in a few lines of code. This time we used wine.tab and rounded all the values to whole numbers.
 
 
import numpy as np
 
out_data = in_data.copy()
 
#copy, otherwise input data will be overwritten
 
np.round(out_data.X, 0, out_data.X)
 
 
../../_images/PythonScript-round.png
 
 
The third example introduces some Gaussian noise to the data. Again we make a copy of the input data, then walk through all the values with a double for loop and add random noise.
 
 
import random
 
from Orange.data import Domain, Table
 
new_data = in_data.copy()
 
for inst in new_data:
 
  for f in inst.domain.attributes:
 
    inst[f] += random.gauss(0, 0.02)
 
out_data = new_data
 
 
../../_images/PythonScript-gauss.png
 
 
The final example uses Orange3-Text add-on. Python Script is very useful for custom preprocessing in text mining, extracting new features from strings, or utilizing advanced nltk or gensim functions. Below, we simply tokenized our input data from deerwester.tab by splitting them by whitespace.
 
 
print('Running Preprocessing ...')
 
tokens = [doc.split(' ') for doc in in_data.documents]
 
print('Tokens:', tokens)
 
out_object = in_data
 
out_object.store_tokens(tokens)
 
 
You can add a lot of other preprocessing steps to further adjust the output. The output of Python Script can be used with any widget that accepts the type of output your script produces. In this case, connection is green, which signalizes the right type of input for Word Cloud widget.
 
 
../../_images/PythonScript-Example3.png
 
  
 +
Contoh berikut ini menggunakan add-on Orange3-Text. Widget Script Python sangat berguna untuk preprocessing custom dalam text mining, mengekstraksi feature baru dari string, atau memanfaatkan fungsi nltk atau gensim yang canggih. Di bawah ini, kita hanya men-tokenisasi data input kita dari deerwester.tab dengan membaginya dengan spasi.
  
 +
print('Running Preprocessing ...')
 +
tokens = [doc.split(' ') for doc in in_data.documents]
 +
print('Tokens:', tokens)
 +
out_object = in_data
 +
out_object.store_tokens(tokens)
  
 +
Kita dapat menambahkan banyak langkah preprocessing lainnya untuk lebih menyesuaikan output. Output dari widget Python Script dapat digunakan dengan widget apa pun yang menerima jenis output yang dihasilkan script. Dalam hal ini, koneksi berwarna hijau, yang menandakan jenis input yang tepat untuk widget Word Cloud.
  
 +
[[File:PythonScript-Example3.png|center|600px|thumb]]
  
 
==Referensi==
 
==Referensi==

Latest revision as of 09:38, 17 April 2020

Sumber: https://docs.biolab.si//3/visual-programming/widgets/data/pythonscript.html

Widget Python Script memperluas fungsi Orange melalui script Python.

Input

Data (Orange.data.Table): input dataset bound to in_data variable
Learner (Orange.classification.Learner): input learner bound to in_learner variable
Classifier (Orange.classification.Learner): input classifier bound to in_classifier variable
Object: input Python object bound to in_object variable

Output

Data (Orange.data.Table): dataset retrieved from out_data variable
Learner (Orange.classification.Learner): learner retrieved from out_learner variable
Classifier (Orange.classification.Learner): classifier retrieved from out_classifier variable
Object: Python object retrieved from out_object variable

Widget Python Script dapat digunakan untuk menjalankan skrip python di input, ketika fungsionalitas yang sesuai tidak diterapkan dalam widget yang ada. Script memiliki variabel in_data, in_distance, in_learner, in_classifier dan in_object (dari sinyal input) di namespace lokalnya. Jika sinyal tidak terhubung atau belum menerima data apa pun, variabel tersebut akan berisi None.

Setelah script dijalankan, variabel dari namespace lokal script diekstraksi dan digunakan sebagai output dari widget. Widget dapat lebih lanjut dihubungkan ke widget lain untuk memvisualisasikan output.

Misalnya script berikut hanya akan meneruskan semua sinyal yang diterimanya:

out_data = in_data
out_distance = in_distance
out_learner = in_learner
out_classifier = in_classifier
out_object = in_object

Catatan: Anda tidak boleh memodifikasi objek input di tempat.

PythonScript-stamped.png
  • Info box contains names of basic operators for Orange Python script.
  • The Library control can be used to manage multiple scripts. Pressing “+” will add a new entry and open it in the Python script editor. When the script is modified, its entry in the Library will change to indicate it has unsaved changes. Pressing Update will save the script (keyboard shortcut “Ctrl+S”). A script can be removed by selecting it and pressing the “-“ button.
  • Pressing Execute in the Run box executes the script (keyboard shortcut “Ctrl+R”). Any script output (from print) is captured and displayed in the Console below the script.
  • The Python script editor on the left can be used to edit a script (it supports some rudimentary syntax highlighting).
  • Console displays the output of the script.

Contoh

Widget Python Script dimaksudkan untuk memperluas fungsionalitas bagi pengguna tingkat lanjut. Class dari library Orange dijelaskan dalam dokumentasi. Untuk menemukan informasi lebih lanjut tentang Table class lihat Table, Domain, and Variable documentation.

Dalam contoh penggunaan widget Python Script berikut, kita bisa melakukan pemfilteran batch berdasarkan atribut. Kita menggunakan zoo.tab sebagai contoh dan kita memfilter semua atribut yang memiliki lebih dari 5 nilai diskrit. Dalam kasus kita hanya menghapus atribut 'leg', tetapi bayangkan dimana kita bisa memiliki contoh lain dengan banyak atribut seperti itu.

from Orange.data import Domain, Table
domain = Domain([attr for attr in in_data.domain.attributes
                 if attr.is_continuous or len(attr.values) <= 5],
                in_data.domain.class_vars)
out_data = Table(domain, in_data)
PythonScript-filtering.png


Contoh penggunaan widget Python Script berikut ini menunjukkan bagaimana membulatkan semua nilai dalam beberapa baris kode. Kali ini kita menggunakan wine.tab dan bulatkan semua nilai menjadi bilangan bulat.

import numpy as np
out_data = in_data.copy()
#copy, otherwise input data will be overwritten
np.round(out_data.X, 0, out_data.X)
PythonScript-round.png

Contoh penggunaan widget Python Script berikut ini memasukan noise Gaussian ke data. Sekali lagi kita membuat salinan data input, lalu berjalan melalui semua nilai dengan loop ganda untuk dan menambahkan noise random.

import random
from Orange.data import Domain, Table
new_data = in_data.copy()
for inst in new_data:
  for f in inst.domain.attributes:
    inst[f] += random.gauss(0, 0.02)
out_data = new_data
PythonScript-gauss.png


Contoh berikut ini menggunakan add-on Orange3-Text. Widget Script Python sangat berguna untuk preprocessing custom dalam text mining, mengekstraksi feature baru dari string, atau memanfaatkan fungsi nltk atau gensim yang canggih. Di bawah ini, kita hanya men-tokenisasi data input kita dari deerwester.tab dengan membaginya dengan spasi.

print('Running Preprocessing ...')
tokens = [doc.split(' ') for doc in in_data.documents]
print('Tokens:', tokens)
out_object = in_data
out_object.store_tokens(tokens)

Kita dapat menambahkan banyak langkah preprocessing lainnya untuk lebih menyesuaikan output. Output dari widget Python Script dapat digunakan dengan widget apa pun yang menerima jenis output yang dihasilkan script. Dalam hal ini, koneksi berwarna hijau, yang menandakan jenis input yang tepat untuk widget Word Cloud.

PythonScript-Example3.png

Referensi

Pranala Menarik