我正在使用 PHP ML 庫中的 LeastSquares 回歸算法。我可以使用給定的示例成功運行代碼,但是當我嘗試運行數據庫中的數據時,我返回一個空白屏幕,并且服務器上沒有錯誤日志。以下是 ML 庫中的工作示例 php 文件:$samples = [[50000, 2017], [40000, 2015], [75000, 2014], [30000, 2016]]; $targets = [15000,13000,14500,14000];regression = new LeastSquares();$regression->train($samples, $targets);echo $regression->predict([60000, 2015]);// returns 4094.82這是我的腳本$sql = "SELECT price, mileage, year From table";$result = $conn->query($sql);if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { // The output I am looking for is [[mileage, year],[mileage, year]..] & [price, price,..] $mileage = $row['mileage']; $year = $row['year']; $price = $row['price']; }}regression = new LeastSquares();$regression->train($samples, $targets);echo $regression->predict([60000, 2015]);我正在嘗試使用數據庫表中的值重新創建 $samples 和 $targets 變量,但我沒有正確準備它。我嘗試 preg_replace 創建一個逗號分隔的字符串,但這不起作用,我懷疑這是因為它是一個字符串而不是整數值,但我不太確定。我編寫了所示的示例,因此可能是語法錯誤,但我只是想找出準備數組值的正確方法,如 ML 庫提供的那樣。當我做var_dump($samples);var_dump($targets);我明白了array(4) { [0]=> array(2) { [0]=> int(50000) [1]=> int(2017) } [1]=> array(2) { [0]=> int(40000) [1]=> int(2015) } [2]=> array(2) { [0]=> int(75000) [1]=> int(2014) } [3]=> array(2) { [0]=> int(30000) [1]=> int(2016) } }array(4) { [0]=> int(15000) [1]=> int(13000) [2]=> int(14500) [3]=> int(14000) }這就是我試圖通過 SQL 輸出實現的目標
1 回答

翻閱古今
TA貢獻1780條經驗 獲得超5個贊
您只需將從數據庫讀取的值推送到循環中的$samples和數組中即可。$targets可能還需要將它們轉換為整數,我也包含了該代碼。
$sql = "SELECT price, mileage, year From table";
$result = $conn->query($sql);
$samples = array();
$targets = array();
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$mileage = (int)$row['mileage'];
$year = (int)$row['year'];
$samples[] = array($mileage, $year);
$price = (int)$row['price'];
$targets[] = array($price);
}
}
請注意,如果沒有else子句,則該if ($result->num_rows > 0) {子句在此代碼中沒有任何用處,因為while循環不會執行任何$result->num_rows == 0操作(即結果集中沒有行)。
- 1 回答
- 0 關注
- 140 瀏覽
添加回答
舉報
0/150
提交
取消