Linearni regrese – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Linearni regrese – C / C++ – Fórum – Programujte.comLinearni regrese – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
fnenks+1
Stálý člen
7. 6. 2013   #1
-
0
-

Tohle je dotázek na pokročilé, podařilo se mi najít kód na linearni regresi: http://www.oocities.org/…p/linreg.htm . Vzorec na linearni regresi je y=a+b*x. Já ale potřebuji vytvořit třídu na mnohonasobnou linearni regresi, kde mam treba 50 hodnot x. Tzn: y=a+b1*x1+b2*x2+b3*x3+..+b50*x50

Díky za jakýkoliv help, nedávám tomu ale moc, že se někdo ozve :)

Nahlásit jako SPAM
IP: 88.101.84.–
Reklama
Reklama
hlucheucho+10
Posthunter
7. 6. 2013   #2
-
0
-

První nástřel: z x a b bych vytvořil strukturu, ty naskládal do vektoru a ten projel cyklem

hu (= hlucheucho)

Nahlásit jako SPAM
IP: 188.95.60.–
fnenks+1
Stálý člen
7. 6. 2013   #3
-
0
-

Založil jsem git: https://github.com/Netix/Multiple-Linear-Regression

Zatím obsahuje třídu LinearRegression sloužící jako předloha.

Nahlásit jako SPAM
IP: 88.101.84.–
vitamin+8
Grafoman
7. 6. 2013   #4
-
0
-
Nahlásit jako SPAM
IP: 95.105.152.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
fnenks+1
Stálý člen
7. 6. 2013   #5
-
0
-

mňo, dával jsem link v prvním příspěvku..

Nahlásit jako SPAM
IP: 88.101.84.–
vitamin+8
Grafoman
7. 6. 2013   #6
-
0
-

#5 fnenks
A funguje to?
 

Nahlásit jako SPAM
IP: 95.105.152.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
fnenks+1
Stálý člen
7. 6. 2013   #7
-
0
-

Funguje, ale problém je že to je jenom y=a+b*x. Já potřebuji vytvořit třídu na mnohonásobnou lineárni regresi.

Nahlásit jako SPAM
IP: 88.101.84.–
fnenks+1
Stálý člen
8. 6. 2013   #8
-
0
-

Mno, takže jsem přemýšlel nad implementací, v konstruktoru bude pouze jeden parametr a to počet x, dále funkce pro přidání dat bude mít dva parametry, první parametr bude vektor, který musí obsahovat stejný počet hodnot, jak bylo uvedeno v konstruktoru, jinak to hodí výjmku, druhý parametr bude y. Dále pak další dvě funkce: getA(), a getB(), přičemž getB bude vrace vektor. V tomhle mam jasno. Problém je s celým algoritmem, který sám nezvládnu.

Nahlásit jako SPAM
IP: 88.101.84.–
fnenks+1
Stálý člen
Nahlásit jako SPAM
IP: 88.101.84.–
fnenks+1
Stálý člen
11. 6. 2013   #10
-
0
-

