metodj / appr Goto Github PK
View Code? Open in Web Editor NEWProject for course Data science using R. School year 2016/2017.
Project for course Data science using R. School year 2016/2017.
Opažam, da v Delnice_binarni_klasifikator.ipynb
na več mestih uporabljaš zanko for
. Ta je primerna, ko večkrat izvajaš isti ukaz ali zaporedje ukazov (npr. tvoj uvoz podatkov iz spletne strani), izogibaj pa se je, če samo gradiš vektor. Večina R-jevih funkcij namreč deluje na vektorjih. Če npr. uporabljaš gsub
, enostavno podaj vektor nizov, pa bo rezultat vektor nizov z opravljenimi spremembami. Če hočeš vektor nizov stakniti v en sam niz, uporabi paste
s parametrom collapse
.
Dodajanje, brisanje in spreminjanje stolpcev je morda najlažje s funkcijami select
(izbira oziroma opuščanje obstoječih stolpcev), rename
(preimenovanje navedenih stolpcev), mutate
(dodajanje novih stolpcev) in transmute
(zamenjava stolpcev z navedenimi) iz knjižnice dplyr
. Obenem lahko poskrbiš tudi za pretvorbo tipov, ki je najbolj enostavna s funkcijami parse_*
iz knjižnice readr
. Po branju iz spletne strani lahko torej tabelo urediš tako:
en <- locale("en", date_format = "%b %d, %Y", decimal_mark = ".", grouping_mark = ",")
tabela <- tabela %>% transmute(Date = parse_date(Date, locale = en),
Open = parse_number(Open, locale = en),
Close = parse_number(Close, locale = en)) %>%
mutate(Gibanje = ifelse(Open < Close, 1, 0))
Stolpcec Gibanje
je v resnici izpeljan, tako da ga v obliki tidy data ne bi smelo biti - izpelješ ga takrat, ko ga potrebuješ. Funkcija ifelse
sprejme tri vektorje (po potrebi ciklično dopolnjene do) iste dolžine in vrne vektor, ki je na mestih, kjer je prvi vektor TRUE
, enak drugemu vektorju, sicer pa tretjemu vektorju. Ko računaš delež, lahko tako stolpec Gibanje
sproti izračunaš:
tabela %>% transmute(Gibanje = ifelse(Open < Close, 1, 0)) %>% .$Gibanje %>% mean() %>% round(2)
Seveda ga je smiselno imeti poračunanega, če ga boš še kje potreboval.
Stolpec Date
je tipa datum - ggplot2
zna delati tudi s takimi podatki. Graf lahko zdaj enostavno narišeš tako:
ggplot(data = tabela, mapping = aes(x = Date, y = Close)) +
geom_point(size=0.75) + geom_smooth() + labs(x = "Date", y = "Dow Jones Index value ($)")
Pri uvozu novic uporabi funkcijo read_csv
iz knjižnice readr
- tako lahko določiš, da bo stolpec Date
istega tipa kot istoimenski stolpec v razpredelnici tabela
:
D2 <- read_csv("files/RedditNews.csv", col_types = cols(Date = col_date()))
Tako tudi ne bo potrebno pretvarjati datumov, saj so že v isti obliki.
Namesto aggregate
raje uporabi funkciji group_by
in summarise
iz knjižnice dplyr
, npr.
news <- D2 %>% group_by(Date) %>% summarise(News = paste(News, collapse = " "))
Tako ti tudi pravilno stakne nize skupaj. Nizi, ki se začnejo z b'
ali b"
, so že v datoteki RedditNews.csv
- to popravi že pred združevanjem. Raje kot merge
uporabi inner_join
iz knjižnice dplyr
:
test <- inner_join(tabela, news, by = "Date")
V Credit_model.ipynb
uvoziš datoteko loan.csv
, a te nimaš na repozitoriju. Tako kot prej svetujem, da raje za uvoz uporabiš read_csv
(s podčrtajem namesto s piko).
Glede na to, da delaš v Jupyter notebooku, me zanima, kako bi predstavil svoj projekt - ali boš samo pokazal delovne zvezke na GitHubu, ali bi rad sproti kaj poganjal v Jupyter notebooku? Če želiš, lahko predstavitev opraviš tudi iz svojega računalnika. Vidim, da imaš tudi že objavljeno Shiny aplikacijo.
Ko boš imel pripravljeno različico projekta za predstavitev, odpri issue na repozitoriju za zagovore, da dodam povezavo - tam si preberi natančnejša navodila.
Na zemljevidu v Credit_model.ipybn bi rad predstavil, dva podatka hkrati. S stopnjo barve (parameter fill) bi rad predstavili velikost dolga v zvezni državi, z barvo (parameter colour) pa razred povprečne plače gospodinjstev. Če uporabim oba parametra hkrati, dobim "neuporaben" zemljevid, saj mi obarva le meje oz. robove zveznih držav. Zanima me, kako bi na najboljši način prikazal oba podatka hkrati na enem grafu? Zanima me še, če bi lahko tudi izpisal okrajšave za imena zveznih državah na zemljevidu? Da bi npr. na območju Floride pisalo FL.
Svetujem, da v repozitorij dodaš datoteko .gitignore
, da lahko določiš, katere datoteke ne gredo v repozitorij. Trenutno imaš na repozitoriju mapo .ipynb_checkpoints
, ki pa tja ne spada, saj gre za zgodovino tvojih delovnih zvezkov - v ta namen imaš že git. Najbolje bo torej, da kar skopiraš datoteko .gitignore
iz vzorca in vanjo dodaš še vrstico
.ipynb_checkpoints
Mapo s tem imenom tudi pobriši iz repozitorija - če jo želiš pri sebi ohraniti, jo začasno premakni nekam drugam, potem naredi commit, da se zabeleži njen izbris, potem pa jo lahko vrneš (zaradi vnosa v .gitignore
ti je potem git več ne bo ponujal za nadaljnje commite).
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.