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

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

Δημοσ.

Τελικά αυτά τα κολπάκια της Python δεν παίζονται

Με αυτη την συναρτησούλα παίρνεις 1 πίνακα και βγάζεις τις γραμμικώς ανεξάρτητες γραμμές

(Απο 416 με το ζόρι βρήκε 19 για 20 αγνώστους...αλλά το μεγάλο δείγμα είναι στις 60000+ οπότε υπάρχουν ελπίδες :)  )

 

def LI_vecs(dim,mat):
    M=mat
    LI=[M[0]]
    for i in range(dim):
        tmp=[]
        for r in LI:
            tmp.append(r)
        tmp.append(M[i])                #set tmp=LI+[M[i]]
        if matrix_rank(tmp)>len(LI):    #test if M[i] is linearly independent from all (row) vectors in LI
            LI.append(M[i])             #note that matrix_rank does not need to take in a square matrix
    return LI
  • Απαντ. 42
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Δημοσ.
1 ώρα πριν, albNik είπε

Τα υποσυνολα απο ανεξαρτητες  ειναι παααααρα πολλα (2^10000..)

Γιατί έχω την εντύπωση ότι δεν είναι 2 στη n-οστή αλλά n! ;

Δημοσ.
36 λεπτά πριν, parsifal είπε

Γιατί έχω την εντύπωση ότι δεν είναι 2 στη n-οστή αλλά n! ;

Τα υποσυνολα (δυαδες + τριαδες +τετραδες...) ειναι Ν ανα 1 + Ν ανα 2 +... Ν ανα Ν = 2^Ν

Οπου Ν ανα Κ = Ν!/(Κ! (Ν-Κ)!)

  • Thanks 1
Δημοσ. (επεξεργασμένο)
5 hours ago, albNik said:

Υπαρχουν πααααρα πολλες διαφορετικες Ν.

Στην γενική περίπτωση φυσικά έχεις δίκιο, αλλά αν ισχύει αυτό που που μας είπε ο @masteripper στην αρχή, ότι δηλαδή οι περισσότερες των συναρτήσεων (πχ 80%-90%) έχουν κοινή λύση, τότε δεν αποκλείεται με σχετικά λίγες επαναλήψεις να βρίσκεις ένα υποσύνολο με κοινή λύση. Και αν βρεις ένα υποσύνολο που έχει λύση, μετά είναι εύκολο να τεστάρεις ποιες εξισώσεις ικανοποιεί, μειώνοντας ακόμα περισσότερο των αριθμό των εξισώσεων για την επόμενη επανάληψη.

That being said, κατά πάσα πιθανότητα το ποσοστό αυτό ήταν τόσο υψηλό γιατί είχε γραμμικά εξαρτημένες συναρτήσεις. Αν κρατήσει τις γραμμικά ανεξάρτητες δεν αποκλείεται να καταλήξει με μερικές δεκάδες εξισώσεων μόνο οπότε και σκέτο brute force θα δουλεύει.

4 hours ago, masteripper said:

οπότε τώρα πρέπει να βρω πως θα διαβάζει τις γραμμές απο το .csv ...να ελέγχει ποιές γραμμές είναι γραμμικώς ανεξάρτητες και εφόσον δεν είναι να πετάει τις γραμμικές εξαρτημένες και να φορτώνει την επόμενη γραμμή απο το .csv...εως ότου φτάσει στο Ν των αγνώστων.

Αυτά τα πράγματα γίνονται με vectors. Δεν διαβάζεις ένα ένα και ελέγχεις. Θα τελειώσεις του χρόνου έτσι. Θα βρεις κατευθείαν όλες τις γραμμικά ανεξάρτητες εξισώσεις. Πχ:

import io

import numpy as np
import pandas as pd
import sympy


csv_file = io.StringIO("""
0, 1, 0, 0
0, 0, 1, 0
0, 1, 1, 0
1, 0, 0, 1
""")

equations = pd.read_csv(csv_file, header=None).values
_, indices = sympy.Matrix(equations).T.rref()
li_equations = equations[indices,:]

To li_equations είναι το σύνολο με το οποίο δουλεύεις από εδώ και πέρα.

Επεξ/σία από pmav99
  • Thanks 1
Δημοσ. (επεξεργασμένο)
1 ώρα πριν, pmav99 είπε

Στην γενική περίπτωση φυσικά έχεις δίκιο, αλλά αν ισχύει αυτό που που μας είπε ο @masteripper στην αρχή, ότι δηλαδή οι περισσότερες των συναρτήσεων (πχ 80%-90%) έχουν κοινή λύση, τότε δεν αποκλείεται με σχετικά λίγες επαναλήψεις να βρίσκεις ένα υποσύνολο με κοινή λύση. Και αν βρεις ένα υποσύνολο που έχει λύση, μετά είναι εύκολο να τεστάρεις ποιες εξισώσεις ικανοποιεί, μειώνοντας ακόμα περισσότερο των αριθμό των εξισώσεων για την επόμενη επανάληψη.

That being said, κατά πάσα πιθανότητα το ποσοστό αυτό ήταν τόσο υψηλό γιατί είχε γραμμικά εξαρτημένες συναρτήσεις. Αν κρατήσει τις γραμμικά ανεξάρτητες δεν αποκλείεται να καταλήξει με μερικές δεκάδες εξισώσεων μόνο οπότε και σκέτο brute force θα δουλεύει.

