如何解决PHP ML中LeastSquares::predict()参数不足的错误?
解决PHP ML中LeastSquares::predict()的ArgumentCountError错误
错误原因
你遇到的ArgumentCountError是因为调用predict()方法时未传入必要参数,Phpml\Regression\LeastSquares::predict()要求必须传入1组或多组特征样本作为参数;同时代码中$predict变量未定义,会导致后续计算R2分数时出现未定义变量错误。
修正后的代码
<?php require 'vendor/autoload.php'; // 加载数据 $data = new \Phpml\Dataset\CsvDataset(filepath: "./data/insurance.csv", features: 1, headingRow: true); // 预处理数据:拆分训练集和测试集 $dataset = new \Phpml\CrossValidation\RandomSplit($data, testSize: 0.2, seed: 156); // 训练模型 $regression = new \Phpml\Regression\LeastSquares(); $regression->train($dataset->getTrainSamples(), $dataset->getTrainLabels()); // 生成测试集预测结果(必须传入测试样本作为参数) $predict = $regression->predict($dataset->getTestSamples()); // 计算并输出R2分数 $score = \Phpml\Metric\Regression::r2Score($dataset->getTestLabels(), $predict); echo "r2score is : " . $score;
关键修改点
- 将
$regression->predict();改为$predict = $regression->predict($dataset->getTestSamples());:传入测试集样本作为predict()的参数,同时将预测结果赋值给$predict变量,供后续评估使用。 - 确保
$predict变量被正确定义,避免后续计算R2分数时出现未定义变量的错误。
补充说明
如果需要对单个样本进行预测,只需传入单个特征数组即可,例如:
// 单个样本预测 $singlePrediction = $regression->predict([[25]]); // 假设特征是数值类型
内容的提问来源于stack exchange,提问作者Arshado
相关产品推荐
相关产品推荐