pořád nevyřešené :(

Nahlásit jako SPAM
IP: 88.101.84.–
hlucheucho+10
Posthunter
11. 6. 2013   #11
-
0
-

nechápu nad čím bádáš, mě to připomíná polynom na výpočet teploty z napětí u termočlánků.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
hlucheucho+10
Posthunter
11. 6. 2013   #12
-
0
-

   

#include <vector>

typedef struct {         //struktura predstavuje bn, xn
           float b;
           float x;
        } clen;

class Regrese
{
  private:
    float a;
    std::vector<clen> cleny;  //zde jsou ulozeny cleny b0, x0 ... bn, xn

  public:
    //potrebujes metody:
    int RekniPocetClenu();
    void Nastav_a(float a);
    int PridejClen(float b, float x);   //vrati pocet clenu po vlozeni
    float Regrese_y();  //vrati regresi
}

a implementace metody float Regrese_y():

float Regrese::Regrese_y()
{
  float y;
  std::vector<clen>::iterator it;  //iterator funguje jako pointer na prvky v kontejneru

  y = a;
  for(it = cleny.begin(); it != cleny.end(); it++)
  {
    y = y + it->b * it->x;  //zde se pristupuje k polozkam ve strukture
  }
  return y;
}

Přidat prvek do vektoru a určit, kolik jich je by nemělo být problém

hu

Nahlásit jako SPAM
IP: 195.178.67.–
fnenks+1
Stálý člen
11. 6. 2013   #13
-
0
-

tohle neni linearni regrese

Nahlásit jako SPAM
IP: 88.101.84.–
fnenks+1
Stálý člen
11. 6. 2013   #14
-
0
-

ja vkladam data x1, x2, x3, x4, x5, x6, x7, y

Nahlásit jako SPAM
IP: 88.101.84.–
fnenks+1
Stálý člen
11. 6. 2013   #15
-
0
-

posilam ukazku v excelu: https://dl.dropboxusercontent.com/u/97350425/linreg.xlsx

první tabulka je naplněna daty, druha tabulka z dat vytvori hodnoty do vzorce, 3ti tabulka aplikuje vzorec a dopocita Y

ja potrebuji ziskat ty hodnoty v druhe tabulce z dat prvni tabulky, ale ne v excelu, ale v c++

Nahlásit jako SPAM
IP: 88.101.84.–
vitamin+8
Grafoman
11. 6. 2013   #16
-
0
-

#15 fnenks
Mas problem s implementaciou alebo s tym ze nevies ako sa pocita mnohonasobna lin. regresia?

Nahlásit jako SPAM
IP: 95.105.152.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
hlucheucho+10
Posthunter
11. 6. 2013   #17
-
0
-

podle vzorce co jsi sem dal, je y výsledek, ten nevkládáš. Někde musíš vzít ty koeficienty a, b a někam je uložit. Stejně tak i x. To, co jsem napsal, je implementace vzorce, který jsi napsal. Problém asi je, že se snažíš implementovat něco, co nevíš, co je. Nastuduj si teorii - co je to regrese, její matematický popis, algoritmus a to implementuj.

Edit: Google toho najde dost.

hu

Nahlásit jako SPAM
IP: 188.95.60.–
fnenks+1
Stálý člen
12. 6. 2013   #18
-
0
-

#16 vitamin
mam problem s tim, ze nevim jak se pocita

Nahlásit jako SPAM
IP: 78.102.246.–
hlucheucho+10
Posthunter
12. 6. 2013   #19
-
0
-

zkus dát do Google multiple regression. V češtině to nevypadalo na něco použitelného.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
vitamin
~ Anonymní uživatel
1090 příspěvků
12. 6. 2013   #20
-
0
-

#18 fnenks


S vypoctom ti nepomozem, ale toto vyzera nadejne:

 

http://stackoverflow.com/questions/2910361/efficient-multiple-linear-regression-in-c-sharp-net

Najtazsie bude asi spravyt inverznu maticu.

Nahlásit jako SPAM
IP: 195.28.77.–
fnenks+1
Stálý člen
20. 6. 2013   #21
-
0
-

zkusím spíš napsat na matematické forum..

Nahlásit jako SPAM
IP: 88.101.84.–
fnenks+1
Stálý člen
21. 6. 2013   #22
-
0
-

nasel jsem skvely kod ktery skoro funguje jak ma, je to psane v C# takze celkem pohodicka prepsat do C++

zdroj: http://www.codeproject.com/Articles/25335/An-Algorithm-for-Weighted-Linear-Regression

porovnal jsem s excelem vysledek a sedi presne, akurat jeden problem ze vzorec je Y = X1 * A1 + X2 * A2 + .. + Xn * An;
Ja potrebuju vzorec Y = X1 * A1 + X2 * A2 + .. + Xn * An + B;

Nahlásit jako SPAM
IP: 88.101.84.–
hlucheucho+10
Posthunter
21. 6. 2013   #23
-
0
-

Vzorec co zde píšeš je prostý součet součinů k sobě příslušnému parametru a proměnné, nazval bych to "parametrickou funkcí s n parametry (A1 .. An) a n proměnnými (X1 .. Xn)". Jak ten vzorec implementovat jsem tu naznačil už před 10 dny - vektor o n prvcích, jehož prvky jsou struktury, které mají dvě položky - k sobě příslušné A a X. 

Pokud to není prostý součet součinů jak vyplývá ze vzorce, který zde uvádíš, tak máš problém matematicky špatně popsaný a to vede k jeho chybné implementaci.

Regrese je pojem ze statistiky, zřejmě bude přesně matematicky popsaný.

hu

Nahlásit jako SPAM
IP: 188.95.60.–
fnenks+1
Stálý člen
22. 6. 2013   #24
-
0
-

#23 hlucheucho
tohle nikdy nezvladnu, o linearni regresi nic nevim, nevim jak se pocita, tudiz mam problem s matematikou, ne s programovanim

Nahlásit jako SPAM
IP: 88.101.84.–
fnenks+1
Stálý člen
5. 7. 2013   #25
-
0
-

Třída na mnohonásobnou regresi hotova. Kdyby někdo potřeboval tak je na adrese: https://github.com/Netix/Multiple-Linear-Regression

Nahlásit jako SPAM
IP: 88.101.84.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 177 hostů

Podobná vlákna

Regrese a kolerace — založil Tomáš

Regrese dvou řad — založil fxmag

Linearni seznam — založil pidgin

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý