Hirdetés

Új hozzászólás Aktív témák

  • takitomi00

    újonc

    1. (20%)
    Hozz létre egy mat nevű 80*30-as méretű numerikus mátrixot, amit tölts fel teljesen 20-50 közötti véletlen számokkal!
    Készíts egy szoras nevű vektort, amibe tárold el a mat minden egyes sorának szórását!
    mat2 nevű mátrixba fűzd össze mat és szorás tartalmát!

    mat=matrix(sample(20:50, 80*50,replace=TRUE), nrow=80, ncol=50)
    szoras=numeric()
    for (i in 1:dim(mat)[1]) {
    szoras=sd(mat[i,], na.rm=T)
    }
    szoras
    mat2=cbind(mat, szoras)

    2. (20%)
    Készíts egy cserel nevű függvényt, ami bementként egy mátrixot és egy pozitív egész számot vár!
    A mátrixba helyezz el annyi NA értéket véletlenszerűen, amennyi a bemenő egész szám volt (a véletlen generálás során az ismétlődés megengedett)!
    Futtasd le a függvényt a mat mátrixra 25-ös értékkel

    cserel=function(m, k){
    for (1 in 1:k){
    v1<-0
    v2<-0
    v1<-sample(1:80,1,replace=T)
    v2<-sample(1:30,1,replace=T)
    m[v1,v2]<-NA
    }
    }
    cserel(mat,25)

    3. (20%)
    Jelenítsd meg egy diagramon az iris adathalmaz 3. oszlopának tartalmát: legyen főcím, tengelynevek és az x-tengely 15-sével legyen skálázva!
    Illesz az adatokra egy lineáris modellt model néven, aminek a függő paramétere a 3. oszlop, független paraméterei pedig az 1. és 4. oszlopok!
    Jelenítsd meg ploton a model által illesztett érétkeket piros színnel, 3-as vonalvastagságú folytonos vonallal!
    Jelenítsd meg az ábrán az illesztett regressziós függvényt is, minden értékét 2 tizedesjegy pontosággal megjelenítve!
    A hiba nevű numreikus vektorba tárold el, hogy abszolútértékben mekkora az eltérés az eredeti és az illesztett adatok között az egyes pontokban!

    plot(iris[,3], main="3. feladat", xlab="x-tengely", ylab="y-tengely", xaxt="n")
    y<-iris[,3]
    axis (1, at=seq(0,length(iris[,3]),15), font=1, las=1)
    model=lm(iris[,3]~iris[,1]+iris[,4])
    lines(model$fitted, col="red", lwd=3)
    text(50, max(y)+0, paste("y=",round(model$coef[1],2),"+",round(model$coef[2],2),"*x1+",round(model$coef[3],2),"*x2"))
    hiba<-numeric()

    for(i in 1:length(iris[,3])){
    hiba(i)<-abs(iris[,3](i)-model$fitted(i))
    }

    4. (20%)
    Jelenítsd meg egy diagramon az iris adathalmaz 2. oszlopának tartalmát folytonos vonallal: legyen főcím, tengelynevek és az x-tengely 25-sével legyen skálázva!
    Simítsd az adatokat 5-öd rendő mozgóátlag alkalmazásával és a simított adatokat kék színű, folytonos, 2-es vastagságú vonallal jelenítsd meg!
    A normalt nevű vektorba transzformáld át az eredeti adatokat a 2-6 értéktartományba az erre tanult módszerrel!

    plot(iris[,2], type="l", main="4. feladat", xlab="x-tengely", ylab="y-tengely", xaxt="n")
    axis (1, at=seq(0,length(iris[,2]),25), font=1, las=1)
    simitott=filter(iris[,2], rep(1/5,5), sides=2)
    lines(simitott, col="blue", lwd=2)

    new_min<-2
    new_max<-6
    normalt<-round(((iris[,2]-min(iris[,2]))/(max(iris[,2])-min(iris[,2])))*(new_max-new_min)+new_min,2)

    1.
    mydata néven mentsd el az iris adathalmazt, majd töröld belőle az utolsó, nemnumerikus oszlopot. Az oszlop és a sor nevű változókba mentsd el a mydata megfelelő dimenzióit!
    Készíts a pastecs csomag alkalmazásával leíró statisztikát a mydata-ról, amit a leirostat-ba mentesz el! (gyak03-1)
    Majd egészítsd ki egy sorral a végére, ami az egyes oszlopok moduszát tartalmazza! (gyak03-1)
    A plusz sor neve "modus" legyen!

    mydata<-iris[,1:4]
    sor<-dim(mydata)[1]
    oszlop<-dim(mydata)[2]
    library(pastecs)
    leirostat<-stat.desc(mydata)
    mod<-numeric()
    for (k in 1:4)
    mod[k]<-names(sort(table(mydata[,k]), decreasing=TRUE))[1]
    mod

    leirostat<-rbind(leirostat, mod)
    row.names(leirostat)[15]<-c("modus")
    leirostat

    2.
    Írjál egy valaszt nevű függvényt, mely 3 paramétert kap bementkünt: egy táblát (t) és két egyész számot (a,b).
    A bemenentként kapott tábla két egész számmal definiált oszlopában szereplő érték közül mindig a nagyobb jelenjen meg az új oszlopban!!
    Majd hívd meg (mydata, 1,4) paraméterekkel és az eredményt mentsd el mydata2-be!

    valaszt<-function (t,a,b) {
    egyik<-t[,a]
    masik<-t[,b]
    elem<-numeric()
    for (i in 1:dim(t)[1])
    elem<-max(egyik(i), masik(i), na.rm=TRUE)
    tt<-cbind(t, elem)
    return(tt)
    }
    mydata2<-valaszt(mydata,1,4)
    mydata2

    3. Jelenítsd meg boxploton a mydata2 oszlopainak tartalmát:a kiugró adatok ne látszódjanak, a főcím legyen: "Boxplot - iris"! (gyak03-1)
    A boxplotok színe sorban legyen: zöld, kék, piros, sárga és fekete!
    Az egyes adatsorokhoz tartozó alsó kvantiliseket számítsd ki a guant nevű vektorba és az ábrán azokat kösse össze egy barna szaggatott vonal a diagramon!

    box2<-boxplot(mydata2, col=(c("green","blue", "red", "yellow", "black")), outline=FALSE, main="Boxplot - iris")
    quant<-numeric()
    for(i in 1:dim(mydata2)[2])
    quant(i)<-quantile(mydata2[,i])[2]
    lines(quant, col="brown", lwd=2, lt=3)

    4.
    Készíts mod néven egy kétváltozós lineáris regressziót a mydata-ra mod néven: független paraméter az 1. oszlop, függőek pedig a 2. és 3. oszlopok! (gyak05-1)
    Majd a kapott modell alapján jósold meg y értékét az x1=5 és 6.7, illetve x2=4.5 és 6.2 értékekekre! (gyak05-2, gyak07-2)
    Az eredeti pontokat, a regressziós görbét (az új, jósolt pontokra is) és annak egyenletét is jelenítsd meg egy ploton! (gyak05-2)
    Az x tengely feliratai 25?t?s?vel kövessék egymást 90%kal elforgatva! A jósolt pontok legyenek zöld színűek és vastagabbak, mint a többi pont!

    x1<-mydata2[,2]
    x2<-mydata2[,3]
    y<-mydata2[,1]
    mod<-lm(y~x1+x2)
    josol<-data.frame(x1=c(5, 6.7), x2=c(4.5, 6.2))
    joslas<-predict(mod, newdata=josol)
    joslas
    plot(c(y, joslas), xaxt="n", ylab="y-értékek", xlab="")
    axis(1,at=seq(0,length(y)+2, 25), font=1, las=2)
    text(50, max(y)+0, paste("y=",round(mod$coef[1],2),"+",round(mod$coef[2],2),"*x1+",round(mod$coef[3],2),"*x2"))
    lines(c(fitted(mod), joslas), col="red", lwd=2)
    points(151,joslas[1], col="green", lwd=3)
    points(152,joslas[2], col="green", lwd=3)

    5.
    A DMwR csomag algae nevű adathalmazának 4-10 oszlopait (mind) töltsd be a mydata3-ba! Számold össze és írasd ki az összes adathiányok számát mydata3-ban egy db változóba!
    Az adathiányokat pótold a környező 6 elem súlyozott átlagával mydata4-be mentve az eredményt! (gyak05-2)
    Határozd meg, hogy hány klaszterbe érdemes az adathalmaz rekordjait sorolni (2-10 közötti klaszterszámokat vizsgáld meg)! (gyak06-1)
    A fenti eredmény ismeretében készítsd el a mydata4 klaszterezését a kmeans, kmedoid, hierarchikus (euklideszi távolságot használva) és sűrűség alapú klaszterezéssel (minPts=3, epszilon=0.5) katlag, kmed, hier és sur változokba mentve ezeket! (gyak06
    A 4 klaszterezés eredményét (melyik rekord melyik klaszterbe tartozik) fűzd az eredeti tábla mögé 4 oszlopba!
    A hierarchikus és a kmeans klaszterezés eredményét jelenítsd meg egy közös ploton, grafikusan is jelölve a kialakult klasztereket (kmaeans esetében rád van bízva a megjelenítés módja)!
    (gyak06)

    library(DMwR)
    mydata3<-algae[,4:10]
    db<-0
    for (i in 1:dim(mydata3)[1])
    for (j in 1:dim(mydata3)[2])
    if (is.na(mydata3[i,j]))
    db<-db+1
    db

    mydata4<-knnImputation(mydata3, k = 6, meth = "weighAvg")

    minta<-scale(mydata4)
    wss <- (nrow(minta)-1)*sum(apply(minta,2,var))
    for (i in 2:10) wss(i) <- sum(kmeans(minta, centers=i)$withinss)
    plot(1:10, wss, type="b", xlab="Number of Clusters",
    ylab="Within groups sum of squares")

    kn<-6
    katlag<-kmeans(minta,kn)
    library(cluster)
    kmed<-pam(minta, kn)
    d <- dist(minta, method = "euclidean")
    hier<-hclust(d, method="ward")
    library(fpc)
    sur<-dbscan(minta, 0.5, 3)

    minta2<-cbind(minta, katlag$cluster,kmed$cluster, cutree(hier, k=kn), sur$cluster)

    par(mfrow=c(1,2))
    plot(hier)
    rect.hclust(hier, k=kn, border="red")

    library(fpc)
    plotcluster(minta, katlag$cluster)

    [ Szerkesztve ]

  • haromegesz14

    aktív tag

    válasz takitomi00 #1 üzenetére

    Szerintem máskor ha ZH-ra kell a puska, logoszférában tedd közzé a saját topikodban :U ;]

    [ Szerkesztve ]

    10 féle ember létezik, aki ismeri a bináris számrendszert, és aki nem!

Új hozzászólás Aktív témák