Προς το περιεχόμενο

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • 0
fire4way

Feauter Vector Project for Java HELP!!!

Ερώτηση

 

Να κατασκευαστεί μια κλάση FeatureVector που αναπαριστά ένα διάνυσμα με ετικέτα π.χ. το

(3.2, 9.6, 8.2) με ετικέτα “label1”. Η κλάση θα πρέπει να ορίζεται σύμφωνα με το παρακάτω

υπόδειγμα. Ακολουθεί ημιτελές προσχέδιο της κλάσης το οποίο θα πρέπει να συμπληρώσετε

τις μεθόδους που παρουσιάζονται με κόκκινο χρώμα.

class FeatureVector

{

private double[] feature; // το τρέχον διάνυσμα

private String label; // η ετικέτα του τρέχοντος διανύσματος

public FeatureVector(int dimension)

/* θα δημιουργεί ένα μηδενικό διάνυσμα – δηλαδή θα έχει όλες τις συνιστώσες του

μηδέν – με πλήθος συνιστωσών dimension και label=”0”

 

public FeatureVector(double[] feature, String label)

/* θα δημιουργεί ένα νέο διάνυσμα με συνιστώσες τα στοιχεία του πίνακα feature και

ετικέτα label

 

public void setLabel(String label)

/* θα θέτει νέα ετικέτα label στο τρέχον διάνυσμα

 

public void setFeature(double value, int index)

/* θα θέτει νέα τιμή value στη συνιστώσα που βρίσκεται στη θέση index του τρέχοντος

διανύσματος

 

public double getFeature(int index)

/* θα επιστρέφει την τιμή της συνιστώσας που βρίσκεται στη θέση index του

τρέχοντος διανύσματος

 

public double[] getVector()

/* θα επιστρέφει τον πίνακα με τις συνιστώσες του τρέχοντος διανύσματος

 

public String getLabel()

/* θα επιστρέφει την ετικέτα του τρέχοντος διανύσματος

 

public String toString()

/* Θα επιστρέφει την αλφαριθμητική αναπαράσταση του διανύσματος. Οι συνιστώσες

θα τυπώνονται η μια δίπλα στην άλλη με ένα κενό ανάμεσά τους και στο τέλος δεξιά

μετά από ένα κενό θα τυπώνεται η ετικέτα του διανύσματος π.χ. 3.2 9.6 8.2 label1

 

public boolean equals(FeatureVector otherVector)

/* Θα επιστρέφει true εάν το otherVector έχει ίδιο μήκος, τιμές συνιστωσών και ετικέτα

με το τρέχον διάνυσμα

 

public double distanceEuclidean(FeatureVector otherVector)

/* Θα επιστρέφει την Ευκλείδεια απόσταση του τρέχοντος διανύσματος από ένα άλλο

διάνυσμα otherVector. Η ευκλείδεια απόσταση δυο διανυσμάτων v(v1, v2,…) και u(u1,

u2,…) ορίζεται ως d(v,u) = sqrt( (v1-u1)^2 + (v2-u2)^2 + …), όπου sqrt η συνάρτηση

της τετραγωνικής ρίζας.

 

public double distanceManhattan(FeatureVector otherVector)

/* Θα επιστρέφει την απόσταση Manhattan του τρέχοντος διανύσματος από ένα άλλο

διάνυσμα otherVector. Η απόσταση Manhattan δυο διανυσμάτων v(v1, v2,…) και

u(u1, u2,…) ορίζεται ως d(v,u) = abs(v1-u1) + abs(v2-u2) + …, όπου abs η

συνάρτηση της απόλυτης τιμής.

 

public double distanceIntersection(FeatureVector otherVector)

/* Θα επιστρέφει την απόσταση Intersection του τρέχοντος διανύσματος από ένα

άλλο διάνυσμα otherVector. Η απόσταση Intersection δυο διανυσμάτων v(v1, v2,…)

και u(u1, u2,…) ορίζεται ως d(v,u) = min(v1,u1)+ min(v2,u2)+… όπου min μια

συνάρτηση που επιστρέφει τη μικρότερη από τις δύο τιμές που δίνονται ως ορίσματά

της.

 

public FeatureVector select(int[] selection)

/* Θα επιστρέφει ένα διάνυσμα μικρότερο από το τρέχον διάνυσμα, το οποίο θα

αποτελείται μόνο από τις συνιστώσες του τρέχοντος διανύσματος που έχουμε

συμπληρώσει μέσα στον πίνακα selection. To νέο διάνυσμα που θα επιστρέφεται θα

πρέπει να έχει την ίδια ετικέτα με το αρχικό. Π.χ. αν έχουμε το διάνυσμα v=(2.3, 4.2,

9.0, 8.3, 6.0) με ετικέτα “label1” τότε, η κλήση της u=v.select(x), όπου int[] x={2,4}, θα

επιστρέψει ένα νέο διάνυσμα u΄=(9.0, 6.0) με ετικέτα “label1”.

 

}

Να κατασκευαστεί μια κλάση FeatureVectorFile η οποία θα αναπαριστά ένα αρχείο

διανυσμάτων. Η κλάση θα πρέπει να ορίζεται σύμφωνα με το παρακάτω υπόδειγμα.

class FeatureVectorFile

{

private String filename;

public FeatureVectorFile(String filename)

/* ∆ημιουργεί ένα νέο αντικείμενο της κλάσης FeatureVectorFile.

public void writeText(FeatureVector[] vectors)

/* Γράφει σε ένα αρχείο κειμένου με όνομα filename έναν πίνακα vectors που περιέχει

ανύσματα (αντικείμενα της κλάσης FeatureVector). Θυμηθείτε ότι οι συνιστώσες των

διανυσμάτων είναι τύπου double.

 

public FeatureVector[] readText()

/* ∆ιαβάζει από ένα αρχείο κειμένου με όνομα filename έναν πίνακα διανυσμάτων

vectors και τον επιστρέφει. Θυμηθείτε ότι οι συνιστώσες των διανυσμάτων είναι

τύπου double.

 

public void writeBinary(FeatureVector[] vectors)

/* Γράφει σε ένα δυαδικό αρχείο με όνομα filename έναν πίνακα vectors που περιέχει

ανύσματα (αντικείμενα της κλάσης FeatureVector). Θυμηθείτε ότι οι συνιστώσες των

διανυσμάτων είναι τύπου double. Από κάθε διάνυσμα θα γράφονται πρώτα οι

συνιστώσες του και μετά η ετικέτα του.

 

public FeatureVector[] readBinary()

/* ∆ιαβάζει από ένα δυαδικό αρχείο με όνομα filename έναν πίνακα διανυσμάτων

vectors και τον επιστρέφει. Θυμηθείτε ότι οι συνιστώσες των διανυσμάτων είναι

τύπου double. Από κάθε διάνυσμα θα διαβάζονται πρώτα οι συνιστώσες του και μετά

η ετικέτα του.

 

}

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

1 απάντηση σε αυτή την ερώτηση

Προτεινόμενες αναρτήσεις

Είναι πάγια πολιτική του forum τα μέλη να μη δίνουν αυτούσιες απαντήσεις εργασιών.

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
Επισκέπτης
Αυτό το θέμα είναι πλέον κλειστό για περαιτέρω απαντήσεις.
×
×
  • Δημιουργία νέου...