R csv to libcsv September 30, 2016 at 1:07 pm

library(“e1071″, lib.loc=”~/Library/R/3.3/library”)
library(“SparseM”, lib.loc=”~/Library/R/3.3/library”)
data <- read.csv(‘/Users/margusja/Downloads/mnist_test.csv’)

dim(data)

x <- as.matrix(data[,2:785])
y <- data[,1]

xs <- as.matrix.csr(x)
write.matrix.csr(xs, y =y, file=”test.txt”)

Apache Spark hints September 28, 2016 at 1:22 pm

scala> val data = sc.textFile(“hdfs://path/to/file”)

scala> data.foreach(println) // print all lines from file

scala> def myPrint (a: String) : Unit = {println(a))

scala> data.foreach(a => myPrint(a)) // prints all lines from file using myPrint function

 

scala> case class EmailRow(row:String) // create class for row

scala> val df=data.map(x => EmailRow(x) ).toDF() // Create dataframe

// show dataframe

scala> df.show()

scala> df.select(“row”).show()

df.foreach(println)

 

// Create unique id column for dataset

scala> import org.apache.spark.sql.functions.monotonicallyIncreasingId

scala> val newDf = df.withColumn(“id”, monotonicallyIncreasingId) // adds a new columnt at the end of the current dataset

scala> val ds2 = newDf.select(“id”,”row”) // now id is the first columnt

scala> ds2.select(“id”, “row”).where(df(“row”).contains(“X-“)).show() //filter out smth and show it

scala> ds2.count() // how many lines do I have in my dataset

Create function in Apache Spark at 1:15 pm

scala> def myPrint (a: String) : Unit = {println(a)}
myPrint: (a: String)Unit

scala> myPrint(“Tere maailm”)
Tere maailm

 

tf–idf – term frequency inverted document frequency September 27, 2016 at 3:32 pm

Paari sõnaga enda jaoks, et meelest ei läheks.

tf-idf on meetod dokumentide (tekstide) ja üksiku sõna vahelise tähtsuse arvutamiseks.

Võtame näiteks lause: “Matemaatika on teaduste alus”. Lisaks on meil terve raamatukogutäis tekste. Kui me soovime saada meie lausele parimaid vasteid raamatukogust, siis on üsna suur tahtmine hakata otsima kui mitu korda mõni lause element esineb tekstis. On selge, et sellisel viisil leiame me väga palju meid mitte huvitavaid vasteid, sest sõna “on” esineb ilmselt väga paljudes tekstides ja domineerib. Sellist meetodit nimetatakse tf (term frequency).

Näiteks võtame kaks dokumenti sisuga:

d1: “Matemaatika on teaduste alus. Enamus reaalained on väga vajalikud igapäevaelus”

d2: “Muri on minu koer. Mari jalutab Muriga õues”

Lugedes kokku “on” dokumentides saame – d1: 2 ja d2: 1

Lugedes kokku sõnad dokumentides saame – dw1: 10 ja dw2: 8

Valem tf arvutamiseks on: tf(“on”, d1) = d/dw ehk d1 puhul 2/8 => 1/4 = 0.25 ja d2 puhul 1/8 = 0.125

idf valem on idf = log((kogu dokumentide arv)/(dokumendid, mis sisaldavad otsitavat stringi)) ehk antud näite puhul idf=log(2/2) => log 1 = 0. Ehk antud stringi mõju on väga väike, kuna ta esineb kõikides dokumentides.

Kui valida näidiseks “Matemaatika”, siis idf=log(2/1)=0.3 Samuti on näha, et dokumentide arvu tõustes harva esinevad stringid hakkavad oma kaalu koguma. Näiteks, kui meil oleks kolm dokumenti ja “Matemaatika” oleks esindatud ainult ühes dokumendis, siis idf=log(3/1)=0.477 Nelja dokumendi puhul oleks idf lausa 0.6

Lihtne Neuron Network September 24, 2016 at 10:44 pm

Kuna arvutusvõimsus on sealmaal, et närvivõrgustiku analoogial välja töötatud tehnoloogia on nüüdseks kasutatav, siis teen enda jaoks taas asja puust ja punaselt ette. Noh, et oleks võtta juhul kui keegi küsib ja jube tark paistan ka välja.

Et anda aimu neuron network toimimisest, defineerin lihtsa ülesande. Oletame, et mul on andmetabel kahest sisendist ja väljund.

0 ja 0 annab 0

0 ja 1 annab 0

1 ja 0 annab 1

1 ja 1 annab 1

ehk kaks sisendit ja üks väljund.

Sellise masina ehitamine, mis ülaltoodut realiseeriks oleks kindlasti lihtsam ehitada mõne teise tehnoloogiaga, aga siinkohal sobib antud ülesanne oma lihtsuse tõttu neuron network’i põhimõtet demonstreerima.

Neuron network kontekstis nimetatakse sisendeid ja väljundeid leieriteks (leyer ik.).

Meie sisendleieriks on paarid o,o ; 0,1 ; 1,0 ; 1,1 ja vastavateks väljundleieriteks 0, 0, 1, 1

Kuna on soov ehitada väga lihtne neuron networks, siis lihtsaim, mida ehitada saab on ühe neuroniga võrk (perceptron). Vt joonis 1.

screen-shot-2016-09-24-at-21-26-34

Joonis 1

Üks neuron network’i põhiomadusi on adapteeruda ehk vigadest õppida. Kui me mõnda aega oleme ütelnud oma neuron network’le, et sisend 0,0 ei ole mitte 1 vaid 0, siis lõpuks saab ta sellest aru. Kuidas?

Iga leieri ja neuroni vahel olev ühendus nn kaalutakse. Harilikult vahemikus -1 kuni 1.

Joonisel 2 oleme lisanud ka kaalud w1 ja w2. Ühtlasi tähistasime ka sisendid x1 ja x2 ja väljundi y.

screen-shot-2016-09-24-at-21-51-22

Joonis 2

Nüüd läheme neuroni kallale. Neuron teeb mingi tehte sisenditega ja kaaludega. Võrdleb arvutatud väljundit tegeliku väljundiga. Arvutab vea ja muudab vastavalt saadud veale kaalusid ja alustab otsast peale. Niikaua kuni viga on piisavalt väike e arvutatud väljund on piisavalt sarnane tegelikule väljundile.

Oluline on leida kaalud (w1,w2,w3), mis sobivad kõikide sisendi paaride korral.

Sisendite hulka on lisatud ka bias. Bias on üks võimalusi määrata kui tundlik on väljund. Mida suurem on bias seda lihtsam on neuronil võimalik aktiveeruda. Antud näite juures valime bias=1. Vt joonis 3.

screen-shot-2016-09-24-at-22-12-46

Joonis 3

Meie lihtne neuron omab arvutust:

algus:

  • w1 ja w2 = mingid suvalised kaalud vahemikus -1 kuni 1
  • y=(x1*w1)+(x2*w2)+(bias*w3)
  • error = õige vastus – y
  • Kui viga on liiga suur:
    • w1 = w1+error*x1
    • w2 = w2+error*x2
  • siis mine tagasi algusesse

lõpp;

 

Lihtsa programmi abil võin kinnitada, et peale tuhandet iteratsiooni on mul kaalud, mis sobivad iga paari jaoks.

w1:9.67299303, w2:-0.2078435, w3:-4.62963669

Proovime neid:

Paar 0,0:

  • (0*9.67299303)+(0*-0.2078435)+(1*-4.62963669)=-4,62963669

Paar 0,1

  • (0*9.67299303)+(1*-0.2078435)+(1*-4.62963669)=-4,83748019

Paar 1,0

  • (1*9.67299303)+(0*-0.2078435)+(1*-4.62963669)=5,04335634

Paar 1,1

  • (1*9.67299303)+(1*-0.2078435)+(1*-4.62963669)=4,83551284

Tulemus pole just see, mida ootasime? Nüüd tuleb mängu viimane element neuron network’is – activation function, mis kuulub iga neuroni juurde. Nagu ülalt näha, siis võime kirjeldada kolmikud:

0,0,-4.62963669

0,1,-4.83748019

1,0,5.04335634

1,1,4.83551284

Kui me nüüd laseme kolmikute viimase elemendi läbi lihtsa funktsiooni:

activationFunction (x):

Kui x <= 0 siis väljund 0

muidu väljund 1

end:

0,0,activationFunction(-4.62963669)

0,1,activationFunction(-4.83748019)

1,0,5,activationFunction(5.04335634)

1,1,activationFunction(4.83551284)

teisisõnu:

0,0,0

0,1,0

1,0,1

1,1,1

 

Kui nüüd selliseid ninaarseid tehteid teostavaid neoroneid omavahel kombineerida, siis saab lahendada suvalise loogikafunktsiooni.

Vot selline tubli loom on see neuron network. Masinad õpivad 🙂

Üleval käsitlesin “perceptron”i ehk sisendiks on 1 või null ja väljund on 0 kui (X1*W1)+(X2*W2)+b <=0 ja väljund on 1 kui (X1*W1)+(X2*W2)+b > 1

Sigmoid neuron

Sarnaneb perceptron’le aga sisendid on 0 ja 1 vahel reaalarvud ja väljundiks on sigmoid funktsioon:

screen-shot-2016-09-28-at-21-29-57

screen-shot-2016-09-28-at-21-31-19

 

 

 

 

HDP-2.5 Smartsense 1.3 installation issue via Ambari September 8, 2016 at 8:55 am

After automatic installation only one hst agent started in the same server where hst server was installed.

In others servers I saw following error:

[root@bigdata19 conf]# hst list-agents
Traceback (most recent call last):
File "/usr/sbin/hst-agent.py", line 420, in <module>
main(sys.argv)
File "/usr/sbin/hst-agent.py", line 403, in main
list_agents()
File "/usr/sbin/hst-agent.py", line 285, in list_agents
agents = server_api.list_agents()
File "/usr/hdp/share/hst/hst-agent/lib/hst_agent/ServerAPI.py", line 72, in list_agents
content = self.call(request)
File "/usr/hdp/share/hst/hst-agent/lib/hst_agent/ServerAPI.py", line 52, in call
self.cachedconnect = security.CachedHTTPSConnection(self.config)
File "/usr/hdp/share/hst/hst-agent/lib/hst_agent/security.py", line 111, in __init__
self.connect()
File "/usr/hdp/share/hst/hst-agent/lib/hst_agent/security.py", line 116, in connect
self.httpsconn.connect()
File "/usr/hdp/share/hst/hst-agent/lib/hst_agent/security.py", line 87, in connect
raise err
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:765)

