所以我向 ChatGPT 和另一个 AI 助手询问了这个问题,但结果是 0。
因此,从关于表格的图像中显示我想要的内容,“Baik”列表示数据集中的“kondisi”列中有多少个数字 1,与“sedang”相同: 2 ; “buruk”:3;
下面是我尝试修复的代码,因为结果是 0 :
<h4>Jumlah Cluster</h4>
<table class="table table-border">
<thead>
<th>Cluster</th>
<th>Jumlah</th>
<th>Baik</th>
<th>Sedang</th>
<th>Buruk</th>
</thead>
<tbody>
<?php
if ($this->session->userdata("kmeans_result") !== NULL) {
$res = array();
$kondisiCounts = array();
foreach ($this->session->userdata("kmeans_result") as $key) {
if (!isset($res[$key[1]])) {
$res[$key[1]] = 1;
} else {
$res[$key[1]]++;
}
// Check if 'kondisi' key exists and access it safely
$kondisi = $key['kondisi'] ?? 0;
// Count Kondisi values
$clusterId = $key[1];
if (!isset($kondisiCounts[$clusterId])) {
$kondisiCounts[$clusterId] = array('Baik' => 0, 'Sedang' => 0, 'Buruk' => 0);
}
// Increment the count based on the Kondisi value
if ($kondisi === 1) {
$kondisiCounts[$clusterId]['Baik']++;
} elseif ($kondisi === 2) {
$kondisiCounts[$clusterId]['Sedang']++;
} elseif ($kondisi === 3) {
$kondisiCounts[$clusterId]['Buruk']++;
}
}
foreach ($res as $key => $val) {
?>
<tr>
<td><?=$key?></td>
<td><?=$val?></td>
<td><?=$kondisiCounts[$key]['Baik'] ?? 0?></td>
<td><?=$kondisiCounts[$key]['Sedang'] ?? 0?></td>
<td><?=$kondisiCounts[$key]['Buruk'] ?? 0?></td>
</tr>
<?php
}
}
?>
</tbody>
</table>
数据集来自会话:$this->session->userdata("kmeans_result")
下面是显示结果并成为第一张图像中的数据集的代码,当我向 AI 询问时,我使用此代码作为参考,但他们的解决方案仍然在每列中给出结果 0 :
<h4>Hasil Cluster K-Means</h4>
<div class="table-responsive" id="export">
<table class="table table-border">
<thead>
<?php
foreach ($this->session->userdata("process_datasetindex") as $n => $v) {
if($n==0){
$obj = $v;
}
?>
<th><?=$v?></th>
<?php
}
?>
<th>Cluster</th>
</thead>
<?php
if($this->session->userdata("kmeans_result")!==NULL){
$resk = $this->session->userdata("kmeans_result");
aasort($resk,1);
foreach ($resk as $key) {
?>
<tr>
<td><?=$key[0]?></td>
<?php
foreach ($this->session->userdata("process_datasetindex") as $n => $v) {
if($n>0){
$attr = array_column($this->session->userdata("process_dataset"),$v,$obj);
?>
<td><?=$attr[$key[0]]?></td>
<?php
}
}
?>
<td><?=$key[1]?></td>
</tr>
<?php
}
}
?>
</table>
Nvm 我现在知道答案了,原来数据在不同的会话中位于不同的数组中,因此用于计算该集群中的数据的数据位于会话内部:
$this->session->userdata("kmeans_result")
。
但包括“kondisi”在内的其他数据都在里面$this->session->userdata("process_dataset")
因此,首先我合并数组并计算 1,2,3 的每个簇中“kondisi”列中有多少数据 1,2,3。完整代码:
<table class="table table-border">
<thead>
<th>Cluster</th>
<th>Kondisi Baik</th>
<th>Kondisi Sedang</th>
<th>Kondisi Buruk</th>
</thead>
<?php
if ($this->session->userdata("kmeans_result") !== NULL && $this->session->userdata("process_dataset") !== NULL) {
// Get the data from both session variables
$kmeansResult = $this->session->userdata("kmeans_result");
$processDataset = $this->session->userdata("process_dataset");
// Create an associative array to store cluster assignments based on the timestamp
$clusterAssignments = array();
foreach ($kmeansResult as $result) {
$timestamp = $result[0];
$cluster = $result[1];
$clusterAssignments[$timestamp] = $cluster;
}
// Initialize arrays to keep track of 'kondisi' counts for each cluster
$clusterKondisiCounts = array();
// Iterate through the dataset to count 'kondisi' values for each cluster
foreach ($processDataset as $data) {
$timestamp = $data['tanggaljam'];
$kondisi = $data['kondisi'];
// Get the cluster assignment for the current data point
$cluster = $clusterAssignments[$timestamp];
// Initialize the count for the cluster if it doesn't exist
if (!isset($clusterKondisiCounts[$cluster])) {
$clusterKondisiCounts[$cluster] = array(0, 0, 0);
}
// Increment the count for the corresponding 'kondisi' value
$clusterKondisiCounts[$cluster][$kondisi - 1]++;
}
// Display the counts in the table
foreach ($clusterKondisiCounts as $cluster => $counts) {
?>
<tr>
<td><?= $cluster ?></td>
<td><?= $counts[0] ?></td>
<td><?= $counts[1] ?></td>
<td><?= $counts[2] ?></td>
</tr>
<?php
}
}
?>
</table>