- ตัวดำเนินการ
-
เรียนรู้
เรียน Python ตัวอย่างที่รันได้, NumPy, pandas และอื่น ๆ เรียน AIโครงข่ายประสาท ML และ LLM ตั้งแต่ศูนย์ เรียน C และ C++ พอยน์เตอร์ หน่วยความจำ STL และ C++ สมัยใหม่ เรียน C#พื้นฐาน C#, OOP, LINQ, async และแบบฝึกหัด .NET เรียน Matplotlibกราฟเส้น แท่ง กระจาย และวงกลม พร้อมตัวแสดงภาพแบบโต้ตอบ อัลกอริทึม Python การค้นหา การเรียงลำดับ รีเคอร์ชัน และภาพจำลอง O(n) อัลกอริทึม C และ C++ เปรียบเทียบการเขียนด้วย C และ C++ เขียนโปรแกรมสำหรับเด็ก เรียนเขียนโปรแกรมผ่านการเล่น!
- โจทย์ใหม่
- สำหรับครูใหม่
- อัปเดต
- เลี้ยงกาแฟสักแก้ว
Naive Bayes สมมติว่าฟีเจอร์เป็นอิสระต่อกันเมื่อรู้คลาสแล้ว และเลือกคลาสที่มีคะแนนสูงที่สุด:
score(c) = P(c) × P(x₁ | c) × P(x₂ | c) × … × P(xₙ | c)
ฟีเจอร์เป็นหมวดหมู่ที่เข้ารหัสเป็นจำนวนเต็ม ประมาณความน่าจะเป็นจากข้อมูลฝึก:
- P(c) = (จำนวนตัวอย่างของคลาส c) / (จำนวนตัวอย่างทั้งหมด)
- P(xⱼ = v | c) = (จำนวนตัวอย่างของคลาส c ที่ฟีเจอร์ j เท่ากับ v + 1) / (จำนวนตัวอย่างของคลาส c + Kⱼ)
โดย Kⱼ คือจำนวนค่าที่ต่างกันของฟีเจอร์ j ในตัวอย่างฝึก และ query ส่วน +1 (การปรับเรียบแบบลาปลาซ) ป้องกันไม่ให้ค่าที่ไม่เคยเห็นทำให้คะแนนเป็น 0
คืนค่าคลาสที่มีคะแนนสูงที่สุด ถ้าคะแนนเท่ากันให้คืนคลาสที่น้อยกว่า การคูณความน่าจะเป็นเล็กๆ จำนวนมากอาจทำให้ค่าเล็กจนปัดเป็นศูนย์ จึงควรบวกลอการิทึมแทน
จงเขียน naive_bayes_predict(features, labels, query)
อินพุต
features: หนึ่งแถวของฟีเจอร์แบบหมวดหมู่ n ตัวต่อตัวอย่างฝึก
labels: คลาสของแต่ละตัวอย่างฝึก
query: ฟีเจอร์ n ตัวของตัวอย่างที่ต้องการจำแนก
เอาต์พุต
คืนค่าคลาสที่ทำนายได้
เงื่อนไข
1 ≤ จำนวนตัวอย่าง ≤ 1,000, 1 ≤ n ≤ 20
0 ≤ ค่าฟีเจอร์และป้ายกำกับแต่ละค่า ≤ 100
ตัวอย่าง
ตัวอย่างที่ 1
อินพุต:
features = [
[0, 1],
[0, 0],
[1, 1],
[1, 0],
[0, 1]
]
labels = [1, 1, 0, 0, 1]
query = [0, 1]
ผลลัพธ์ที่คาดหวัง:
1
คำอธิบาย
คลาส 1 มี 3 ตัวอย่างและคลาส 0 มี 2 ตัวอย่าง ฟีเจอร์ 1 มีค่า {0, 1} (K = 2) ฟีเจอร์ 2 มี {0, 1} (K = 2) score(1) = 3/5 × (3+1)/(3+2) × (2+1)/(3+2) = 0.6 × 0.8 × 0.6 = 0.288 score(0) = 2/5 × (0+1)/(2+2) × (1+1)/(2+2) = 0.4 × 0.25 × 0.5 = 0.05 คลาส 1 ชนะ
ตัวอย่างที่ 2
อินพุต:
features = [
[0],
[0],
[1]
]
labels = [0, 0, 1]
query = [2]
ผลลัพธ์ที่คาดหวัง:
0
คำอธิบาย
ค่า 2 ไม่เคยปรากฏ จึงได้ K = 3 (ค่า 0, 1 และ 2) score(0) = 2/3 × (0+1)/(2+3) ≈ 0.133 และ score(1) = 1/3 × (0+1)/(1+3) ≈ 0.083 ด้วยการปรับเรียบ ไม่มีคะแนนใดเป็น 0 และคลาส 0 ที่พบบ่อยกว่าชนะ
แหล่งอ้างอิง
-
ตัวอย่างที่ 1 ยังไม่ได้รันอินพุต:
features = [ [0, 1], [0, 0], [1, 1], [1, 0], [0, 1] ] labels = [1, 1, 0, 0, 1] query = [0, 1]ผลลัพธ์ที่คาดหวัง:1เอาต์พุตของคุณ -
ตัวอย่างที่ 2 ยังไม่ได้รันอินพุต:
features = [ [0], [0], [1] ] labels = [0, 0, 1] query = [2]ผลลัพธ์ที่คาดหวัง:0เอาต์พุตของคุณ
มี 4 การทดสอบที่ซ่อนอยู่จะถูกรันเมื่อคุณส่งคำตอบ ถ้าโค้ดไม่ผ่านข้อใด คุณจะเห็นการทดสอบข้อนั้น แก้โจทย์ให้ได้เพื่อดูทั้งหมด
Online JavaScript Runner
Write, run, and debug JavaScript or Node.js online in a full-featured browser IDE. Work with multiple files and packages, save your workspace, and collaborate in real time.
🚀 339,661 การดำเนินการทั้งหมด (665 ในเดือนนี้)
ฝึก JavaScript ด้วยโจทย์เขียนโค้ด
แก้โจทย์จริงใน editor นี้: รันทดสอบตัวอย่าง ส่งคำตอบ และรับรีวิวโค้ดจาก AI
⚡ เกี่ยวกับตัวรันโค้ด JavaScript (Node.js) ออนไลน์นี้
ตัวรันโค้ด JavaScript ของ CodeUtility ให้คุณเขียนและรันโค้ด JavaScript สมัยใหม่ได้ตรงบนเบราว์เซอร์ - ทันทีโดยไม่ต้องตั้งค่าใดๆ ใช้สภาพแวดล้อม Node.js จริงในการรันโค้ดของคุณอย่างปลอดภัยในคอนเทนเนอร์แบบ sandbox รองรับเวอร์ชัน 16, 18 และ 20.
เครื่องมือนี้เหมาะสำหรับทดสอบสคริปต์ Node.js, สำรวจไวยากรณ์ ES6+, หรือเรียนรู้แนวคิดพื้นฐานของการเขียนโปรแกรม JavaScript เช่น ลูป, ฟังก์ชัน, อาเรย์, พรอมิส และพฤติกรรมของ async/await
คุณยังสามารถใช้เพื่อตรวจสอบอัลกอริทึม ดีบักสคริปต์เล็กๆ หรือทดลองตรรกะรันไทม์ได้โดยไม่ต้องติดตั้ง Node ในเครื่อง เหมาะสำหรับผู้เรียน นักพัฒนาแบ็กเอนด์ หรือใครก็ตามที่ต้องการวิธีรันโค้ด JavaScript แบบรวดเร็วบนเบราว์เซอร์
มากกว่าเครื่องมือรันโค้ด
ใช้ตัวแก้ไขหลายไฟล์ เทอร์มินัลประมวลผลแบบแยกส่วน ไลบรารีเฉพาะรันไทม์ พื้นที่ทำงานถาวร การแชร์ และการทำงานร่วมกันแบบเรียลไทม์ได้จากตัวประมวลผลเดียวกัน
วิธีใช้ตัวประมวลผลนี้
เลือกรันไทม์ เปิดหรือสร้างไฟล์ เขียนโค้ด แล้วเลือกเรียกใช้ ผลลัพธ์จะแสดงในเทอร์มินัล ส่วนผู้ใช้ที่ลงชื่อเข้าใช้สามารถเก็บไฟล์ในพื้นที่ทำงาน ติดตั้งไลบรารี และทำงานร่วมกันผ่านการแชร์ได้
- เลือกเวอร์ชันแล้วแก้ไขไฟล์ปัจจุบัน หรือเปิดไฟล์อื่นในพื้นที่ทำงาน
- เรียกใช้โค้ด ป้อนข้อมูลในเทอร์มินัลเมื่อระบบร้องขอ และตรวจสอบประวัติการเรียกใช้ที่บันทึกไว้
- ใช้ไลบรารี เครื่องมือพื้นที่ทำงาน การแชร์ และแชท เมื่องานของคุณต้องใช้โค้ดมากกว่าหนึ่งส่วน
💡 คู่มือพื้นฐาน Node.js สำหรับมือใหม่
1. การประกาศตัวแปรและค่าคงที่
ใช้ let หรือ const สำหรับตัวแปรที่มีขอบเขตเป็นบล็อก โดย const ใช้สำหรับค่าคงที่
let x = 10;
const PI = 3.14;
let name = "Alice";
let isActive = true;
2. เงื่อนไข (if / switch)
ใช้ if, else if, else หรือ switch สำหรับควบคุมการไหลของโปรแกรม
let x = 2;
if (x === 1) {
console.log("หนึ่ง");
} else if (x === 2) {
console.log("สอง");
} else {
console.log("อื่น");
}
switch (x) {
case 1:
console.log("หนึ่ง");
break;
case 2:
console.log("สอง");
break;
default:
console.log("อื่น");
}
3. ลูป
ใช้ for, while และ forEach สำหรับวนซ้ำข้อมูล
for (let i = 0; i < 3; i++) {
console.log(i);
}
let n = 3;
while (n > 0) {
console.log(n);
n--;
}
4. อาเรย์
ใช้อาเรย์เพื่อเก็บรายการค่าที่มีลำดับ เข้าถึงด้วยดัชนี
let fruits = ["apple", "banana", "cherry"];
console.log(fruits[0]);
console.log(fruits.length);
5. การจัดการอาเรย์
ใช้เมธอดอย่าง push, pop, slice และ reverse
fruits.push("kiwi");
fruits.pop();
console.log(fruits.slice(0, 2));
console.log(fruits.reverse());
let squares = [1, 2, 3, 4, 5].map(x => x * x);
console.log(squares);
6. อินพุต/เอาต์พุตคอนโซล
ใช้ console.log สำหรับเอาต์พุต และโมดูล readline สำหรับอินพุต
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question("คุณชื่ออะไร? ", name => {
console.log(`สวัสดี, ${name}`);
rl.close();
});
7. ฟังก์ชัน
ฟังก์ชันสามารถประกาศหรือเขียนเป็น expression ก็ได้ ใน JavaScript สมัยใหม่มักใช้ฟังก์ชันแบบลูกศร (arrow function)
function greet(name) {
return `สวัสดี, ${name}`;
}
const add = (a, b) => a + b;
console.log(greet("Alice"));
console.log(add(2, 3));
8. อ็อบเจ็กต์ (แมป)
อ็อบเจ็กต์เก็บคู่คีย์-ค่า คล้ายพจนานุกรมหรือแมป
let person = { name: "Bob", age: 25 };
console.log(person.name);
console.log(person["age"]);
// Map ของ ES6
const map = new Map();
map.set("a", 1);
console.log(map.get("a"));
9. การจัดการข้อยกเว้น
ใช้ try, catch และ finally เพื่อจัดการข้อผิดพลาดอย่างปลอดภัย
try {
throw new Error("มีบางอย่างผิดพลาด");
} catch (e) {
console.log(e.message);
} finally {
console.log("เคลียร์งานหากจำเป็น");
}
10. การทำงานกับไฟล์ (File I/O)
ใช้โมดูล fs ของ Node.js เพื่ออ่านและเขียนไฟล์
const fs = require("fs");
fs.writeFileSync("test.txt", "สวัสดี ไฟล์");
const data = fs.readFileSync("test.txt", "utf8");
console.log(data);
11. การจัดการสตริง
ใช้เมธอดอย่าง trim(), toUpperCase(), replace() และ split()
let text = " Hello World ";
console.log(text.trim());
console.log(text.toUpperCase());
console.log(text.replace("Hello", "Hi"));
console.log(text.split(" "));
12. คลาสและอ็อบเจ็กต์
ES6+ รองรับ OOP ด้วยไวยากรณ์ class
class Person {
constructor(name) {
this.name = name;
}
greet() {
return `สวัสดี ฉันชื่อ ${this.name}`;
}
}
const p = new Person("Alice");
console.log(p.greet());
13. การอ้างอิง
อ็อบเจ็กต์และอาเรย์ใน JavaScript ถูกส่งผ่านโดยการอ้างอิง
function update(arr) {
arr.push("เปลี่ยนแล้ว");
}
let data = ["ดั้งเดิม"];
update(data);
console.log(data); // ["ดั้งเดิม", "เปลี่ยนแล้ว"]