The solution for me was just coping files from server where is working hts agent from directory /var/lib/smartsense/hst-agent/keys/* to non forking agent’s server to directory /var/lib/smartsense/hst-agent/keys/. Before it delete files from non working hts agent’s server /var/lib/smartsense/hst-agent/keys.

TaaraESP SHT21 Wifi Humidity sensor + emoncms September 6, 2016 at 9:15 pm

Ostsin paar sellist jubinat TaaraESP SHT21 Wifi Humidity sensor ja lisasin nad emoncms.eu keskkonda.

Isegi paari anduriga on asja visuaalne pool meeli paitav 🙂

Screen Shot 2016-09-06 at 22.11.10

Seadistamine on ülilihtne. Kui kodus wifi ühendus siis kulub üks minut, et esimesed andmed juba internetis.

ERROR: Bad Request;default/org.apache.falcon.FalconWebException::org.apache.falcon.FalconException: java.lang.RuntimeException: java.lang.IllegalStateException: Cluster entity vertex must exist July 26, 2016 at 10:40 am

Somehow I started to get: ERROR: Bad Request;default/org.apache.falcon.FalconWebException::org.apache.falcon.FalconException: java.lang.RuntimeException: java.lang.IllegalStateException: Cluster entity vertex must exist

I did not find any solution from internet.

The solution helped me was to delete directory /hadoop/falcon/embeddedmq from falcon server and restart falcon server.

Basys2 – four bit counter to seven segment led display July 6, 2016 at 9:44 pm

I have made clocks using different hardware.

Now I started with a Basys2.

I can count the seconds 🙂 that is the most important thing!

Stay tuned soon I have real clock with hours and minutes.

VHDL is cool May 23, 2016 at 10:02 pm

and_or_tb Screen Shot 2016-05-23 at 22.52.21