change 使用权重值百分比作为 normalize method

This commit is contained in:
2023-02-16 17:56:52 +08:00
parent addddbb8cc
commit 3e0266e782
2 changed files with 11 additions and 7 deletions

View File

@@ -27,17 +27,17 @@ export default async function handler(
} = JSON.parse(jsonStr);
// Normalization
// 使用 标准分数 算法 z = (x - mean) / std
// 使用 权重值 / 权重值之和
const { selections } = json;
const nums = Object.values(selections);
const mean = nums.reduce((a, b) => a + b) / nums.length;
const sum = nums.reduce((a, b) => a + b);
const mean = sum / nums.length;
const std = Math.sqrt(
nums.map((x) => Math.pow(x - mean, 2)).reduce((a, b) => a + b) /
nums.length
);
const normalizedNums = nums.map((x) => (std === 0 ? 0 : (x - mean) / std));
for (const index in selections) {
selections[index] = std === 0 ? 0 : (selections[index] - mean) / std;
selections[index] = selections[index] / sum;
}
users[json.user] = selections;
}
@@ -99,6 +99,10 @@ export default async function handler(
sortedHoursCount.sort((a, b) => a[1] - b[1]);
console.log("sortedHoursCount", sortedHoursCount);
console.log("sortedHoursCount.length", sortedHoursCount.length);
console.log(
"user.length === sorted.length",
Object.keys(users).length === sortedHoursCount.length
);
res.status(200).json(resp);
}

View File

@@ -6,8 +6,8 @@ const ReportPage = () => {
const getReport = async () => {
const resp = await fetch("/api/html").then((resp) => resp.json());
ref.current.innerHTML = resp.html;
const json: Record<string, string> = await fetch("/api/tool").then(
(resp) => resp.json()
const json: Record<string, string> = await fetch("/api/tool").then((resp) =>
resp.json()
);
const table = ref.current.children[0];
const tbody = table.children[table.children.length - 1];
@@ -47,4 +47,4 @@ const ReportPage = () => {
);
};
export default ReportPage;
export default ReportPage;