Yardım Talebi - PHP Veri Tabanından diziye aktarma

RamenChan

Yeni üye
21 Ocak 2019
24
6
istanbul

Merhabalar,

öncelikle size yapmak istediğim modülü anlatmak istiyorum, Lineer Regresyon hesaplayan bir modül yazarak grafiklerimde
oluşacak bir dalgalanmayı eğim ve sınır değerlerini kontrol ederek kendime mail ile uyarı verdirmeyi hedefliyorum. Regresyonu
ve eğimi hesaplıyorum ancak veri tabanımdan çektiğim veriyi diziye atamıyorum ben son 300 değeri sokmak istiyorum diziye ancak
sadece 1 tabe değer alıyor.

Kodu Sizler ile Paylaşıyorum Şimdiden Yadımlarınızdan dolayı Teşekkür eder Saygılarımı Sunarım.

Kod:
<?php
include("ayar.php");
function linear_regression($x, $y)
{

    // sayı noktalarını hesapla
    $n = count($x);

    // Her iki nokta dizisinin aynı boyutta olduğundan emin ol...
    if ($n != count($y)) {

        trigger_error("linear regression (): Koordinat dizilerindeki eleman sayısı uyuşmuyor.", E_USER_ERROR);
    }

    // toplamları hesapla
    $x_sum = array_sum($x);
    $y_sum = array_sum($y);

    $xx_sum = 0;
    $xy_sum = 0;

    for ($i = 0; $i < $n; $i++) {

        $xy_sum += ($x[$i] * $y[$i]);
        $xx_sum += ($x[$i] * $x[$i]);
    }

    // eğimi hesapla
    $m = (($n * $xy_sum) - ($x_sum * $y_sum)) / (($n * $xx_sum) - ($x_sum * $x_sum));

    // engellemeyi hesapla
    $b = ($y_sum - ($m * $x_sum)) / $n;

    // sonuç döndür
    return array("egim" => $m, "sınır" => $b);
}

$vQuery = $db->query("SELECT * FROM `datalog` WHERE `sensors_unique_id` = 'DE33023' ORDER BY id DESC LIMIT 11", PDO::FETCH_ASSOC);
$vQuery->execute();
if ($vQuery->rowCount()) {
    foreach ($vQuery as $row) {
        $resultVisco = $row["viskozite"];
        $resultVisco2 = $row["temperature"];
        echo var_dump(linear_regression($resultVisco ,$resultVisco2));
    }
}

//print_r($resultVisco)."-->"."<br>";
echo ("Eğim Hesaplama -> Örnekte viskozite ve sıcaklık kullanılmıştır<br>");
echo "MANUAL DEĞERLER --->";
$ornekSinir = array("1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.9", "1.7");
$ornekSinir2 = array("1.3", "1.1", "1.0", "1.0", "1.5", "1.0", "1.0", "1.0", "1.0", "1.9", "1.7");
//print_r($ornekSinir);

echo "--> Manual Değerler <--"."<br>"."<br>";
echo var_dump(linear_regression($ornekSinir2 , $ornekSinir));
echo "<br>"."<br>";
echo "--> OTONOM Değerler <--"."<br>"."<br>";

echo "<br>"."<br>";
print_r($resultVisco);
echo "<br>"."<br>";
print_r($resultVisco2);


/*

*/

Ekran Çıktısı Bu şekildedir.
Warning: array_sum() expects parameter 1 to be array, string given in /var/www/localhost.com/httpdocs/reg_ciz.php on line 26
array(2) { ["egim"]=> float(2.3333333333333) ["sınır"]=> float(0) } Eğim Hesaplama -> Örnekte viskozite ve sıcaklık kullanılmıştır
MANUAL DEĞERLER --->--> Manual Değerler <--

array(2) { ["egim"]=> float(0.8655462184874) ["sınır"]=> float(0.083193277310924) }

--> OTONOM Değerler <--



36.9531

70.3125