Αυτά τα πράγματα γίνονται με vectors. Δεν διαβάζεις ένα ένα και ελέγχεις. Θα τελειώσεις του χρόνου έτσι. Θα βρεις κατευθείαν όλες τις γραμμικά ανεξάρτητες εξισώσεις. Πχ:


import io

import numpy as np
import pandas as pd
import sympy


csv_file = io.StringIO("""
0, 1, 0, 0
0, 0, 1, 0
0, 1, 1, 0
1, 0, 0, 1
""")

equations = pd.read_csv(csv_file, header=None).values
_, indices = sympy.Matrix(equations).T.rref()
li_equations = equations[indices,:]

To li_equations είναι το σύνολο με το οποίο δουλεύεις από εδώ και πέρα.

Καλό αυτό ...είναι μια καλη ιδέα να πάρω τις γραμμικές ανεξάρτητες με την 1η...

Επεξ/σία από masteripper
Δημοσ.
2 λεπτά πριν, Lanike71 είπε

Μόλις διάβασα το θέμα, ο νους μου πήγε σε machine learning και linear regression.

Χωρίς regularization για τις αποδεκτές λύσεις, θα δώσει μικρό loss το οποίο δεν σημαίνει, κατ’ ανάγκη, λύση των εξισώσεων. Δηλαδή, θα βρει τους συντελεστές των αγνώστων που παράγουν σταθερούς όρους κοντά σε αυτούς που θα πρέπει να παραχθούν, για όλες τις εξισώσεις. Δεν υπάρχει εγγύηση ότι θα βρεθεί ακριβώς το σύνολο των συντελεστών που λύνουν το μέγιστο υποσύνολο των εξισώσεων. 

Εάν, π.χ., έχεις

1) ax + by = 101

2) ax + by = 1

3) ax + by = 3

και δεν έχεις κάτι παραπάνω από ένα απλό regression approach, τότε θα βρει την λύση για την 1) και δεν θα νοιαστεί για τις 2) και 3). 

Υ.Γ. Στο παραπάνω παράδειγμα, κανείς μπορεί να έχει αποδοτική προσέγγιση με απλές τεχνικές ρύθμισης του εύρους τιμών των δεδομένων. Όμως ο σκοπός του απλού αυτού παραδείγματος ήταν άλλος. Ελπίζω να έγινε κατανοητός. 

Υ.Γ.2 Γενικά η regression approach δεν είναι και η καλύτερη για το συγκεκριμένο πρόβλημα. Βασικά, θαρρώ πως δεν είναι ML πρόβλημα. 

Δημοσ.
38 λεπτά πριν, Fortistis είπε

Χωρίς regularization για τις αποδεκτές λύσεις, θα δώσει μικρό loss το οποίο δεν σημαίνει, κατ’ ανάγκη, λύση των εξισώσεων. Δηλαδή, θα βρει τους συντελεστές των αγνώστων που παράγουν σταθερούς όρους κοντά σε αυτούς που θα πρέπει να παραχθούν, για όλες τις εξισώσεις. Δεν υπάρχει εγγύηση ότι θα βρεθεί ακριβώς το σύνολο των συντελεστών που λύνουν το μέγιστο υποσύνολο των εξισώσεων. 

Εάν, π.χ., έχεις

1) ax + by = 101

2) ax + by = 1

3) ax + by = 3

και δεν έχεις κάτι παραπάνω από ένα απλό regression approach, τότε θα βρει την λύση για την 1) και δεν θα νοιαστεί για τις 2) και 3). 

Υ.Γ. Στο παραπάνω παράδειγμα, κανείς μπορεί να έχει αποδοτική προσέγγιση με απλές τεχνικές ρύθμισης του εύρους τιμών των δεδομένων. Όμως ο σκοπός του απλού αυτού παραδείγματος ήταν άλλος. Ελπίζω να έγινε κατανοητός. 

Υ.Γ.2 Γενικά η regression approach δεν είναι και η καλύτερη για το συγκεκριμένο πρόβλημα. Βασικά, θαρρώ πως δεν είναι ML πρόβλημα. 

Δεν αντιλέγω, αλλά ήταν η πρώτη εντύπωση μόλις διάβασα το "περίπου λύση".

Ελπίζω να βρέθηκε άκρη.

Δημοσ. (επεξεργασμένο)
2 ώρες πριν, Lanike71 είπε

Μόλις διάβασα το θέμα, ο νους μου πήγε σε machine learning και linear regression.

Δεν είσαι μακριά....😁...αν και αφορά τα δεδομένα που τροφοδοτούν όχι το καθαυτό αλγόριθμο.

Επεξ/σία από masteripper
Δημοσ.
1 ώρα πριν, masteripper είπε

Δεν είσαι μακριά....😁...αν και αφορά τα δεδομένα που τροφοδοτούν όχι το καθαυτό αλγόριθμο.

Εντάξει.

Να σου δώσω το paypal μου για το μερίδιο...😁

Δημοσ.
16 λεπτά πριν, Lanike71 είπε

Εντάξει.

Να σου δώσω το paypal μου για το μερίδιο...😁

Αααα...μόνο ο Pmav προς το παρόν έχει δικαιώματα...έδωσε πολύ καλό κώδικα... το κακό είναι ότι είμαι ακόμα μακριά απο τον στόχο...

Δημοσ.
4 ώρες πριν, Lanike71 είπε

Εγώ νομίζω ότι οι συνθήκες ωρίμασαν για να δημιουργηθεί η πρώτη insomnia AI team...

και μετά θα σκοτωθούμε στο μοίρασμα.....😁..εκτος αν βάλουμε το ΑΙ να κάνει την μοιρασιά....😁

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...