---------> Çözüm <---------
Kod:
$vQuery = $db->query("SELECT * FROM `datalog` WHERE `sensors_unique_id` = 'DE33023' ORDER BY id DESC LIMIT 11", PDO::FETCH_ASSOC);
$vQuery->execute();
if ($vQuery->rowCount()) {
    foreach ($vQuery as $row) {
        $resultVisco = $row["viskozite"];
        $resultVisco2 = $row["temperature"];
        echo var_dump(linear_regression($resultVisco ,$resultVisco2));
    }
}

//print_r($resultVisco)."-->"."<br>";
echo ("Eğim Hesaplama -> Örnekte viskozite ve sıcaklık kullanılmıştır<br>");
echo "MANUAL DEĞERLER --->";
$ornekSinir = array("1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.9", "1.7");
$ornekSinir2 = array("1.3", "1.1", "1.0", "1.0", "1.5", "1.0", "1.0", "1.0", "1.0", "1.9", "1.7");
//print_r($ornekSinir);

echo "--> Manual Değerler <--"."<br>"."<br>";
echo var_dump(linear_regression($ornekSinir2 , $ornekSinir));
echo "<br>"."<br>";
echo "--> OTONOM Değerler <--"."<br>"."<br>";

echo "<br>"."<br>";
print_r($resultVisco);
echo "<br>"."<br>";
print_r($resultVisco2);

bu kısmı şu şekilde değiştirerek ;
Kod:
//------------------------------------------------------------------------------------------------------------------------//
 //************************************************2.Sorgu*****************************************************************//
//------------------------------------------------------------------------------------------------------------------------//
$sorgu = $db->query("SELECT viskozite FROM `datalog` WHERE `sensors_unique_id` = 'DE33023' ORDER BY id DESC LIMIT 300");
$sorgu->execute();
$resultVisco = $sorgu->fetchAll(PDO::FETCH_COLUMN);
echo("Viskozite Değerlerinin Son 10 Datası Dizi Halinde Listelenmiştir.");
echo("<br><br><br>");
print_r($resultVisco);
echo("<br><br><br>");
  //------------------------------------------------------------------------------------------------------------------------//
 //************************************************2.Sorgu*****************************************************************//
//------------------------------------------------------------------------------------------------------------------------//
$sorgu2 = $db->query("SELECT temperature FROM `datalog` WHERE `sensors_unique_id` = 'DE33023' ORDER BY id DESC LIMIT 300");
$sorgu2->execute();
$resultVisco2 = $sorgu2->fetchAll(PDO::FETCH_COLUMN);
echo("Su Değerlerinin Son 10 Datası Dizi Halinde Listelenmiştir.");
echo("<br><br><br>");
print_r($resultVisco2);
echo("<br><br><br>");
echo("<center><h1>"."Viskozite ve Su Değerleri Alınarak Lineer Regresyon Hesaplanmıştır.Veri Sayısı --->10"."</h1></center>");
echo("<br><br><br>");
echo var_dump(linear_regression($resultVisco, $resultVisco2));


sorunu çözmüş bulunmaktayım. Belki birinin işine yarar diye açıklamış olayım iyi çalışmalar.



 
Son düzenleme:

RamenChan

Yeni üye
21 Ocak 2019
24
6
istanbul
Konuyu inceledim biraz araştırma yaptım benzer bir konu buldum sanırsam veri çekemiyor Bir göz atın https://medium.com/data-science-tr/makine-öğrenmesi-dersleri-4a-lineer-regresyon-30fe61248e93
hemen inceliyorum teşekkürlerimi sunuyorum. paylaşmış olduğunuz dökümanı inceledim vakit ayırmış olmanız bile benim için dğerli ancak benim sorunum php üzerindeki veri setini istenilen boyutta dizi elemanı olarak aktarma kısmında regresyon kısmında ki problemlerimi kendim dizi oluşturarak hesaplaya biliyorum.
 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.