diff --git a/translated_images/00-Roadmap.4905d6567dff47532b9bfb8e0b8980fc6b0b1292eebb24181c1a9753b33bc0f5.id.png b/translated_images/00-Roadmap.4905d6567dff47532b9bfb8e0b8980fc6b0b1292eebb24181c1a9753b33bc0f5.id.png new file mode 100644 index 00000000..0011afde Binary files /dev/null and b/translated_images/00-Roadmap.4905d6567dff47532b9bfb8e0b8980fc6b0b1292eebb24181c1a9753b33bc0f5.id.png differ diff --git a/translated_images/00-Roadmap.4905d6567dff47532b9bfb8e0b8980fc6b0b1292eebb24181c1a9753b33bc0f5.ms.png b/translated_images/00-Roadmap.4905d6567dff47532b9bfb8e0b8980fc6b0b1292eebb24181c1a9753b33bc0f5.ms.png new file mode 100644 index 00000000..23845de6 Binary files /dev/null and b/translated_images/00-Roadmap.4905d6567dff47532b9bfb8e0b8980fc6b0b1292eebb24181c1a9753b33bc0f5.ms.png differ diff --git a/translated_images/00-Roadmap.4905d6567dff47532b9bfb8e0b8980fc6b0b1292eebb24181c1a9753b33bc0f5.vi.png b/translated_images/00-Roadmap.4905d6567dff47532b9bfb8e0b8980fc6b0b1292eebb24181c1a9753b33bc0f5.vi.png new file mode 100644 index 00000000..281a1f10 Binary files /dev/null and b/translated_images/00-Roadmap.4905d6567dff47532b9bfb8e0b8980fc6b0b1292eebb24181c1a9753b33bc0f5.vi.png differ diff --git a/translated_images/00-Title.8af36cd35da1ac555b678627fbdc6e320c75f0100876ea41d30ea205d3b08d22.id.png b/translated_images/00-Title.8af36cd35da1ac555b678627fbdc6e320c75f0100876ea41d30ea205d3b08d22.id.png new file mode 100644 index 00000000..2fa89709 Binary files /dev/null and b/translated_images/00-Title.8af36cd35da1ac555b678627fbdc6e320c75f0100876ea41d30ea205d3b08d22.id.png differ diff --git a/translated_images/00-Title.8af36cd35da1ac555b678627fbdc6e320c75f0100876ea41d30ea205d3b08d22.ms.png b/translated_images/00-Title.8af36cd35da1ac555b678627fbdc6e320c75f0100876ea41d30ea205d3b08d22.ms.png new file mode 100644 index 00000000..d3a79b3e Binary files /dev/null and b/translated_images/00-Title.8af36cd35da1ac555b678627fbdc6e320c75f0100876ea41d30ea205d3b08d22.ms.png differ diff --git a/translated_images/00-Title.8af36cd35da1ac555b678627fbdc6e320c75f0100876ea41d30ea205d3b08d22.vi.png b/translated_images/00-Title.8af36cd35da1ac555b678627fbdc6e320c75f0100876ea41d30ea205d3b08d22.vi.png new file mode 100644 index 00000000..a9ca814d Binary files /dev/null and b/translated_images/00-Title.8af36cd35da1ac555b678627fbdc6e320c75f0100876ea41d30ea205d3b08d22.vi.png differ diff --git a/translated_images/01-Definitions.1b14ddc9525dc0d9416a2f500f30e8652d21622f4e184100d405bd874ecbc17d.id.png b/translated_images/01-Definitions.1b14ddc9525dc0d9416a2f500f30e8652d21622f4e184100d405bd874ecbc17d.id.png new file mode 100644 index 00000000..e3e61fae Binary files /dev/null and b/translated_images/01-Definitions.1b14ddc9525dc0d9416a2f500f30e8652d21622f4e184100d405bd874ecbc17d.id.png differ diff --git a/translated_images/01-Definitions.1b14ddc9525dc0d9416a2f500f30e8652d21622f4e184100d405bd874ecbc17d.ms.png b/translated_images/01-Definitions.1b14ddc9525dc0d9416a2f500f30e8652d21622f4e184100d405bd874ecbc17d.ms.png new file mode 100644 index 00000000..967a44fc Binary files /dev/null and b/translated_images/01-Definitions.1b14ddc9525dc0d9416a2f500f30e8652d21622f4e184100d405bd874ecbc17d.ms.png differ diff --git a/translated_images/01-Definitions.1b14ddc9525dc0d9416a2f500f30e8652d21622f4e184100d405bd874ecbc17d.vi.png b/translated_images/01-Definitions.1b14ddc9525dc0d9416a2f500f30e8652d21622f4e184100d405bd874ecbc17d.vi.png new file mode 100644 index 00000000..0dfcdaed Binary files /dev/null and b/translated_images/01-Definitions.1b14ddc9525dc0d9416a2f500f30e8652d21622f4e184100d405bd874ecbc17d.vi.png differ diff --git a/translated_images/02-Ethics.728d166895302ab09c726c2a8385abbf7c3e36752f0ee933bba7ea8f78f5cdca.id.png b/translated_images/02-Ethics.728d166895302ab09c726c2a8385abbf7c3e36752f0ee933bba7ea8f78f5cdca.id.png new file mode 100644 index 00000000..a8c46275 Binary files /dev/null and b/translated_images/02-Ethics.728d166895302ab09c726c2a8385abbf7c3e36752f0ee933bba7ea8f78f5cdca.id.png differ diff --git a/translated_images/02-Ethics.728d166895302ab09c726c2a8385abbf7c3e36752f0ee933bba7ea8f78f5cdca.ms.png b/translated_images/02-Ethics.728d166895302ab09c726c2a8385abbf7c3e36752f0ee933bba7ea8f78f5cdca.ms.png new file mode 100644 index 00000000..c954ba1c Binary files /dev/null and b/translated_images/02-Ethics.728d166895302ab09c726c2a8385abbf7c3e36752f0ee933bba7ea8f78f5cdca.ms.png differ diff --git a/translated_images/02-Ethics.728d166895302ab09c726c2a8385abbf7c3e36752f0ee933bba7ea8f78f5cdca.vi.png b/translated_images/02-Ethics.728d166895302ab09c726c2a8385abbf7c3e36752f0ee933bba7ea8f78f5cdca.vi.png new file mode 100644 index 00000000..25aa0d1b Binary files /dev/null and b/translated_images/02-Ethics.728d166895302ab09c726c2a8385abbf7c3e36752f0ee933bba7ea8f78f5cdca.vi.png differ diff --git a/translated_images/03-DefiningData.f800817186949e078a81e7d5fdf9bb83834e561316bf790d4645c970ed4ff9ae.id.png b/translated_images/03-DefiningData.f800817186949e078a81e7d5fdf9bb83834e561316bf790d4645c970ed4ff9ae.id.png new file mode 100644 index 00000000..8c7db1eb Binary files /dev/null and b/translated_images/03-DefiningData.f800817186949e078a81e7d5fdf9bb83834e561316bf790d4645c970ed4ff9ae.id.png differ diff --git a/translated_images/03-DefiningData.f800817186949e078a81e7d5fdf9bb83834e561316bf790d4645c970ed4ff9ae.ms.png b/translated_images/03-DefiningData.f800817186949e078a81e7d5fdf9bb83834e561316bf790d4645c970ed4ff9ae.ms.png new file mode 100644 index 00000000..0cedddf6 Binary files /dev/null and b/translated_images/03-DefiningData.f800817186949e078a81e7d5fdf9bb83834e561316bf790d4645c970ed4ff9ae.ms.png differ diff --git a/translated_images/03-DefiningData.f800817186949e078a81e7d5fdf9bb83834e561316bf790d4645c970ed4ff9ae.vi.png b/translated_images/03-DefiningData.f800817186949e078a81e7d5fdf9bb83834e561316bf790d4645c970ed4ff9ae.vi.png new file mode 100644 index 00000000..52606533 Binary files /dev/null and b/translated_images/03-DefiningData.f800817186949e078a81e7d5fdf9bb83834e561316bf790d4645c970ed4ff9ae.vi.png differ diff --git a/translated_images/04-Statistics-Probability.cfc569d84a9f186748b69af7fdac3fa560329ccfc0e28994bfa65450ed78bdde.id.png b/translated_images/04-Statistics-Probability.cfc569d84a9f186748b69af7fdac3fa560329ccfc0e28994bfa65450ed78bdde.id.png new file mode 100644 index 00000000..930e99ae Binary files /dev/null and b/translated_images/04-Statistics-Probability.cfc569d84a9f186748b69af7fdac3fa560329ccfc0e28994bfa65450ed78bdde.id.png differ diff --git a/translated_images/04-Statistics-Probability.cfc569d84a9f186748b69af7fdac3fa560329ccfc0e28994bfa65450ed78bdde.ms.png b/translated_images/04-Statistics-Probability.cfc569d84a9f186748b69af7fdac3fa560329ccfc0e28994bfa65450ed78bdde.ms.png new file mode 100644 index 00000000..69b11259 Binary files /dev/null and b/translated_images/04-Statistics-Probability.cfc569d84a9f186748b69af7fdac3fa560329ccfc0e28994bfa65450ed78bdde.ms.png differ diff --git a/translated_images/04-Statistics-Probability.cfc569d84a9f186748b69af7fdac3fa560329ccfc0e28994bfa65450ed78bdde.vi.png b/translated_images/04-Statistics-Probability.cfc569d84a9f186748b69af7fdac3fa560329ccfc0e28994bfa65450ed78bdde.vi.png new file mode 100644 index 00000000..519e5b86 Binary files /dev/null and b/translated_images/04-Statistics-Probability.cfc569d84a9f186748b69af7fdac3fa560329ccfc0e28994bfa65450ed78bdde.vi.png differ diff --git a/translated_images/05-RelationalData.af50f5a3e50f7456f1d895326b489d3b3f608a09abc28933d5dc6ba6ac191565.id.png b/translated_images/05-RelationalData.af50f5a3e50f7456f1d895326b489d3b3f608a09abc28933d5dc6ba6ac191565.id.png new file mode 100644 index 00000000..a7c3795e Binary files /dev/null and b/translated_images/05-RelationalData.af50f5a3e50f7456f1d895326b489d3b3f608a09abc28933d5dc6ba6ac191565.id.png differ diff --git a/translated_images/05-RelationalData.af50f5a3e50f7456f1d895326b489d3b3f608a09abc28933d5dc6ba6ac191565.ms.png b/translated_images/05-RelationalData.af50f5a3e50f7456f1d895326b489d3b3f608a09abc28933d5dc6ba6ac191565.ms.png new file mode 100644 index 00000000..84693526 Binary files /dev/null and b/translated_images/05-RelationalData.af50f5a3e50f7456f1d895326b489d3b3f608a09abc28933d5dc6ba6ac191565.ms.png differ diff --git a/translated_images/05-RelationalData.af50f5a3e50f7456f1d895326b489d3b3f608a09abc28933d5dc6ba6ac191565.vi.png b/translated_images/05-RelationalData.af50f5a3e50f7456f1d895326b489d3b3f608a09abc28933d5dc6ba6ac191565.vi.png new file mode 100644 index 00000000..04f57584 Binary files /dev/null and b/translated_images/05-RelationalData.af50f5a3e50f7456f1d895326b489d3b3f608a09abc28933d5dc6ba6ac191565.vi.png differ diff --git a/translated_images/06-NoSQL.42a91ea0cd5769fe43e3c21554eb6d308b1fdf1435a6ae7c47b1a9dedab2da84.id.png b/translated_images/06-NoSQL.42a91ea0cd5769fe43e3c21554eb6d308b1fdf1435a6ae7c47b1a9dedab2da84.id.png new file mode 100644 index 00000000..490e9398 Binary files /dev/null and b/translated_images/06-NoSQL.42a91ea0cd5769fe43e3c21554eb6d308b1fdf1435a6ae7c47b1a9dedab2da84.id.png differ diff --git a/translated_images/06-NoSQL.42a91ea0cd5769fe43e3c21554eb6d308b1fdf1435a6ae7c47b1a9dedab2da84.ms.png b/translated_images/06-NoSQL.42a91ea0cd5769fe43e3c21554eb6d308b1fdf1435a6ae7c47b1a9dedab2da84.ms.png new file mode 100644 index 00000000..b40bd2a7 Binary files /dev/null and b/translated_images/06-NoSQL.42a91ea0cd5769fe43e3c21554eb6d308b1fdf1435a6ae7c47b1a9dedab2da84.ms.png differ diff --git a/translated_images/06-NoSQL.42a91ea0cd5769fe43e3c21554eb6d308b1fdf1435a6ae7c47b1a9dedab2da84.vi.png b/translated_images/06-NoSQL.42a91ea0cd5769fe43e3c21554eb6d308b1fdf1435a6ae7c47b1a9dedab2da84.vi.png new file mode 100644 index 00000000..e7c3a278 Binary files /dev/null and b/translated_images/06-NoSQL.42a91ea0cd5769fe43e3c21554eb6d308b1fdf1435a6ae7c47b1a9dedab2da84.vi.png differ diff --git a/translated_images/07-WorkWithPython.8bf4a5013718bef90cb3887355e158974494de38d2ad420b6cdce2fcd982cd89.id.png b/translated_images/07-WorkWithPython.8bf4a5013718bef90cb3887355e158974494de38d2ad420b6cdce2fcd982cd89.id.png new file mode 100644 index 00000000..f5fed51b Binary files /dev/null and b/translated_images/07-WorkWithPython.8bf4a5013718bef90cb3887355e158974494de38d2ad420b6cdce2fcd982cd89.id.png differ diff --git a/translated_images/07-WorkWithPython.8bf4a5013718bef90cb3887355e158974494de38d2ad420b6cdce2fcd982cd89.ms.png b/translated_images/07-WorkWithPython.8bf4a5013718bef90cb3887355e158974494de38d2ad420b6cdce2fcd982cd89.ms.png new file mode 100644 index 00000000..458f5312 Binary files /dev/null and b/translated_images/07-WorkWithPython.8bf4a5013718bef90cb3887355e158974494de38d2ad420b6cdce2fcd982cd89.ms.png differ diff --git a/translated_images/07-WorkWithPython.8bf4a5013718bef90cb3887355e158974494de38d2ad420b6cdce2fcd982cd89.vi.png b/translated_images/07-WorkWithPython.8bf4a5013718bef90cb3887355e158974494de38d2ad420b6cdce2fcd982cd89.vi.png new file mode 100644 index 00000000..fa15b259 Binary files /dev/null and b/translated_images/07-WorkWithPython.8bf4a5013718bef90cb3887355e158974494de38d2ad420b6cdce2fcd982cd89.vi.png differ diff --git a/translated_images/08-DataPreparation.e3b185c37958e96435267555edc6e54f2eb0f2d18745cfd550d3f9ba34877072.id.png b/translated_images/08-DataPreparation.e3b185c37958e96435267555edc6e54f2eb0f2d18745cfd550d3f9ba34877072.id.png new file mode 100644 index 00000000..96d0c40f Binary files /dev/null and b/translated_images/08-DataPreparation.e3b185c37958e96435267555edc6e54f2eb0f2d18745cfd550d3f9ba34877072.id.png differ diff --git a/translated_images/08-DataPreparation.e3b185c37958e96435267555edc6e54f2eb0f2d18745cfd550d3f9ba34877072.ms.png b/translated_images/08-DataPreparation.e3b185c37958e96435267555edc6e54f2eb0f2d18745cfd550d3f9ba34877072.ms.png new file mode 100644 index 00000000..8c978e56 Binary files /dev/null and b/translated_images/08-DataPreparation.e3b185c37958e96435267555edc6e54f2eb0f2d18745cfd550d3f9ba34877072.ms.png differ diff --git a/translated_images/08-DataPreparation.e3b185c37958e96435267555edc6e54f2eb0f2d18745cfd550d3f9ba34877072.vi.png b/translated_images/08-DataPreparation.e3b185c37958e96435267555edc6e54f2eb0f2d18745cfd550d3f9ba34877072.vi.png new file mode 100644 index 00000000..b6471571 Binary files /dev/null and b/translated_images/08-DataPreparation.e3b185c37958e96435267555edc6e54f2eb0f2d18745cfd550d3f9ba34877072.vi.png differ diff --git a/translated_images/09-Visualizing-Quantities.5c846edd805a5238789865f960b1e2615b6889c715852f02a20a722484d97fbb.id.png b/translated_images/09-Visualizing-Quantities.5c846edd805a5238789865f960b1e2615b6889c715852f02a20a722484d97fbb.id.png new file mode 100644 index 00000000..32806325 Binary files /dev/null and b/translated_images/09-Visualizing-Quantities.5c846edd805a5238789865f960b1e2615b6889c715852f02a20a722484d97fbb.id.png differ diff --git a/translated_images/09-Visualizing-Quantities.5c846edd805a5238789865f960b1e2615b6889c715852f02a20a722484d97fbb.ms.png b/translated_images/09-Visualizing-Quantities.5c846edd805a5238789865f960b1e2615b6889c715852f02a20a722484d97fbb.ms.png new file mode 100644 index 00000000..cae5464a Binary files /dev/null and b/translated_images/09-Visualizing-Quantities.5c846edd805a5238789865f960b1e2615b6889c715852f02a20a722484d97fbb.ms.png differ diff --git a/translated_images/09-Visualizing-Quantities.5c846edd805a5238789865f960b1e2615b6889c715852f02a20a722484d97fbb.vi.png b/translated_images/09-Visualizing-Quantities.5c846edd805a5238789865f960b1e2615b6889c715852f02a20a722484d97fbb.vi.png new file mode 100644 index 00000000..4f992f17 Binary files /dev/null and b/translated_images/09-Visualizing-Quantities.5c846edd805a5238789865f960b1e2615b6889c715852f02a20a722484d97fbb.vi.png differ diff --git a/translated_images/10-Visualizing-Distributions.8097fd8abd7221a1da63a156aaca497d844697e6a0ef0bbf8795e0f6a0bf7309.id.png b/translated_images/10-Visualizing-Distributions.8097fd8abd7221a1da63a156aaca497d844697e6a0ef0bbf8795e0f6a0bf7309.id.png new file mode 100644 index 00000000..8a3437a3 Binary files /dev/null and b/translated_images/10-Visualizing-Distributions.8097fd8abd7221a1da63a156aaca497d844697e6a0ef0bbf8795e0f6a0bf7309.id.png differ diff --git a/translated_images/10-Visualizing-Distributions.8097fd8abd7221a1da63a156aaca497d844697e6a0ef0bbf8795e0f6a0bf7309.ms.png b/translated_images/10-Visualizing-Distributions.8097fd8abd7221a1da63a156aaca497d844697e6a0ef0bbf8795e0f6a0bf7309.ms.png new file mode 100644 index 00000000..9cd443eb Binary files /dev/null and b/translated_images/10-Visualizing-Distributions.8097fd8abd7221a1da63a156aaca497d844697e6a0ef0bbf8795e0f6a0bf7309.ms.png differ diff --git a/translated_images/10-Visualizing-Distributions.8097fd8abd7221a1da63a156aaca497d844697e6a0ef0bbf8795e0f6a0bf7309.vi.png b/translated_images/10-Visualizing-Distributions.8097fd8abd7221a1da63a156aaca497d844697e6a0ef0bbf8795e0f6a0bf7309.vi.png new file mode 100644 index 00000000..df6663c7 Binary files /dev/null and b/translated_images/10-Visualizing-Distributions.8097fd8abd7221a1da63a156aaca497d844697e6a0ef0bbf8795e0f6a0bf7309.vi.png differ diff --git a/translated_images/11-Visualizing-Proportions.3e82f24af94d206e51faf9aff1b454a52c8e69887296ac549d6286450cc64d1f.id.png b/translated_images/11-Visualizing-Proportions.3e82f24af94d206e51faf9aff1b454a52c8e69887296ac549d6286450cc64d1f.id.png new file mode 100644 index 00000000..99f07690 Binary files /dev/null and b/translated_images/11-Visualizing-Proportions.3e82f24af94d206e51faf9aff1b454a52c8e69887296ac549d6286450cc64d1f.id.png differ diff --git a/translated_images/11-Visualizing-Proportions.3e82f24af94d206e51faf9aff1b454a52c8e69887296ac549d6286450cc64d1f.ms.png b/translated_images/11-Visualizing-Proportions.3e82f24af94d206e51faf9aff1b454a52c8e69887296ac549d6286450cc64d1f.ms.png new file mode 100644 index 00000000..265e7cd6 Binary files /dev/null and b/translated_images/11-Visualizing-Proportions.3e82f24af94d206e51faf9aff1b454a52c8e69887296ac549d6286450cc64d1f.ms.png differ diff --git a/translated_images/11-Visualizing-Proportions.3e82f24af94d206e51faf9aff1b454a52c8e69887296ac549d6286450cc64d1f.vi.png b/translated_images/11-Visualizing-Proportions.3e82f24af94d206e51faf9aff1b454a52c8e69887296ac549d6286450cc64d1f.vi.png new file mode 100644 index 00000000..051a989b Binary files /dev/null and b/translated_images/11-Visualizing-Proportions.3e82f24af94d206e51faf9aff1b454a52c8e69887296ac549d6286450cc64d1f.vi.png differ diff --git a/translated_images/12-Visualizing-Relationships.4466f9bd260f03dd29dc04933456ade8466d7ed2a37a98b78ed47f061488d57a.id.png b/translated_images/12-Visualizing-Relationships.4466f9bd260f03dd29dc04933456ade8466d7ed2a37a98b78ed47f061488d57a.id.png new file mode 100644 index 00000000..4cfa763f Binary files /dev/null and b/translated_images/12-Visualizing-Relationships.4466f9bd260f03dd29dc04933456ade8466d7ed2a37a98b78ed47f061488d57a.id.png differ diff --git a/translated_images/12-Visualizing-Relationships.4466f9bd260f03dd29dc04933456ade8466d7ed2a37a98b78ed47f061488d57a.ms.png b/translated_images/12-Visualizing-Relationships.4466f9bd260f03dd29dc04933456ade8466d7ed2a37a98b78ed47f061488d57a.ms.png new file mode 100644 index 00000000..c6744cab Binary files /dev/null and b/translated_images/12-Visualizing-Relationships.4466f9bd260f03dd29dc04933456ade8466d7ed2a37a98b78ed47f061488d57a.ms.png differ diff --git a/translated_images/12-Visualizing-Relationships.4466f9bd260f03dd29dc04933456ade8466d7ed2a37a98b78ed47f061488d57a.vi.png b/translated_images/12-Visualizing-Relationships.4466f9bd260f03dd29dc04933456ade8466d7ed2a37a98b78ed47f061488d57a.vi.png new file mode 100644 index 00000000..2b004979 Binary files /dev/null and b/translated_images/12-Visualizing-Relationships.4466f9bd260f03dd29dc04933456ade8466d7ed2a37a98b78ed47f061488d57a.vi.png differ diff --git a/translated_images/13-MeaningfulViz.4db6f1997e519908c85e4b9b3b54609b2e9e90a27be9423a9b956ab9a7329c80.id.png b/translated_images/13-MeaningfulViz.4db6f1997e519908c85e4b9b3b54609b2e9e90a27be9423a9b956ab9a7329c80.id.png new file mode 100644 index 00000000..bf76dbff Binary files /dev/null and b/translated_images/13-MeaningfulViz.4db6f1997e519908c85e4b9b3b54609b2e9e90a27be9423a9b956ab9a7329c80.id.png differ diff --git a/translated_images/13-MeaningfulViz.4db6f1997e519908c85e4b9b3b54609b2e9e90a27be9423a9b956ab9a7329c80.ms.png b/translated_images/13-MeaningfulViz.4db6f1997e519908c85e4b9b3b54609b2e9e90a27be9423a9b956ab9a7329c80.ms.png new file mode 100644 index 00000000..965474d8 Binary files /dev/null and b/translated_images/13-MeaningfulViz.4db6f1997e519908c85e4b9b3b54609b2e9e90a27be9423a9b956ab9a7329c80.ms.png differ diff --git a/translated_images/13-MeaningfulViz.4db6f1997e519908c85e4b9b3b54609b2e9e90a27be9423a9b956ab9a7329c80.vi.png b/translated_images/13-MeaningfulViz.4db6f1997e519908c85e4b9b3b54609b2e9e90a27be9423a9b956ab9a7329c80.vi.png new file mode 100644 index 00000000..d1f0a906 Binary files /dev/null and b/translated_images/13-MeaningfulViz.4db6f1997e519908c85e4b9b3b54609b2e9e90a27be9423a9b956ab9a7329c80.vi.png differ diff --git a/translated_images/14-DataScience-Lifecycle.2c9f277e4d69fbaadc814c2b295be5e2df8f006b80543a974d109324f0897b7b.id.png b/translated_images/14-DataScience-Lifecycle.2c9f277e4d69fbaadc814c2b295be5e2df8f006b80543a974d109324f0897b7b.id.png new file mode 100644 index 00000000..dab3b6ab Binary files /dev/null and b/translated_images/14-DataScience-Lifecycle.2c9f277e4d69fbaadc814c2b295be5e2df8f006b80543a974d109324f0897b7b.id.png differ diff --git a/translated_images/14-DataScience-Lifecycle.2c9f277e4d69fbaadc814c2b295be5e2df8f006b80543a974d109324f0897b7b.ms.png b/translated_images/14-DataScience-Lifecycle.2c9f277e4d69fbaadc814c2b295be5e2df8f006b80543a974d109324f0897b7b.ms.png new file mode 100644 index 00000000..05adfaf8 Binary files /dev/null and b/translated_images/14-DataScience-Lifecycle.2c9f277e4d69fbaadc814c2b295be5e2df8f006b80543a974d109324f0897b7b.ms.png differ diff --git a/translated_images/14-DataScience-Lifecycle.2c9f277e4d69fbaadc814c2b295be5e2df8f006b80543a974d109324f0897b7b.vi.png b/translated_images/14-DataScience-Lifecycle.2c9f277e4d69fbaadc814c2b295be5e2df8f006b80543a974d109324f0897b7b.vi.png new file mode 100644 index 00000000..9a43472a Binary files /dev/null and b/translated_images/14-DataScience-Lifecycle.2c9f277e4d69fbaadc814c2b295be5e2df8f006b80543a974d109324f0897b7b.vi.png differ diff --git a/translated_images/15-Analyzing.b501f3dbdc958f6fab0a507e307381c29e76707c3c41e174977e380a8b4063a9.id.png b/translated_images/15-Analyzing.b501f3dbdc958f6fab0a507e307381c29e76707c3c41e174977e380a8b4063a9.id.png new file mode 100644 index 00000000..99bd64f2 Binary files /dev/null and b/translated_images/15-Analyzing.b501f3dbdc958f6fab0a507e307381c29e76707c3c41e174977e380a8b4063a9.id.png differ diff --git a/translated_images/15-Analyzing.b501f3dbdc958f6fab0a507e307381c29e76707c3c41e174977e380a8b4063a9.ms.png b/translated_images/15-Analyzing.b501f3dbdc958f6fab0a507e307381c29e76707c3c41e174977e380a8b4063a9.ms.png new file mode 100644 index 00000000..3dc6135e Binary files /dev/null and b/translated_images/15-Analyzing.b501f3dbdc958f6fab0a507e307381c29e76707c3c41e174977e380a8b4063a9.ms.png differ diff --git a/translated_images/15-Analyzing.b501f3dbdc958f6fab0a507e307381c29e76707c3c41e174977e380a8b4063a9.vi.png b/translated_images/15-Analyzing.b501f3dbdc958f6fab0a507e307381c29e76707c3c41e174977e380a8b4063a9.vi.png new file mode 100644 index 00000000..f35c94bd Binary files /dev/null and b/translated_images/15-Analyzing.b501f3dbdc958f6fab0a507e307381c29e76707c3c41e174977e380a8b4063a9.vi.png differ diff --git a/translated_images/16-Communicating.f1d29cd7984442a4804d0df8b7e8438b1abc7c1fcf5b3471e89eaf2e9ba087d9.id.png b/translated_images/16-Communicating.f1d29cd7984442a4804d0df8b7e8438b1abc7c1fcf5b3471e89eaf2e9ba087d9.id.png new file mode 100644 index 00000000..dc43cc05 Binary files /dev/null and b/translated_images/16-Communicating.f1d29cd7984442a4804d0df8b7e8438b1abc7c1fcf5b3471e89eaf2e9ba087d9.id.png differ diff --git a/translated_images/16-Communicating.f1d29cd7984442a4804d0df8b7e8438b1abc7c1fcf5b3471e89eaf2e9ba087d9.ms.png b/translated_images/16-Communicating.f1d29cd7984442a4804d0df8b7e8438b1abc7c1fcf5b3471e89eaf2e9ba087d9.ms.png new file mode 100644 index 00000000..ca804299 Binary files /dev/null and b/translated_images/16-Communicating.f1d29cd7984442a4804d0df8b7e8438b1abc7c1fcf5b3471e89eaf2e9ba087d9.ms.png differ diff --git a/translated_images/16-Communicating.f1d29cd7984442a4804d0df8b7e8438b1abc7c1fcf5b3471e89eaf2e9ba087d9.vi.png b/translated_images/16-Communicating.f1d29cd7984442a4804d0df8b7e8438b1abc7c1fcf5b3471e89eaf2e9ba087d9.vi.png new file mode 100644 index 00000000..05409973 Binary files /dev/null and b/translated_images/16-Communicating.f1d29cd7984442a4804d0df8b7e8438b1abc7c1fcf5b3471e89eaf2e9ba087d9.vi.png differ diff --git a/translated_images/17-DataScience-Cloud.0df76ac874805c141082935ca07e8eca7d3790b83df25d641a807495e4f19de2.id.png b/translated_images/17-DataScience-Cloud.0df76ac874805c141082935ca07e8eca7d3790b83df25d641a807495e4f19de2.id.png new file mode 100644 index 00000000..ba2c3162 Binary files /dev/null and b/translated_images/17-DataScience-Cloud.0df76ac874805c141082935ca07e8eca7d3790b83df25d641a807495e4f19de2.id.png differ diff --git a/translated_images/17-DataScience-Cloud.0df76ac874805c141082935ca07e8eca7d3790b83df25d641a807495e4f19de2.ms.png b/translated_images/17-DataScience-Cloud.0df76ac874805c141082935ca07e8eca7d3790b83df25d641a807495e4f19de2.ms.png new file mode 100644 index 00000000..64202641 Binary files /dev/null and b/translated_images/17-DataScience-Cloud.0df76ac874805c141082935ca07e8eca7d3790b83df25d641a807495e4f19de2.ms.png differ diff --git a/translated_images/17-DataScience-Cloud.0df76ac874805c141082935ca07e8eca7d3790b83df25d641a807495e4f19de2.vi.png b/translated_images/17-DataScience-Cloud.0df76ac874805c141082935ca07e8eca7d3790b83df25d641a807495e4f19de2.vi.png new file mode 100644 index 00000000..2a360510 Binary files /dev/null and b/translated_images/17-DataScience-Cloud.0df76ac874805c141082935ca07e8eca7d3790b83df25d641a807495e4f19de2.vi.png differ diff --git a/translated_images/18-DataScience-Cloud.3a7292e8182b74ebfe5b246c0193c42592164aef625fe66e44194c19b2971f1a.id.png b/translated_images/18-DataScience-Cloud.3a7292e8182b74ebfe5b246c0193c42592164aef625fe66e44194c19b2971f1a.id.png new file mode 100644 index 00000000..8256bc93 Binary files /dev/null and b/translated_images/18-DataScience-Cloud.3a7292e8182b74ebfe5b246c0193c42592164aef625fe66e44194c19b2971f1a.id.png differ diff --git a/translated_images/18-DataScience-Cloud.3a7292e8182b74ebfe5b246c0193c42592164aef625fe66e44194c19b2971f1a.ms.png b/translated_images/18-DataScience-Cloud.3a7292e8182b74ebfe5b246c0193c42592164aef625fe66e44194c19b2971f1a.ms.png new file mode 100644 index 00000000..018151f6 Binary files /dev/null and b/translated_images/18-DataScience-Cloud.3a7292e8182b74ebfe5b246c0193c42592164aef625fe66e44194c19b2971f1a.ms.png differ diff --git a/translated_images/18-DataScience-Cloud.3a7292e8182b74ebfe5b246c0193c42592164aef625fe66e44194c19b2971f1a.vi.png b/translated_images/18-DataScience-Cloud.3a7292e8182b74ebfe5b246c0193c42592164aef625fe66e44194c19b2971f1a.vi.png new file mode 100644 index 00000000..707ce2de Binary files /dev/null and b/translated_images/18-DataScience-Cloud.3a7292e8182b74ebfe5b246c0193c42592164aef625fe66e44194c19b2971f1a.vi.png differ diff --git a/translated_images/19-DataScience-Cloud.177b38fb86301fc6f06dea5b25a58f8abe1aa762d3a815d811c83ee22d8a8d6a.id.png b/translated_images/19-DataScience-Cloud.177b38fb86301fc6f06dea5b25a58f8abe1aa762d3a815d811c83ee22d8a8d6a.id.png new file mode 100644 index 00000000..b2108afb Binary files /dev/null and b/translated_images/19-DataScience-Cloud.177b38fb86301fc6f06dea5b25a58f8abe1aa762d3a815d811c83ee22d8a8d6a.id.png differ diff --git a/translated_images/19-DataScience-Cloud.177b38fb86301fc6f06dea5b25a58f8abe1aa762d3a815d811c83ee22d8a8d6a.ms.png b/translated_images/19-DataScience-Cloud.177b38fb86301fc6f06dea5b25a58f8abe1aa762d3a815d811c83ee22d8a8d6a.ms.png new file mode 100644 index 00000000..945049bf Binary files /dev/null and b/translated_images/19-DataScience-Cloud.177b38fb86301fc6f06dea5b25a58f8abe1aa762d3a815d811c83ee22d8a8d6a.ms.png differ diff --git a/translated_images/19-DataScience-Cloud.177b38fb86301fc6f06dea5b25a58f8abe1aa762d3a815d811c83ee22d8a8d6a.vi.png b/translated_images/19-DataScience-Cloud.177b38fb86301fc6f06dea5b25a58f8abe1aa762d3a815d811c83ee22d8a8d6a.vi.png new file mode 100644 index 00000000..9bb11591 Binary files /dev/null and b/translated_images/19-DataScience-Cloud.177b38fb86301fc6f06dea5b25a58f8abe1aa762d3a815d811c83ee22d8a8d6a.vi.png differ diff --git a/translated_images/20-DataScience-Humanities.1d1a155f4d12a6679eb4f2be1074a456957f00affe8137c9cb22dedd6e7337e7.id.png b/translated_images/20-DataScience-Humanities.1d1a155f4d12a6679eb4f2be1074a456957f00affe8137c9cb22dedd6e7337e7.id.png new file mode 100644 index 00000000..61aa544b Binary files /dev/null and b/translated_images/20-DataScience-Humanities.1d1a155f4d12a6679eb4f2be1074a456957f00affe8137c9cb22dedd6e7337e7.id.png differ diff --git a/translated_images/20-DataScience-Humanities.1d1a155f4d12a6679eb4f2be1074a456957f00affe8137c9cb22dedd6e7337e7.ms.png b/translated_images/20-DataScience-Humanities.1d1a155f4d12a6679eb4f2be1074a456957f00affe8137c9cb22dedd6e7337e7.ms.png new file mode 100644 index 00000000..3bb1a11f Binary files /dev/null and b/translated_images/20-DataScience-Humanities.1d1a155f4d12a6679eb4f2be1074a456957f00affe8137c9cb22dedd6e7337e7.ms.png differ diff --git a/translated_images/20-DataScience-Humanities.1d1a155f4d12a6679eb4f2be1074a456957f00affe8137c9cb22dedd6e7337e7.vi.png b/translated_images/20-DataScience-Humanities.1d1a155f4d12a6679eb4f2be1074a456957f00affe8137c9cb22dedd6e7337e7.vi.png new file mode 100644 index 00000000..d0a0ee4d Binary files /dev/null and b/translated_images/20-DataScience-Humanities.1d1a155f4d12a6679eb4f2be1074a456957f00affe8137c9cb22dedd6e7337e7.vi.png differ diff --git a/translated_images/20-DataScience-RealWorld.976976229ee113426d617ef7a1a8cb8f80f7b7bca6860a167b1ca155b891415b.id.png b/translated_images/20-DataScience-RealWorld.976976229ee113426d617ef7a1a8cb8f80f7b7bca6860a167b1ca155b891415b.id.png new file mode 100644 index 00000000..886fed3c Binary files /dev/null and b/translated_images/20-DataScience-RealWorld.976976229ee113426d617ef7a1a8cb8f80f7b7bca6860a167b1ca155b891415b.id.png differ diff --git a/translated_images/20-DataScience-RealWorld.976976229ee113426d617ef7a1a8cb8f80f7b7bca6860a167b1ca155b891415b.ms.png b/translated_images/20-DataScience-RealWorld.976976229ee113426d617ef7a1a8cb8f80f7b7bca6860a167b1ca155b891415b.ms.png new file mode 100644 index 00000000..b19df513 Binary files /dev/null and b/translated_images/20-DataScience-RealWorld.976976229ee113426d617ef7a1a8cb8f80f7b7bca6860a167b1ca155b891415b.ms.png differ diff --git a/translated_images/20-DataScience-RealWorld.976976229ee113426d617ef7a1a8cb8f80f7b7bca6860a167b1ca155b891415b.vi.png b/translated_images/20-DataScience-RealWorld.976976229ee113426d617ef7a1a8cb8f80f7b7bca6860a167b1ca155b891415b.vi.png new file mode 100644 index 00000000..afad8b61 Binary files /dev/null and b/translated_images/20-DataScience-RealWorld.976976229ee113426d617ef7a1a8cb8f80f7b7bca6860a167b1ca155b891415b.vi.png differ diff --git a/translated_images/20-DataScience-Research.da434814c51b4ef8cd15a8efa161d066eff282b59286a2ab33b834434df96db9.id.png b/translated_images/20-DataScience-Research.da434814c51b4ef8cd15a8efa161d066eff282b59286a2ab33b834434df96db9.id.png new file mode 100644 index 00000000..ca16c6a7 Binary files /dev/null and b/translated_images/20-DataScience-Research.da434814c51b4ef8cd15a8efa161d066eff282b59286a2ab33b834434df96db9.id.png differ diff --git a/translated_images/20-DataScience-Research.da434814c51b4ef8cd15a8efa161d066eff282b59286a2ab33b834434df96db9.ms.png b/translated_images/20-DataScience-Research.da434814c51b4ef8cd15a8efa161d066eff282b59286a2ab33b834434df96db9.ms.png new file mode 100644 index 00000000..67f53a1f Binary files /dev/null and b/translated_images/20-DataScience-Research.da434814c51b4ef8cd15a8efa161d066eff282b59286a2ab33b834434df96db9.ms.png differ diff --git a/translated_images/20-DataScience-Research.da434814c51b4ef8cd15a8efa161d066eff282b59286a2ab33b834434df96db9.vi.png b/translated_images/20-DataScience-Research.da434814c51b4ef8cd15a8efa161d066eff282b59286a2ab33b834434df96db9.vi.png new file mode 100644 index 00000000..390bd8cf Binary files /dev/null and b/translated_images/20-DataScience-Research.da434814c51b4ef8cd15a8efa161d066eff282b59286a2ab33b834434df96db9.vi.png differ diff --git a/translated_images/20-DataScience-Sustainability.d4097bc684431da6b8f4b5f60896b6db7ca915f2366774416b2cd9939609a0c4.id.png b/translated_images/20-DataScience-Sustainability.d4097bc684431da6b8f4b5f60896b6db7ca915f2366774416b2cd9939609a0c4.id.png new file mode 100644 index 00000000..3585de44 Binary files /dev/null and b/translated_images/20-DataScience-Sustainability.d4097bc684431da6b8f4b5f60896b6db7ca915f2366774416b2cd9939609a0c4.id.png differ diff --git a/translated_images/20-DataScience-Sustainability.d4097bc684431da6b8f4b5f60896b6db7ca915f2366774416b2cd9939609a0c4.ms.png b/translated_images/20-DataScience-Sustainability.d4097bc684431da6b8f4b5f60896b6db7ca915f2366774416b2cd9939609a0c4.ms.png new file mode 100644 index 00000000..51bc2a14 Binary files /dev/null and b/translated_images/20-DataScience-Sustainability.d4097bc684431da6b8f4b5f60896b6db7ca915f2366774416b2cd9939609a0c4.ms.png differ diff --git a/translated_images/20-DataScience-Sustainability.d4097bc684431da6b8f4b5f60896b6db7ca915f2366774416b2cd9939609a0c4.vi.png b/translated_images/20-DataScience-Sustainability.d4097bc684431da6b8f4b5f60896b6db7ca915f2366774416b2cd9939609a0c4.vi.png new file mode 100644 index 00000000..9c11f8b1 Binary files /dev/null and b/translated_images/20-DataScience-Sustainability.d4097bc684431da6b8f4b5f60896b6db7ca915f2366774416b2cd9939609a0c4.vi.png differ diff --git a/translated_images/2D-wb.ae22fdd33936507a41e3af22e11e4903b04a9be973b23a4e05214efaccfd66c8.id.png b/translated_images/2D-wb.ae22fdd33936507a41e3af22e11e4903b04a9be973b23a4e05214efaccfd66c8.id.png new file mode 100644 index 00000000..9876f25c Binary files /dev/null and b/translated_images/2D-wb.ae22fdd33936507a41e3af22e11e4903b04a9be973b23a4e05214efaccfd66c8.id.png differ diff --git a/translated_images/2D-wb.ae22fdd33936507a41e3af22e11e4903b04a9be973b23a4e05214efaccfd66c8.ms.png b/translated_images/2D-wb.ae22fdd33936507a41e3af22e11e4903b04a9be973b23a4e05214efaccfd66c8.ms.png new file mode 100644 index 00000000..9876f25c Binary files /dev/null and b/translated_images/2D-wb.ae22fdd33936507a41e3af22e11e4903b04a9be973b23a4e05214efaccfd66c8.ms.png differ diff --git a/translated_images/2D-wb.ae22fdd33936507a41e3af22e11e4903b04a9be973b23a4e05214efaccfd66c8.vi.png b/translated_images/2D-wb.ae22fdd33936507a41e3af22e11e4903b04a9be973b23a4e05214efaccfd66c8.vi.png new file mode 100644 index 00000000..9876f25c Binary files /dev/null and b/translated_images/2D-wb.ae22fdd33936507a41e3af22e11e4903b04a9be973b23a4e05214efaccfd66c8.vi.png differ diff --git a/translated_images/2D.b3342157139dd804f8fb5adc58721f77e59273fc980175b4ef735ec18686713c.id.png b/translated_images/2D.b3342157139dd804f8fb5adc58721f77e59273fc980175b4ef735ec18686713c.id.png new file mode 100644 index 00000000..3a85f737 Binary files /dev/null and b/translated_images/2D.b3342157139dd804f8fb5adc58721f77e59273fc980175b4ef735ec18686713c.id.png differ diff --git a/translated_images/2D.b3342157139dd804f8fb5adc58721f77e59273fc980175b4ef735ec18686713c.ms.png b/translated_images/2D.b3342157139dd804f8fb5adc58721f77e59273fc980175b4ef735ec18686713c.ms.png new file mode 100644 index 00000000..3a85f737 Binary files /dev/null and b/translated_images/2D.b3342157139dd804f8fb5adc58721f77e59273fc980175b4ef735ec18686713c.ms.png differ diff --git a/translated_images/2D.b3342157139dd804f8fb5adc58721f77e59273fc980175b4ef735ec18686713c.vi.png b/translated_images/2D.b3342157139dd804f8fb5adc58721f77e59273fc980175b4ef735ec18686713c.vi.png new file mode 100644 index 00000000..3a85f737 Binary files /dev/null and b/translated_images/2D.b3342157139dd804f8fb5adc58721f77e59273fc980175b4ef735ec18686713c.vi.png differ diff --git a/translated_images/2d-plot.c504786f439bd7ebceebf2465c70ca3b124103e06c7ff7214bf24e26f7aec21e.id.png b/translated_images/2d-plot.c504786f439bd7ebceebf2465c70ca3b124103e06c7ff7214bf24e26f7aec21e.id.png new file mode 100644 index 00000000..3182e496 Binary files /dev/null and b/translated_images/2d-plot.c504786f439bd7ebceebf2465c70ca3b124103e06c7ff7214bf24e26f7aec21e.id.png differ diff --git a/translated_images/2d-plot.c504786f439bd7ebceebf2465c70ca3b124103e06c7ff7214bf24e26f7aec21e.ms.png b/translated_images/2d-plot.c504786f439bd7ebceebf2465c70ca3b124103e06c7ff7214bf24e26f7aec21e.ms.png new file mode 100644 index 00000000..511bb4b2 Binary files /dev/null and b/translated_images/2d-plot.c504786f439bd7ebceebf2465c70ca3b124103e06c7ff7214bf24e26f7aec21e.ms.png differ diff --git a/translated_images/2d-plot.c504786f439bd7ebceebf2465c70ca3b124103e06c7ff7214bf24e26f7aec21e.vi.png b/translated_images/2d-plot.c504786f439bd7ebceebf2465c70ca3b124103e06c7ff7214bf24e26f7aec21e.vi.png new file mode 100644 index 00000000..cf312097 Binary files /dev/null and b/translated_images/2d-plot.c504786f439bd7ebceebf2465c70ca3b124103e06c7ff7214bf24e26f7aec21e.vi.png differ diff --git a/translated_images/3d.0cec12bcc60f0ce7284c63baed1411a843e24716f7d7425de878715ebad54a15.id.png b/translated_images/3d.0cec12bcc60f0ce7284c63baed1411a843e24716f7d7425de878715ebad54a15.id.png new file mode 100644 index 00000000..f3c88464 Binary files /dev/null and b/translated_images/3d.0cec12bcc60f0ce7284c63baed1411a843e24716f7d7425de878715ebad54a15.id.png differ diff --git a/translated_images/3d.0cec12bcc60f0ce7284c63baed1411a843e24716f7d7425de878715ebad54a15.ms.png b/translated_images/3d.0cec12bcc60f0ce7284c63baed1411a843e24716f7d7425de878715ebad54a15.ms.png new file mode 100644 index 00000000..d4d3c761 Binary files /dev/null and b/translated_images/3d.0cec12bcc60f0ce7284c63baed1411a843e24716f7d7425de878715ebad54a15.ms.png differ diff --git a/translated_images/3d.0cec12bcc60f0ce7284c63baed1411a843e24716f7d7425de878715ebad54a15.vi.png b/translated_images/3d.0cec12bcc60f0ce7284c63baed1411a843e24716f7d7425de878715ebad54a15.vi.png new file mode 100644 index 00000000..d4d3c761 Binary files /dev/null and b/translated_images/3d.0cec12bcc60f0ce7284c63baed1411a843e24716f7d7425de878715ebad54a15.vi.png differ diff --git a/translated_images/3d.db1734c151eee87d924989306a00e23f8cddac6a0aab122852ece220e9448def.id.png b/translated_images/3d.db1734c151eee87d924989306a00e23f8cddac6a0aab122852ece220e9448def.id.png new file mode 100644 index 00000000..f3c88464 Binary files /dev/null and b/translated_images/3d.db1734c151eee87d924989306a00e23f8cddac6a0aab122852ece220e9448def.id.png differ diff --git a/translated_images/3d.db1734c151eee87d924989306a00e23f8cddac6a0aab122852ece220e9448def.ms.png b/translated_images/3d.db1734c151eee87d924989306a00e23f8cddac6a0aab122852ece220e9448def.ms.png new file mode 100644 index 00000000..d4d3c761 Binary files /dev/null and b/translated_images/3d.db1734c151eee87d924989306a00e23f8cddac6a0aab122852ece220e9448def.ms.png differ diff --git a/translated_images/3d.db1734c151eee87d924989306a00e23f8cddac6a0aab122852ece220e9448def.vi.png b/translated_images/3d.db1734c151eee87d924989306a00e23f8cddac6a0aab122852ece220e9448def.vi.png new file mode 100644 index 00000000..d4d3c761 Binary files /dev/null and b/translated_images/3d.db1734c151eee87d924989306a00e23f8cddac6a0aab122852ece220e9448def.vi.png differ diff --git a/translated_images/CRISP-DM.8bad2b4c66e62aa75278009e38e3e99902c73b0a6f63fd605a67c687a536698c.id.png b/translated_images/CRISP-DM.8bad2b4c66e62aa75278009e38e3e99902c73b0a6f63fd605a67c687a536698c.id.png new file mode 100644 index 00000000..87b72175 Binary files /dev/null and b/translated_images/CRISP-DM.8bad2b4c66e62aa75278009e38e3e99902c73b0a6f63fd605a67c687a536698c.id.png differ diff --git a/translated_images/CRISP-DM.8bad2b4c66e62aa75278009e38e3e99902c73b0a6f63fd605a67c687a536698c.ms.png b/translated_images/CRISP-DM.8bad2b4c66e62aa75278009e38e3e99902c73b0a6f63fd605a67c687a536698c.ms.png new file mode 100644 index 00000000..9fab4d38 Binary files /dev/null and b/translated_images/CRISP-DM.8bad2b4c66e62aa75278009e38e3e99902c73b0a6f63fd605a67c687a536698c.ms.png differ diff --git a/translated_images/CRISP-DM.8bad2b4c66e62aa75278009e38e3e99902c73b0a6f63fd605a67c687a536698c.vi.png b/translated_images/CRISP-DM.8bad2b4c66e62aa75278009e38e3e99902c73b0a6f63fd605a67c687a536698c.vi.png new file mode 100644 index 00000000..245eb795 Binary files /dev/null and b/translated_images/CRISP-DM.8bad2b4c66e62aa75278009e38e3e99902c73b0a6f63fd605a67c687a536698c.vi.png differ diff --git a/translated_images/MaxWingspan-lineplot-improved.04b73b4d5a59552a6bc7590678899718e1f065abe9eada9ebb4148939b622fd4.id.png b/translated_images/MaxWingspan-lineplot-improved.04b73b4d5a59552a6bc7590678899718e1f065abe9eada9ebb4148939b622fd4.id.png new file mode 100644 index 00000000..396dcad8 Binary files /dev/null and b/translated_images/MaxWingspan-lineplot-improved.04b73b4d5a59552a6bc7590678899718e1f065abe9eada9ebb4148939b622fd4.id.png differ diff --git a/translated_images/MaxWingspan-lineplot-improved.04b73b4d5a59552a6bc7590678899718e1f065abe9eada9ebb4148939b622fd4.ms.png b/translated_images/MaxWingspan-lineplot-improved.04b73b4d5a59552a6bc7590678899718e1f065abe9eada9ebb4148939b622fd4.ms.png new file mode 100644 index 00000000..fcbc2f60 Binary files /dev/null and b/translated_images/MaxWingspan-lineplot-improved.04b73b4d5a59552a6bc7590678899718e1f065abe9eada9ebb4148939b622fd4.ms.png differ diff --git a/translated_images/MaxWingspan-lineplot-improved.04b73b4d5a59552a6bc7590678899718e1f065abe9eada9ebb4148939b622fd4.vi.png b/translated_images/MaxWingspan-lineplot-improved.04b73b4d5a59552a6bc7590678899718e1f065abe9eada9ebb4148939b622fd4.vi.png new file mode 100644 index 00000000..597a1a69 Binary files /dev/null and b/translated_images/MaxWingspan-lineplot-improved.04b73b4d5a59552a6bc7590678899718e1f065abe9eada9ebb4148939b622fd4.vi.png differ diff --git a/translated_images/MaxWingspan-lineplot.b12169f99d26fdd263f291008dfd73c18a4ba8f3d32b1fda3d74af51a0a28616.id.png b/translated_images/MaxWingspan-lineplot.b12169f99d26fdd263f291008dfd73c18a4ba8f3d32b1fda3d74af51a0a28616.id.png new file mode 100644 index 00000000..52aeae03 Binary files /dev/null and b/translated_images/MaxWingspan-lineplot.b12169f99d26fdd263f291008dfd73c18a4ba8f3d32b1fda3d74af51a0a28616.id.png differ diff --git a/translated_images/MaxWingspan-lineplot.b12169f99d26fdd263f291008dfd73c18a4ba8f3d32b1fda3d74af51a0a28616.ms.png b/translated_images/MaxWingspan-lineplot.b12169f99d26fdd263f291008dfd73c18a4ba8f3d32b1fda3d74af51a0a28616.ms.png new file mode 100644 index 00000000..31cd0bb1 Binary files /dev/null and b/translated_images/MaxWingspan-lineplot.b12169f99d26fdd263f291008dfd73c18a4ba8f3d32b1fda3d74af51a0a28616.ms.png differ diff --git a/translated_images/MaxWingspan-lineplot.b12169f99d26fdd263f291008dfd73c18a4ba8f3d32b1fda3d74af51a0a28616.vi.png b/translated_images/MaxWingspan-lineplot.b12169f99d26fdd263f291008dfd73c18a4ba8f3d32b1fda3d74af51a0a28616.vi.png new file mode 100644 index 00000000..6cfe1020 Binary files /dev/null and b/translated_images/MaxWingspan-lineplot.b12169f99d26fdd263f291008dfd73c18a4ba8f3d32b1fda3d74af51a0a28616.vi.png differ diff --git a/translated_images/MaxWingspan-scatterplot-improved.7d0af81658c65f3e75b8fedeb2335399e31108257e48db15d875ece608272051.id.png b/translated_images/MaxWingspan-scatterplot-improved.7d0af81658c65f3e75b8fedeb2335399e31108257e48db15d875ece608272051.id.png new file mode 100644 index 00000000..5191d775 Binary files /dev/null and b/translated_images/MaxWingspan-scatterplot-improved.7d0af81658c65f3e75b8fedeb2335399e31108257e48db15d875ece608272051.id.png differ diff --git a/translated_images/MaxWingspan-scatterplot-improved.7d0af81658c65f3e75b8fedeb2335399e31108257e48db15d875ece608272051.ms.png b/translated_images/MaxWingspan-scatterplot-improved.7d0af81658c65f3e75b8fedeb2335399e31108257e48db15d875ece608272051.ms.png new file mode 100644 index 00000000..2a704a77 Binary files /dev/null and b/translated_images/MaxWingspan-scatterplot-improved.7d0af81658c65f3e75b8fedeb2335399e31108257e48db15d875ece608272051.ms.png differ diff --git a/translated_images/MaxWingspan-scatterplot-improved.7d0af81658c65f3e75b8fedeb2335399e31108257e48db15d875ece608272051.vi.png b/translated_images/MaxWingspan-scatterplot-improved.7d0af81658c65f3e75b8fedeb2335399e31108257e48db15d875ece608272051.vi.png new file mode 100644 index 00000000..75ca1b02 Binary files /dev/null and b/translated_images/MaxWingspan-scatterplot-improved.7d0af81658c65f3e75b8fedeb2335399e31108257e48db15d875ece608272051.vi.png differ diff --git a/translated_images/MaxWingspan-scatterplot.60dc9e0e19d32700283558f253841fdab5104abb62bc96f7d97f9c0ee857fa8b.id.png b/translated_images/MaxWingspan-scatterplot.60dc9e0e19d32700283558f253841fdab5104abb62bc96f7d97f9c0ee857fa8b.id.png new file mode 100644 index 00000000..1dac9fb4 Binary files /dev/null and b/translated_images/MaxWingspan-scatterplot.60dc9e0e19d32700283558f253841fdab5104abb62bc96f7d97f9c0ee857fa8b.id.png differ diff --git a/translated_images/MaxWingspan-scatterplot.60dc9e0e19d32700283558f253841fdab5104abb62bc96f7d97f9c0ee857fa8b.ms.png b/translated_images/MaxWingspan-scatterplot.60dc9e0e19d32700283558f253841fdab5104abb62bc96f7d97f9c0ee857fa8b.ms.png new file mode 100644 index 00000000..2b40edbe Binary files /dev/null and b/translated_images/MaxWingspan-scatterplot.60dc9e0e19d32700283558f253841fdab5104abb62bc96f7d97f9c0ee857fa8b.ms.png differ diff --git a/translated_images/MaxWingspan-scatterplot.60dc9e0e19d32700283558f253841fdab5104abb62bc96f7d97f9c0ee857fa8b.vi.png b/translated_images/MaxWingspan-scatterplot.60dc9e0e19d32700283558f253841fdab5104abb62bc96f7d97f9c0ee857fa8b.vi.png new file mode 100644 index 00000000..6658c7d4 Binary files /dev/null and b/translated_images/MaxWingspan-scatterplot.60dc9e0e19d32700283558f253841fdab5104abb62bc96f7d97f9c0ee857fa8b.vi.png differ diff --git a/translated_images/aml-1.67281a85d3a1e2f34eb367b2d0f74e1039d13396e510f363cd8766632106d1ec.id.png b/translated_images/aml-1.67281a85d3a1e2f34eb367b2d0f74e1039d13396e510f363cd8766632106d1ec.id.png new file mode 100644 index 00000000..a793ae94 Binary files /dev/null and b/translated_images/aml-1.67281a85d3a1e2f34eb367b2d0f74e1039d13396e510f363cd8766632106d1ec.id.png differ diff --git a/translated_images/aml-1.67281a85d3a1e2f34eb367b2d0f74e1039d13396e510f363cd8766632106d1ec.ms.png b/translated_images/aml-1.67281a85d3a1e2f34eb367b2d0f74e1039d13396e510f363cd8766632106d1ec.ms.png new file mode 100644 index 00000000..61815cac Binary files /dev/null and b/translated_images/aml-1.67281a85d3a1e2f34eb367b2d0f74e1039d13396e510f363cd8766632106d1ec.ms.png differ diff --git a/translated_images/aml-1.67281a85d3a1e2f34eb367b2d0f74e1039d13396e510f363cd8766632106d1ec.vi.png b/translated_images/aml-1.67281a85d3a1e2f34eb367b2d0f74e1039d13396e510f363cd8766632106d1ec.vi.png new file mode 100644 index 00000000..ca8e5764 Binary files /dev/null and b/translated_images/aml-1.67281a85d3a1e2f34eb367b2d0f74e1039d13396e510f363cd8766632106d1ec.vi.png differ diff --git a/translated_images/aml-2.c9fb9cffb39ccbbe21ab9810ae937195d41a489744e15cff2b8477ed4dcae1ec.id.png b/translated_images/aml-2.c9fb9cffb39ccbbe21ab9810ae937195d41a489744e15cff2b8477ed4dcae1ec.id.png new file mode 100644 index 00000000..af0b41a1 Binary files /dev/null and b/translated_images/aml-2.c9fb9cffb39ccbbe21ab9810ae937195d41a489744e15cff2b8477ed4dcae1ec.id.png differ diff --git a/translated_images/aml-2.c9fb9cffb39ccbbe21ab9810ae937195d41a489744e15cff2b8477ed4dcae1ec.ms.png b/translated_images/aml-2.c9fb9cffb39ccbbe21ab9810ae937195d41a489744e15cff2b8477ed4dcae1ec.ms.png new file mode 100644 index 00000000..9584e958 Binary files /dev/null and b/translated_images/aml-2.c9fb9cffb39ccbbe21ab9810ae937195d41a489744e15cff2b8477ed4dcae1ec.ms.png differ diff --git a/translated_images/aml-2.c9fb9cffb39ccbbe21ab9810ae937195d41a489744e15cff2b8477ed4dcae1ec.vi.png b/translated_images/aml-2.c9fb9cffb39ccbbe21ab9810ae937195d41a489744e15cff2b8477ed4dcae1ec.vi.png new file mode 100644 index 00000000..48fccec7 Binary files /dev/null and b/translated_images/aml-2.c9fb9cffb39ccbbe21ab9810ae937195d41a489744e15cff2b8477ed4dcae1ec.vi.png differ diff --git a/translated_images/aml-3.a7952e4295f38cc6cdb0c7ed6dc71ea756b7fb5697ec126bc1220f87c5fa9231.id.png b/translated_images/aml-3.a7952e4295f38cc6cdb0c7ed6dc71ea756b7fb5697ec126bc1220f87c5fa9231.id.png new file mode 100644 index 00000000..3844c7d6 Binary files /dev/null and b/translated_images/aml-3.a7952e4295f38cc6cdb0c7ed6dc71ea756b7fb5697ec126bc1220f87c5fa9231.id.png differ diff --git a/translated_images/aml-3.a7952e4295f38cc6cdb0c7ed6dc71ea756b7fb5697ec126bc1220f87c5fa9231.ms.png b/translated_images/aml-3.a7952e4295f38cc6cdb0c7ed6dc71ea756b7fb5697ec126bc1220f87c5fa9231.ms.png new file mode 100644 index 00000000..bf12318d Binary files /dev/null and b/translated_images/aml-3.a7952e4295f38cc6cdb0c7ed6dc71ea756b7fb5697ec126bc1220f87c5fa9231.ms.png differ diff --git a/translated_images/aml-3.a7952e4295f38cc6cdb0c7ed6dc71ea756b7fb5697ec126bc1220f87c5fa9231.vi.png b/translated_images/aml-3.a7952e4295f38cc6cdb0c7ed6dc71ea756b7fb5697ec126bc1220f87c5fa9231.vi.png new file mode 100644 index 00000000..430c371b Binary files /dev/null and b/translated_images/aml-3.a7952e4295f38cc6cdb0c7ed6dc71ea756b7fb5697ec126bc1220f87c5fa9231.vi.png differ diff --git a/translated_images/aml-4.7a627e09cb6f16d0aa246059d9faee3d1725cc4258d0c8df15e801f73afc7e2c.id.png b/translated_images/aml-4.7a627e09cb6f16d0aa246059d9faee3d1725cc4258d0c8df15e801f73afc7e2c.id.png new file mode 100644 index 00000000..fae12397 Binary files /dev/null and b/translated_images/aml-4.7a627e09cb6f16d0aa246059d9faee3d1725cc4258d0c8df15e801f73afc7e2c.id.png differ diff --git a/translated_images/aml-4.7a627e09cb6f16d0aa246059d9faee3d1725cc4258d0c8df15e801f73afc7e2c.ms.png b/translated_images/aml-4.7a627e09cb6f16d0aa246059d9faee3d1725cc4258d0c8df15e801f73afc7e2c.ms.png new file mode 100644 index 00000000..1b20045f Binary files /dev/null and b/translated_images/aml-4.7a627e09cb6f16d0aa246059d9faee3d1725cc4258d0c8df15e801f73afc7e2c.ms.png differ diff --git a/translated_images/aml-4.7a627e09cb6f16d0aa246059d9faee3d1725cc4258d0c8df15e801f73afc7e2c.vi.png b/translated_images/aml-4.7a627e09cb6f16d0aa246059d9faee3d1725cc4258d0c8df15e801f73afc7e2c.vi.png new file mode 100644 index 00000000..817d43f7 Binary files /dev/null and b/translated_images/aml-4.7a627e09cb6f16d0aa246059d9faee3d1725cc4258d0c8df15e801f73afc7e2c.vi.png differ diff --git a/translated_images/bad-chart-1.596bc93425a8ac301a28b8361f59a970276e7b961658ce849886aa1fed427341.id.png b/translated_images/bad-chart-1.596bc93425a8ac301a28b8361f59a970276e7b961658ce849886aa1fed427341.id.png new file mode 100644 index 00000000..d61861cb Binary files /dev/null and b/translated_images/bad-chart-1.596bc93425a8ac301a28b8361f59a970276e7b961658ce849886aa1fed427341.id.png differ diff --git a/translated_images/bad-chart-1.596bc93425a8ac301a28b8361f59a970276e7b961658ce849886aa1fed427341.ms.png b/translated_images/bad-chart-1.596bc93425a8ac301a28b8361f59a970276e7b961658ce849886aa1fed427341.ms.png new file mode 100644 index 00000000..89d22331 Binary files /dev/null and b/translated_images/bad-chart-1.596bc93425a8ac301a28b8361f59a970276e7b961658ce849886aa1fed427341.ms.png differ diff --git a/translated_images/bad-chart-1.596bc93425a8ac301a28b8361f59a970276e7b961658ce849886aa1fed427341.vi.png b/translated_images/bad-chart-1.596bc93425a8ac301a28b8361f59a970276e7b961658ce849886aa1fed427341.vi.png new file mode 100644 index 00000000..8cf8e75d Binary files /dev/null and b/translated_images/bad-chart-1.596bc93425a8ac301a28b8361f59a970276e7b961658ce849886aa1fed427341.vi.png differ diff --git a/translated_images/bad-chart-1.93130f495b748bedfb3423d91b1e754d9026e17f94ad967aecdc9ca7203373bf.id.png b/translated_images/bad-chart-1.93130f495b748bedfb3423d91b1e754d9026e17f94ad967aecdc9ca7203373bf.id.png new file mode 100644 index 00000000..d61861cb Binary files /dev/null and b/translated_images/bad-chart-1.93130f495b748bedfb3423d91b1e754d9026e17f94ad967aecdc9ca7203373bf.id.png differ diff --git a/translated_images/bad-chart-1.93130f495b748bedfb3423d91b1e754d9026e17f94ad967aecdc9ca7203373bf.ms.png b/translated_images/bad-chart-1.93130f495b748bedfb3423d91b1e754d9026e17f94ad967aecdc9ca7203373bf.ms.png new file mode 100644 index 00000000..f7966fc7 Binary files /dev/null and b/translated_images/bad-chart-1.93130f495b748bedfb3423d91b1e754d9026e17f94ad967aecdc9ca7203373bf.ms.png differ diff --git a/translated_images/bad-chart-1.93130f495b748bedfb3423d91b1e754d9026e17f94ad967aecdc9ca7203373bf.vi.png b/translated_images/bad-chart-1.93130f495b748bedfb3423d91b1e754d9026e17f94ad967aecdc9ca7203373bf.vi.png new file mode 100644 index 00000000..8cf8e75d Binary files /dev/null and b/translated_images/bad-chart-1.93130f495b748bedfb3423d91b1e754d9026e17f94ad967aecdc9ca7203373bf.vi.png differ diff --git a/translated_images/bad-chart-2.62edf4d2f30f4e519f5ef50c07ce686e27b0196a364febf9a4d98eecd21f9f60.id.jpg b/translated_images/bad-chart-2.62edf4d2f30f4e519f5ef50c07ce686e27b0196a364febf9a4d98eecd21f9f60.id.jpg new file mode 100644 index 00000000..994b871d Binary files /dev/null and b/translated_images/bad-chart-2.62edf4d2f30f4e519f5ef50c07ce686e27b0196a364febf9a4d98eecd21f9f60.id.jpg differ diff --git a/translated_images/bad-chart-2.62edf4d2f30f4e519f5ef50c07ce686e27b0196a364febf9a4d98eecd21f9f60.ms.jpg b/translated_images/bad-chart-2.62edf4d2f30f4e519f5ef50c07ce686e27b0196a364febf9a4d98eecd21f9f60.ms.jpg new file mode 100644 index 00000000..e8175ea3 Binary files /dev/null and b/translated_images/bad-chart-2.62edf4d2f30f4e519f5ef50c07ce686e27b0196a364febf9a4d98eecd21f9f60.ms.jpg differ diff --git a/translated_images/bad-chart-2.62edf4d2f30f4e519f5ef50c07ce686e27b0196a364febf9a4d98eecd21f9f60.vi.jpg b/translated_images/bad-chart-2.62edf4d2f30f4e519f5ef50c07ce686e27b0196a364febf9a4d98eecd21f9f60.vi.jpg new file mode 100644 index 00000000..066b561a Binary files /dev/null and b/translated_images/bad-chart-2.62edf4d2f30f4e519f5ef50c07ce686e27b0196a364febf9a4d98eecd21f9f60.vi.jpg differ diff --git a/translated_images/bad-chart-2.c20e36dd4e6f617c0c325878dd421a563885bbf30a394884c147438827254e0e.id.jpg b/translated_images/bad-chart-2.c20e36dd4e6f617c0c325878dd421a563885bbf30a394884c147438827254e0e.id.jpg new file mode 100644 index 00000000..994b871d Binary files /dev/null and b/translated_images/bad-chart-2.c20e36dd4e6f617c0c325878dd421a563885bbf30a394884c147438827254e0e.id.jpg differ diff --git a/translated_images/bad-chart-2.c20e36dd4e6f617c0c325878dd421a563885bbf30a394884c147438827254e0e.ms.jpg b/translated_images/bad-chart-2.c20e36dd4e6f617c0c325878dd421a563885bbf30a394884c147438827254e0e.ms.jpg new file mode 100644 index 00000000..01357a98 Binary files /dev/null and b/translated_images/bad-chart-2.c20e36dd4e6f617c0c325878dd421a563885bbf30a394884c147438827254e0e.ms.jpg differ diff --git a/translated_images/bad-chart-2.c20e36dd4e6f617c0c325878dd421a563885bbf30a394884c147438827254e0e.vi.jpg b/translated_images/bad-chart-2.c20e36dd4e6f617c0c325878dd421a563885bbf30a394884c147438827254e0e.vi.jpg new file mode 100644 index 00000000..638bca8b Binary files /dev/null and b/translated_images/bad-chart-2.c20e36dd4e6f617c0c325878dd421a563885bbf30a394884c147438827254e0e.vi.jpg differ diff --git a/translated_images/bad-chart-3.6865d0afac4108d737558d90a61547d23a8722896397ec792264ee51a1be4be5.id.jpg b/translated_images/bad-chart-3.6865d0afac4108d737558d90a61547d23a8722896397ec792264ee51a1be4be5.id.jpg new file mode 100644 index 00000000..2501b1c3 Binary files /dev/null and b/translated_images/bad-chart-3.6865d0afac4108d737558d90a61547d23a8722896397ec792264ee51a1be4be5.id.jpg differ diff --git a/translated_images/bad-chart-3.6865d0afac4108d737558d90a61547d23a8722896397ec792264ee51a1be4be5.ms.jpg b/translated_images/bad-chart-3.6865d0afac4108d737558d90a61547d23a8722896397ec792264ee51a1be4be5.ms.jpg new file mode 100644 index 00000000..629381a2 Binary files /dev/null and b/translated_images/bad-chart-3.6865d0afac4108d737558d90a61547d23a8722896397ec792264ee51a1be4be5.ms.jpg differ diff --git a/translated_images/bad-chart-3.6865d0afac4108d737558d90a61547d23a8722896397ec792264ee51a1be4be5.vi.jpg b/translated_images/bad-chart-3.6865d0afac4108d737558d90a61547d23a8722896397ec792264ee51a1be4be5.vi.jpg new file mode 100644 index 00000000..5d4fd756 Binary files /dev/null and b/translated_images/bad-chart-3.6865d0afac4108d737558d90a61547d23a8722896397ec792264ee51a1be4be5.vi.jpg differ diff --git a/translated_images/bad-chart-3.e201e2e915a230bc2cde289110604ec9abeb89be510bd82665bebc1228258972.id.jpg b/translated_images/bad-chart-3.e201e2e915a230bc2cde289110604ec9abeb89be510bd82665bebc1228258972.id.jpg new file mode 100644 index 00000000..2501b1c3 Binary files /dev/null and b/translated_images/bad-chart-3.e201e2e915a230bc2cde289110604ec9abeb89be510bd82665bebc1228258972.id.jpg differ diff --git a/translated_images/bad-chart-3.e201e2e915a230bc2cde289110604ec9abeb89be510bd82665bebc1228258972.ms.jpg b/translated_images/bad-chart-3.e201e2e915a230bc2cde289110604ec9abeb89be510bd82665bebc1228258972.ms.jpg new file mode 100644 index 00000000..935aaa9f Binary files /dev/null and b/translated_images/bad-chart-3.e201e2e915a230bc2cde289110604ec9abeb89be510bd82665bebc1228258972.ms.jpg differ diff --git a/translated_images/bad-chart-3.e201e2e915a230bc2cde289110604ec9abeb89be510bd82665bebc1228258972.vi.jpg b/translated_images/bad-chart-3.e201e2e915a230bc2cde289110604ec9abeb89be510bd82665bebc1228258972.vi.jpg new file mode 100644 index 00000000..d75e6e03 Binary files /dev/null and b/translated_images/bad-chart-3.e201e2e915a230bc2cde289110604ec9abeb89be510bd82665bebc1228258972.vi.jpg differ diff --git a/translated_images/bad-chart-4.68cfdf4011b454471053ee1231172747e1fbec2403b4443567f1dc678134f4f2.id.jpg b/translated_images/bad-chart-4.68cfdf4011b454471053ee1231172747e1fbec2403b4443567f1dc678134f4f2.id.jpg new file mode 100644 index 00000000..654469e9 Binary files /dev/null and b/translated_images/bad-chart-4.68cfdf4011b454471053ee1231172747e1fbec2403b4443567f1dc678134f4f2.id.jpg differ diff --git a/translated_images/bad-chart-4.68cfdf4011b454471053ee1231172747e1fbec2403b4443567f1dc678134f4f2.ms.jpg b/translated_images/bad-chart-4.68cfdf4011b454471053ee1231172747e1fbec2403b4443567f1dc678134f4f2.ms.jpg new file mode 100644 index 00000000..ad6c0121 Binary files /dev/null and b/translated_images/bad-chart-4.68cfdf4011b454471053ee1231172747e1fbec2403b4443567f1dc678134f4f2.ms.jpg differ diff --git a/translated_images/bad-chart-4.68cfdf4011b454471053ee1231172747e1fbec2403b4443567f1dc678134f4f2.vi.jpg b/translated_images/bad-chart-4.68cfdf4011b454471053ee1231172747e1fbec2403b4443567f1dc678134f4f2.vi.jpg new file mode 100644 index 00000000..5598f3b2 Binary files /dev/null and b/translated_images/bad-chart-4.68cfdf4011b454471053ee1231172747e1fbec2403b4443567f1dc678134f4f2.vi.jpg differ diff --git a/translated_images/bad-chart-4.8872b2b881ffa96c3e0db10eb6aed7793efae2cac382c53932794260f7bfff07.id.jpg b/translated_images/bad-chart-4.8872b2b881ffa96c3e0db10eb6aed7793efae2cac382c53932794260f7bfff07.id.jpg new file mode 100644 index 00000000..e45177b0 Binary files /dev/null and b/translated_images/bad-chart-4.8872b2b881ffa96c3e0db10eb6aed7793efae2cac382c53932794260f7bfff07.id.jpg differ diff --git a/translated_images/bad-chart-4.8872b2b881ffa96c3e0db10eb6aed7793efae2cac382c53932794260f7bfff07.ms.jpg b/translated_images/bad-chart-4.8872b2b881ffa96c3e0db10eb6aed7793efae2cac382c53932794260f7bfff07.ms.jpg new file mode 100644 index 00000000..ad6c0121 Binary files /dev/null and b/translated_images/bad-chart-4.8872b2b881ffa96c3e0db10eb6aed7793efae2cac382c53932794260f7bfff07.ms.jpg differ diff --git a/translated_images/bad-chart-4.8872b2b881ffa96c3e0db10eb6aed7793efae2cac382c53932794260f7bfff07.vi.jpg b/translated_images/bad-chart-4.8872b2b881ffa96c3e0db10eb6aed7793efae2cac382c53932794260f7bfff07.vi.jpg new file mode 100644 index 00000000..4435fa18 Binary files /dev/null and b/translated_images/bad-chart-4.8872b2b881ffa96c3e0db10eb6aed7793efae2cac382c53932794260f7bfff07.vi.jpg differ diff --git a/translated_images/bee.0aa1d91132b12e3a8994b9ca12816d05ce1642010d9b8be37f8d37365ba845cf.id.jpg b/translated_images/bee.0aa1d91132b12e3a8994b9ca12816d05ce1642010d9b8be37f8d37365ba845cf.id.jpg new file mode 100644 index 00000000..032326e9 Binary files /dev/null and b/translated_images/bee.0aa1d91132b12e3a8994b9ca12816d05ce1642010d9b8be37f8d37365ba845cf.id.jpg differ diff --git a/translated_images/bee.0aa1d91132b12e3a8994b9ca12816d05ce1642010d9b8be37f8d37365ba845cf.ms.jpg b/translated_images/bee.0aa1d91132b12e3a8994b9ca12816d05ce1642010d9b8be37f8d37365ba845cf.ms.jpg new file mode 100644 index 00000000..032326e9 Binary files /dev/null and b/translated_images/bee.0aa1d91132b12e3a8994b9ca12816d05ce1642010d9b8be37f8d37365ba845cf.ms.jpg differ diff --git a/translated_images/bee.0aa1d91132b12e3a8994b9ca12816d05ce1642010d9b8be37f8d37365ba845cf.vi.jpg b/translated_images/bee.0aa1d91132b12e3a8994b9ca12816d05ce1642010d9b8be37f8d37365ba845cf.vi.jpg new file mode 100644 index 00000000..032326e9 Binary files /dev/null and b/translated_images/bee.0aa1d91132b12e3a8994b9ca12816d05ce1642010d9b8be37f8d37365ba845cf.vi.jpg differ diff --git a/translated_images/bodymass-per-order.9d2b065dd931b928c839d8cdbee63067ab1ae52218a1b90717f4bc744354f485.id.png b/translated_images/bodymass-per-order.9d2b065dd931b928c839d8cdbee63067ab1ae52218a1b90717f4bc744354f485.id.png new file mode 100644 index 00000000..8733a786 Binary files /dev/null and b/translated_images/bodymass-per-order.9d2b065dd931b928c839d8cdbee63067ab1ae52218a1b90717f4bc744354f485.id.png differ diff --git a/translated_images/bodymass-per-order.9d2b065dd931b928c839d8cdbee63067ab1ae52218a1b90717f4bc744354f485.ms.png b/translated_images/bodymass-per-order.9d2b065dd931b928c839d8cdbee63067ab1ae52218a1b90717f4bc744354f485.ms.png new file mode 100644 index 00000000..7a0a21c3 Binary files /dev/null and b/translated_images/bodymass-per-order.9d2b065dd931b928c839d8cdbee63067ab1ae52218a1b90717f4bc744354f485.ms.png differ diff --git a/translated_images/bodymass-per-order.9d2b065dd931b928c839d8cdbee63067ab1ae52218a1b90717f4bc744354f485.vi.png b/translated_images/bodymass-per-order.9d2b065dd931b928c839d8cdbee63067ab1ae52218a1b90717f4bc744354f485.vi.png new file mode 100644 index 00000000..b18ef1c9 Binary files /dev/null and b/translated_images/bodymass-per-order.9d2b065dd931b928c839d8cdbee63067ab1ae52218a1b90717f4bc744354f485.vi.png differ diff --git a/translated_images/bodymass-smooth.d31ce526d82b0a1f19a073815dea28ecfbe58145ec5337e4ef7e8cdac81120b3.id.png b/translated_images/bodymass-smooth.d31ce526d82b0a1f19a073815dea28ecfbe58145ec5337e4ef7e8cdac81120b3.id.png new file mode 100644 index 00000000..c67bf3c3 Binary files /dev/null and b/translated_images/bodymass-smooth.d31ce526d82b0a1f19a073815dea28ecfbe58145ec5337e4ef7e8cdac81120b3.id.png differ diff --git a/translated_images/bodymass-smooth.d31ce526d82b0a1f19a073815dea28ecfbe58145ec5337e4ef7e8cdac81120b3.ms.png b/translated_images/bodymass-smooth.d31ce526d82b0a1f19a073815dea28ecfbe58145ec5337e4ef7e8cdac81120b3.ms.png new file mode 100644 index 00000000..a55a1518 Binary files /dev/null and b/translated_images/bodymass-smooth.d31ce526d82b0a1f19a073815dea28ecfbe58145ec5337e4ef7e8cdac81120b3.ms.png differ diff --git a/translated_images/bodymass-smooth.d31ce526d82b0a1f19a073815dea28ecfbe58145ec5337e4ef7e8cdac81120b3.vi.png b/translated_images/bodymass-smooth.d31ce526d82b0a1f19a073815dea28ecfbe58145ec5337e4ef7e8cdac81120b3.vi.png new file mode 100644 index 00000000..b4b1619c Binary files /dev/null and b/translated_images/bodymass-smooth.d31ce526d82b0a1f19a073815dea28ecfbe58145ec5337e4ef7e8cdac81120b3.vi.png differ diff --git a/translated_images/boxplot_byrole.036b27a1c3f52d42f66fba2324ec5cde0a1bca6a01a619eeb0ce7cd054b2527b.id.png b/translated_images/boxplot_byrole.036b27a1c3f52d42f66fba2324ec5cde0a1bca6a01a619eeb0ce7cd054b2527b.id.png new file mode 100644 index 00000000..e6a314e0 Binary files /dev/null and b/translated_images/boxplot_byrole.036b27a1c3f52d42f66fba2324ec5cde0a1bca6a01a619eeb0ce7cd054b2527b.id.png differ diff --git a/translated_images/boxplot_byrole.036b27a1c3f52d42f66fba2324ec5cde0a1bca6a01a619eeb0ce7cd054b2527b.ms.png b/translated_images/boxplot_byrole.036b27a1c3f52d42f66fba2324ec5cde0a1bca6a01a619eeb0ce7cd054b2527b.ms.png new file mode 100644 index 00000000..708ae59f Binary files /dev/null and b/translated_images/boxplot_byrole.036b27a1c3f52d42f66fba2324ec5cde0a1bca6a01a619eeb0ce7cd054b2527b.ms.png differ diff --git a/translated_images/boxplot_byrole.036b27a1c3f52d42f66fba2324ec5cde0a1bca6a01a619eeb0ce7cd054b2527b.vi.png b/translated_images/boxplot_byrole.036b27a1c3f52d42f66fba2324ec5cde0a1bca6a01a619eeb0ce7cd054b2527b.vi.png new file mode 100644 index 00000000..1b353eaf Binary files /dev/null and b/translated_images/boxplot_byrole.036b27a1c3f52d42f66fba2324ec5cde0a1bca6a01a619eeb0ce7cd054b2527b.vi.png differ diff --git a/translated_images/boxplot_explanation.4039b7de08780fd493ef798b41f7291d753f1f84de8955645f00c586e65f16a3.id.png b/translated_images/boxplot_explanation.4039b7de08780fd493ef798b41f7291d753f1f84de8955645f00c586e65f16a3.id.png new file mode 100644 index 00000000..93fff6d1 Binary files /dev/null and b/translated_images/boxplot_explanation.4039b7de08780fd493ef798b41f7291d753f1f84de8955645f00c586e65f16a3.id.png differ diff --git a/translated_images/boxplot_explanation.4039b7de08780fd493ef798b41f7291d753f1f84de8955645f00c586e65f16a3.ms.png b/translated_images/boxplot_explanation.4039b7de08780fd493ef798b41f7291d753f1f84de8955645f00c586e65f16a3.ms.png new file mode 100644 index 00000000..b228720b Binary files /dev/null and b/translated_images/boxplot_explanation.4039b7de08780fd493ef798b41f7291d753f1f84de8955645f00c586e65f16a3.ms.png differ diff --git a/translated_images/boxplot_explanation.4039b7de08780fd493ef798b41f7291d753f1f84de8955645f00c586e65f16a3.vi.png b/translated_images/boxplot_explanation.4039b7de08780fd493ef798b41f7291d753f1f84de8955645f00c586e65f16a3.vi.png new file mode 100644 index 00000000..b3db6a41 Binary files /dev/null and b/translated_images/boxplot_explanation.4039b7de08780fd493ef798b41f7291d753f1f84de8955645f00c586e65f16a3.vi.png differ diff --git a/translated_images/busing.7b9e3b41cd4b981c6d63922cd82004cc1cf18895155536c1d98fcc0999bdd23e.id.png b/translated_images/busing.7b9e3b41cd4b981c6d63922cd82004cc1cf18895155536c1d98fcc0999bdd23e.id.png new file mode 100644 index 00000000..0e0bf8be Binary files /dev/null and b/translated_images/busing.7b9e3b41cd4b981c6d63922cd82004cc1cf18895155536c1d98fcc0999bdd23e.id.png differ diff --git a/translated_images/busing.7b9e3b41cd4b981c6d63922cd82004cc1cf18895155536c1d98fcc0999bdd23e.ms.png b/translated_images/busing.7b9e3b41cd4b981c6d63922cd82004cc1cf18895155536c1d98fcc0999bdd23e.ms.png new file mode 100644 index 00000000..e4430b4f Binary files /dev/null and b/translated_images/busing.7b9e3b41cd4b981c6d63922cd82004cc1cf18895155536c1d98fcc0999bdd23e.ms.png differ diff --git a/translated_images/busing.7b9e3b41cd4b981c6d63922cd82004cc1cf18895155536c1d98fcc0999bdd23e.vi.png b/translated_images/busing.7b9e3b41cd4b981c6d63922cd82004cc1cf18895155536c1d98fcc0999bdd23e.vi.png new file mode 100644 index 00000000..0d7e13c9 Binary files /dev/null and b/translated_images/busing.7b9e3b41cd4b981c6d63922cd82004cc1cf18895155536c1d98fcc0999bdd23e.vi.png differ diff --git a/translated_images/busing.8157cf1bc89a3f65052d362a78c72f964982ceb9dcacbe44480e35909c3dce62.id.png b/translated_images/busing.8157cf1bc89a3f65052d362a78c72f964982ceb9dcacbe44480e35909c3dce62.id.png new file mode 100644 index 00000000..0e0bf8be Binary files /dev/null and b/translated_images/busing.8157cf1bc89a3f65052d362a78c72f964982ceb9dcacbe44480e35909c3dce62.id.png differ diff --git a/translated_images/busing.8157cf1bc89a3f65052d362a78c72f964982ceb9dcacbe44480e35909c3dce62.ms.png b/translated_images/busing.8157cf1bc89a3f65052d362a78c72f964982ceb9dcacbe44480e35909c3dce62.ms.png new file mode 100644 index 00000000..e4430b4f Binary files /dev/null and b/translated_images/busing.8157cf1bc89a3f65052d362a78c72f964982ceb9dcacbe44480e35909c3dce62.ms.png differ diff --git a/translated_images/busing.8157cf1bc89a3f65052d362a78c72f964982ceb9dcacbe44480e35909c3dce62.vi.png b/translated_images/busing.8157cf1bc89a3f65052d362a78c72f964982ceb9dcacbe44480e35909c3dce62.vi.png new file mode 100644 index 00000000..0d7e13c9 Binary files /dev/null and b/translated_images/busing.8157cf1bc89a3f65052d362a78c72f964982ceb9dcacbe44480e35909c3dce62.vi.png differ diff --git a/translated_images/category-counts-02.0b9a0a4de42275ae5096d0f8da590d8bf520d9e7e40aad5cc4fc8d276480cc32.id.png b/translated_images/category-counts-02.0b9a0a4de42275ae5096d0f8da590d8bf520d9e7e40aad5cc4fc8d276480cc32.id.png new file mode 100644 index 00000000..1786a15d Binary files /dev/null and b/translated_images/category-counts-02.0b9a0a4de42275ae5096d0f8da590d8bf520d9e7e40aad5cc4fc8d276480cc32.id.png differ diff --git a/translated_images/category-counts-02.0b9a0a4de42275ae5096d0f8da590d8bf520d9e7e40aad5cc4fc8d276480cc32.ms.png b/translated_images/category-counts-02.0b9a0a4de42275ae5096d0f8da590d8bf520d9e7e40aad5cc4fc8d276480cc32.ms.png new file mode 100644 index 00000000..c3cedee9 Binary files /dev/null and b/translated_images/category-counts-02.0b9a0a4de42275ae5096d0f8da590d8bf520d9e7e40aad5cc4fc8d276480cc32.ms.png differ diff --git a/translated_images/category-counts-02.0b9a0a4de42275ae5096d0f8da590d8bf520d9e7e40aad5cc4fc8d276480cc32.vi.png b/translated_images/category-counts-02.0b9a0a4de42275ae5096d0f8da590d8bf520d9e7e40aad5cc4fc8d276480cc32.vi.png new file mode 100644 index 00000000..e01fe407 Binary files /dev/null and b/translated_images/category-counts-02.0b9a0a4de42275ae5096d0f8da590d8bf520d9e7e40aad5cc4fc8d276480cc32.vi.png differ diff --git a/translated_images/category-counts.abee8188c4c9b6f0b4e13e2920039c9fa5cc151031a5c28e5a5ff6fb8c072ab4.id.png b/translated_images/category-counts.abee8188c4c9b6f0b4e13e2920039c9fa5cc151031a5c28e5a5ff6fb8c072ab4.id.png new file mode 100644 index 00000000..6132710f Binary files /dev/null and b/translated_images/category-counts.abee8188c4c9b6f0b4e13e2920039c9fa5cc151031a5c28e5a5ff6fb8c072ab4.id.png differ diff --git a/translated_images/category-counts.abee8188c4c9b6f0b4e13e2920039c9fa5cc151031a5c28e5a5ff6fb8c072ab4.ms.png b/translated_images/category-counts.abee8188c4c9b6f0b4e13e2920039c9fa5cc151031a5c28e5a5ff6fb8c072ab4.ms.png new file mode 100644 index 00000000..6132710f Binary files /dev/null and b/translated_images/category-counts.abee8188c4c9b6f0b4e13e2920039c9fa5cc151031a5c28e5a5ff6fb8c072ab4.ms.png differ diff --git a/translated_images/category-counts.abee8188c4c9b6f0b4e13e2920039c9fa5cc151031a5c28e5a5ff6fb8c072ab4.vi.png b/translated_images/category-counts.abee8188c4c9b6f0b4e13e2920039c9fa5cc151031a5c28e5a5ff6fb8c072ab4.vi.png new file mode 100644 index 00000000..6132710f Binary files /dev/null and b/translated_images/category-counts.abee8188c4c9b6f0b4e13e2920039c9fa5cc151031a5c28e5a5ff6fb8c072ab4.vi.png differ diff --git a/translated_images/category-length-02.7304bf519375c9807d8165cc7ec60dd2a60f7b365b23098538e287d89adb7d76.id.png b/translated_images/category-length-02.7304bf519375c9807d8165cc7ec60dd2a60f7b365b23098538e287d89adb7d76.id.png new file mode 100644 index 00000000..ef4ab68b Binary files /dev/null and b/translated_images/category-length-02.7304bf519375c9807d8165cc7ec60dd2a60f7b365b23098538e287d89adb7d76.id.png differ diff --git a/translated_images/category-length-02.7304bf519375c9807d8165cc7ec60dd2a60f7b365b23098538e287d89adb7d76.ms.png b/translated_images/category-length-02.7304bf519375c9807d8165cc7ec60dd2a60f7b365b23098538e287d89adb7d76.ms.png new file mode 100644 index 00000000..9ae20523 Binary files /dev/null and b/translated_images/category-length-02.7304bf519375c9807d8165cc7ec60dd2a60f7b365b23098538e287d89adb7d76.ms.png differ diff --git a/translated_images/category-length-02.7304bf519375c9807d8165cc7ec60dd2a60f7b365b23098538e287d89adb7d76.vi.png b/translated_images/category-length-02.7304bf519375c9807d8165cc7ec60dd2a60f7b365b23098538e287d89adb7d76.vi.png new file mode 100644 index 00000000..1eca1bcd Binary files /dev/null and b/translated_images/category-length-02.7304bf519375c9807d8165cc7ec60dd2a60f7b365b23098538e287d89adb7d76.vi.png differ diff --git a/translated_images/category-length.7e34c296690e85d64f7e4d25a56077442683eca96c4f5b4eae120a64c0755636.id.png b/translated_images/category-length.7e34c296690e85d64f7e4d25a56077442683eca96c4f5b4eae120a64c0755636.id.png new file mode 100644 index 00000000..1ffe28ef Binary files /dev/null and b/translated_images/category-length.7e34c296690e85d64f7e4d25a56077442683eca96c4f5b4eae120a64c0755636.id.png differ diff --git a/translated_images/category-length.7e34c296690e85d64f7e4d25a56077442683eca96c4f5b4eae120a64c0755636.ms.png b/translated_images/category-length.7e34c296690e85d64f7e4d25a56077442683eca96c4f5b4eae120a64c0755636.ms.png new file mode 100644 index 00000000..1f05c585 Binary files /dev/null and b/translated_images/category-length.7e34c296690e85d64f7e4d25a56077442683eca96c4f5b4eae120a64c0755636.ms.png differ diff --git a/translated_images/category-length.7e34c296690e85d64f7e4d25a56077442683eca96c4f5b4eae120a64c0755636.vi.png b/translated_images/category-length.7e34c296690e85d64f7e4d25a56077442683eca96c4f5b4eae120a64c0755636.vi.png new file mode 100644 index 00000000..b822e597 Binary files /dev/null and b/translated_images/category-length.7e34c296690e85d64f7e4d25a56077442683eca96c4f5b4eae120a64c0755636.vi.png differ diff --git a/translated_images/category-length.b0d9a0208a7b37136bed52d3abd90190543fbca94bde6f51652313cc6d017187.id.png b/translated_images/category-length.b0d9a0208a7b37136bed52d3abd90190543fbca94bde6f51652313cc6d017187.id.png new file mode 100644 index 00000000..bea2b83a Binary files /dev/null and b/translated_images/category-length.b0d9a0208a7b37136bed52d3abd90190543fbca94bde6f51652313cc6d017187.id.png differ diff --git a/translated_images/category-length.b0d9a0208a7b37136bed52d3abd90190543fbca94bde6f51652313cc6d017187.ms.png b/translated_images/category-length.b0d9a0208a7b37136bed52d3abd90190543fbca94bde6f51652313cc6d017187.ms.png new file mode 100644 index 00000000..bea2b83a Binary files /dev/null and b/translated_images/category-length.b0d9a0208a7b37136bed52d3abd90190543fbca94bde6f51652313cc6d017187.ms.png differ diff --git a/translated_images/category-length.b0d9a0208a7b37136bed52d3abd90190543fbca94bde6f51652313cc6d017187.vi.png b/translated_images/category-length.b0d9a0208a7b37136bed52d3abd90190543fbca94bde6f51652313cc6d017187.vi.png new file mode 100644 index 00000000..bea2b83a Binary files /dev/null and b/translated_images/category-length.b0d9a0208a7b37136bed52d3abd90190543fbca94bde6f51652313cc6d017187.vi.png differ diff --git a/translated_images/cloud-picture.f5526de3c6c6387b2d656ba94f019b3352e5e3854a78440e4fb00c93e2dea675.id.jpg b/translated_images/cloud-picture.f5526de3c6c6387b2d656ba94f019b3352e5e3854a78440e4fb00c93e2dea675.id.jpg new file mode 100644 index 00000000..30a2ba6e Binary files /dev/null and b/translated_images/cloud-picture.f5526de3c6c6387b2d656ba94f019b3352e5e3854a78440e4fb00c93e2dea675.id.jpg differ diff --git a/translated_images/cloud-picture.f5526de3c6c6387b2d656ba94f019b3352e5e3854a78440e4fb00c93e2dea675.ms.jpg b/translated_images/cloud-picture.f5526de3c6c6387b2d656ba94f019b3352e5e3854a78440e4fb00c93e2dea675.ms.jpg new file mode 100644 index 00000000..30a2ba6e Binary files /dev/null and b/translated_images/cloud-picture.f5526de3c6c6387b2d656ba94f019b3352e5e3854a78440e4fb00c93e2dea675.ms.jpg differ diff --git a/translated_images/cloud-picture.f5526de3c6c6387b2d656ba94f019b3352e5e3854a78440e4fb00c93e2dea675.vi.jpg b/translated_images/cloud-picture.f5526de3c6c6387b2d656ba94f019b3352e5e3854a78440e4fb00c93e2dea675.vi.jpg new file mode 100644 index 00000000..30a2ba6e Binary files /dev/null and b/translated_images/cloud-picture.f5526de3c6c6387b2d656ba94f019b3352e5e3854a78440e4fb00c93e2dea675.vi.jpg differ diff --git a/translated_images/cluster-1.b78cb630bb543729b11f60c34d97110a263f8c27b516ba4dc47807b3cee5579f.id.png b/translated_images/cluster-1.b78cb630bb543729b11f60c34d97110a263f8c27b516ba4dc47807b3cee5579f.id.png new file mode 100644 index 00000000..9ee34520 Binary files /dev/null and b/translated_images/cluster-1.b78cb630bb543729b11f60c34d97110a263f8c27b516ba4dc47807b3cee5579f.id.png differ diff --git a/translated_images/cluster-1.b78cb630bb543729b11f60c34d97110a263f8c27b516ba4dc47807b3cee5579f.ms.png b/translated_images/cluster-1.b78cb630bb543729b11f60c34d97110a263f8c27b516ba4dc47807b3cee5579f.ms.png new file mode 100644 index 00000000..3d7bcda7 Binary files /dev/null and b/translated_images/cluster-1.b78cb630bb543729b11f60c34d97110a263f8c27b516ba4dc47807b3cee5579f.ms.png differ diff --git a/translated_images/cluster-1.b78cb630bb543729b11f60c34d97110a263f8c27b516ba4dc47807b3cee5579f.vi.png b/translated_images/cluster-1.b78cb630bb543729b11f60c34d97110a263f8c27b516ba4dc47807b3cee5579f.vi.png new file mode 100644 index 00000000..11e97bea Binary files /dev/null and b/translated_images/cluster-1.b78cb630bb543729b11f60c34d97110a263f8c27b516ba4dc47807b3cee5579f.vi.png differ diff --git a/translated_images/cluster-2.ea30cdbc9f926bb9e05af3fdbc1f679811c796dc2a6847f935290aec15526e88.id.png b/translated_images/cluster-2.ea30cdbc9f926bb9e05af3fdbc1f679811c796dc2a6847f935290aec15526e88.id.png new file mode 100644 index 00000000..2e35e1f7 Binary files /dev/null and b/translated_images/cluster-2.ea30cdbc9f926bb9e05af3fdbc1f679811c796dc2a6847f935290aec15526e88.id.png differ diff --git a/translated_images/cluster-2.ea30cdbc9f926bb9e05af3fdbc1f679811c796dc2a6847f935290aec15526e88.ms.png b/translated_images/cluster-2.ea30cdbc9f926bb9e05af3fdbc1f679811c796dc2a6847f935290aec15526e88.ms.png new file mode 100644 index 00000000..81c68941 Binary files /dev/null and b/translated_images/cluster-2.ea30cdbc9f926bb9e05af3fdbc1f679811c796dc2a6847f935290aec15526e88.ms.png differ diff --git a/translated_images/cluster-2.ea30cdbc9f926bb9e05af3fdbc1f679811c796dc2a6847f935290aec15526e88.vi.png b/translated_images/cluster-2.ea30cdbc9f926bb9e05af3fdbc1f679811c796dc2a6847f935290aec15526e88.vi.png new file mode 100644 index 00000000..2b466571 Binary files /dev/null and b/translated_images/cluster-2.ea30cdbc9f926bb9e05af3fdbc1f679811c796dc2a6847f935290aec15526e88.vi.png differ diff --git a/translated_images/cluster-3.8a334bc070ec173a329ce5abd2a9d727542e83eb2347676c9af20f2c8870b3e7.id.png b/translated_images/cluster-3.8a334bc070ec173a329ce5abd2a9d727542e83eb2347676c9af20f2c8870b3e7.id.png new file mode 100644 index 00000000..e9b28700 Binary files /dev/null and b/translated_images/cluster-3.8a334bc070ec173a329ce5abd2a9d727542e83eb2347676c9af20f2c8870b3e7.id.png differ diff --git a/translated_images/cluster-3.8a334bc070ec173a329ce5abd2a9d727542e83eb2347676c9af20f2c8870b3e7.ms.png b/translated_images/cluster-3.8a334bc070ec173a329ce5abd2a9d727542e83eb2347676c9af20f2c8870b3e7.ms.png new file mode 100644 index 00000000..df705972 Binary files /dev/null and b/translated_images/cluster-3.8a334bc070ec173a329ce5abd2a9d727542e83eb2347676c9af20f2c8870b3e7.ms.png differ diff --git a/translated_images/cluster-3.8a334bc070ec173a329ce5abd2a9d727542e83eb2347676c9af20f2c8870b3e7.vi.png b/translated_images/cluster-3.8a334bc070ec173a329ce5abd2a9d727542e83eb2347676c9af20f2c8870b3e7.vi.png new file mode 100644 index 00000000..43807b51 Binary files /dev/null and b/translated_images/cluster-3.8a334bc070ec173a329ce5abd2a9d727542e83eb2347676c9af20f2c8870b3e7.vi.png differ diff --git a/translated_images/columnar-db.ffcfe73c3e9063a8c8f93f8ace85e1200863584b1e324eb5159d8ca10f62ec04.id.png b/translated_images/columnar-db.ffcfe73c3e9063a8c8f93f8ace85e1200863584b1e324eb5159d8ca10f62ec04.id.png new file mode 100644 index 00000000..3cf94264 Binary files /dev/null and b/translated_images/columnar-db.ffcfe73c3e9063a8c8f93f8ace85e1200863584b1e324eb5159d8ca10f62ec04.id.png differ diff --git a/translated_images/columnar-db.ffcfe73c3e9063a8c8f93f8ace85e1200863584b1e324eb5159d8ca10f62ec04.ms.png b/translated_images/columnar-db.ffcfe73c3e9063a8c8f93f8ace85e1200863584b1e324eb5159d8ca10f62ec04.ms.png new file mode 100644 index 00000000..fd476b1c Binary files /dev/null and b/translated_images/columnar-db.ffcfe73c3e9063a8c8f93f8ace85e1200863584b1e324eb5159d8ca10f62ec04.ms.png differ diff --git a/translated_images/columnar-db.ffcfe73c3e9063a8c8f93f8ace85e1200863584b1e324eb5159d8ca10f62ec04.vi.png b/translated_images/columnar-db.ffcfe73c3e9063a8c8f93f8ace85e1200863584b1e324eb5159d8ca10f62ec04.vi.png new file mode 100644 index 00000000..06c5b841 Binary files /dev/null and b/translated_images/columnar-db.ffcfe73c3e9063a8c8f93f8ace85e1200863584b1e324eb5159d8ca10f62ec04.vi.png differ diff --git a/translated_images/communication.06d8e2a88d30d168d661ad9f9f0a4f947ebff3719719cfdaf9ed00a406a01ead.id.jpg b/translated_images/communication.06d8e2a88d30d168d661ad9f9f0a4f947ebff3719719cfdaf9ed00a406a01ead.id.jpg new file mode 100644 index 00000000..59186b72 Binary files /dev/null and b/translated_images/communication.06d8e2a88d30d168d661ad9f9f0a4f947ebff3719719cfdaf9ed00a406a01ead.id.jpg differ diff --git a/translated_images/communication.06d8e2a88d30d168d661ad9f9f0a4f947ebff3719719cfdaf9ed00a406a01ead.ms.jpg b/translated_images/communication.06d8e2a88d30d168d661ad9f9f0a4f947ebff3719719cfdaf9ed00a406a01ead.ms.jpg new file mode 100644 index 00000000..59186b72 Binary files /dev/null and b/translated_images/communication.06d8e2a88d30d168d661ad9f9f0a4f947ebff3719719cfdaf9ed00a406a01ead.ms.jpg differ diff --git a/translated_images/communication.06d8e2a88d30d168d661ad9f9f0a4f947ebff3719719cfdaf9ed00a406a01ead.vi.jpg b/translated_images/communication.06d8e2a88d30d168d661ad9f9f0a4f947ebff3719719cfdaf9ed00a406a01ead.vi.jpg new file mode 100644 index 00000000..59186b72 Binary files /dev/null and b/translated_images/communication.06d8e2a88d30d168d661ad9f9f0a4f947ebff3719719cfdaf9ed00a406a01ead.vi.jpg differ diff --git a/translated_images/comparingdata.f486a450d61c7ca5416f27f3f55a6a4465d00df3be5e6d33936e9b07b95e2fdd.id.png b/translated_images/comparingdata.f486a450d61c7ca5416f27f3f55a6a4465d00df3be5e6d33936e9b07b95e2fdd.id.png new file mode 100644 index 00000000..5e993515 Binary files /dev/null and b/translated_images/comparingdata.f486a450d61c7ca5416f27f3f55a6a4465d00df3be5e6d33936e9b07b95e2fdd.id.png differ diff --git a/translated_images/comparingdata.f486a450d61c7ca5416f27f3f55a6a4465d00df3be5e6d33936e9b07b95e2fdd.ms.png b/translated_images/comparingdata.f486a450d61c7ca5416f27f3f55a6a4465d00df3be5e6d33936e9b07b95e2fdd.ms.png new file mode 100644 index 00000000..85d951cd Binary files /dev/null and b/translated_images/comparingdata.f486a450d61c7ca5416f27f3f55a6a4465d00df3be5e6d33936e9b07b95e2fdd.ms.png differ diff --git a/translated_images/comparingdata.f486a450d61c7ca5416f27f3f55a6a4465d00df3be5e6d33936e9b07b95e2fdd.vi.png b/translated_images/comparingdata.f486a450d61c7ca5416f27f3f55a6a4465d00df3be5e6d33936e9b07b95e2fdd.vi.png new file mode 100644 index 00000000..2d521d88 Binary files /dev/null and b/translated_images/comparingdata.f486a450d61c7ca5416f27f3f55a6a4465d00df3be5e6d33936e9b07b95e2fdd.vi.png differ diff --git a/translated_images/compute-instance-1.dba347cb199ca4996b3e3d649295ed95626ba481479d3986557b9b98e76d8816.id.png b/translated_images/compute-instance-1.dba347cb199ca4996b3e3d649295ed95626ba481479d3986557b9b98e76d8816.id.png new file mode 100644 index 00000000..b1363d87 Binary files /dev/null and b/translated_images/compute-instance-1.dba347cb199ca4996b3e3d649295ed95626ba481479d3986557b9b98e76d8816.id.png differ diff --git a/translated_images/compute-instance-1.dba347cb199ca4996b3e3d649295ed95626ba481479d3986557b9b98e76d8816.ms.png b/translated_images/compute-instance-1.dba347cb199ca4996b3e3d649295ed95626ba481479d3986557b9b98e76d8816.ms.png new file mode 100644 index 00000000..0c948ba7 Binary files /dev/null and b/translated_images/compute-instance-1.dba347cb199ca4996b3e3d649295ed95626ba481479d3986557b9b98e76d8816.ms.png differ diff --git a/translated_images/compute-instance-1.dba347cb199ca4996b3e3d649295ed95626ba481479d3986557b9b98e76d8816.vi.png b/translated_images/compute-instance-1.dba347cb199ca4996b3e3d649295ed95626ba481479d3986557b9b98e76d8816.vi.png new file mode 100644 index 00000000..f03baa6f Binary files /dev/null and b/translated_images/compute-instance-1.dba347cb199ca4996b3e3d649295ed95626ba481479d3986557b9b98e76d8816.vi.png differ diff --git a/translated_images/consumption-1.700abd196452842a020c7d745908637a6e4c5c50494ad1217be80e283e0de154.id.png b/translated_images/consumption-1.700abd196452842a020c7d745908637a6e4c5c50494ad1217be80e283e0de154.id.png new file mode 100644 index 00000000..243fb3d8 Binary files /dev/null and b/translated_images/consumption-1.700abd196452842a020c7d745908637a6e4c5c50494ad1217be80e283e0de154.id.png differ diff --git a/translated_images/consumption-1.700abd196452842a020c7d745908637a6e4c5c50494ad1217be80e283e0de154.ms.png b/translated_images/consumption-1.700abd196452842a020c7d745908637a6e4c5c50494ad1217be80e283e0de154.ms.png new file mode 100644 index 00000000..33198638 Binary files /dev/null and b/translated_images/consumption-1.700abd196452842a020c7d745908637a6e4c5c50494ad1217be80e283e0de154.ms.png differ diff --git a/translated_images/consumption-1.700abd196452842a020c7d745908637a6e4c5c50494ad1217be80e283e0de154.vi.png b/translated_images/consumption-1.700abd196452842a020c7d745908637a6e4c5c50494ad1217be80e283e0de154.vi.png new file mode 100644 index 00000000..1c2cf8eb Binary files /dev/null and b/translated_images/consumption-1.700abd196452842a020c7d745908637a6e4c5c50494ad1217be80e283e0de154.vi.png differ diff --git a/translated_images/cosmosdb-emulator-explorer.a1c80b1347206fe2f30f88fc123821636587d04fc5a56a9eb350c7da6b31f361.id.png b/translated_images/cosmosdb-emulator-explorer.a1c80b1347206fe2f30f88fc123821636587d04fc5a56a9eb350c7da6b31f361.id.png new file mode 100644 index 00000000..adc95df4 Binary files /dev/null and b/translated_images/cosmosdb-emulator-explorer.a1c80b1347206fe2f30f88fc123821636587d04fc5a56a9eb350c7da6b31f361.id.png differ diff --git a/translated_images/cosmosdb-emulator-explorer.a1c80b1347206fe2f30f88fc123821636587d04fc5a56a9eb350c7da6b31f361.ms.png b/translated_images/cosmosdb-emulator-explorer.a1c80b1347206fe2f30f88fc123821636587d04fc5a56a9eb350c7da6b31f361.ms.png new file mode 100644 index 00000000..503f58c3 Binary files /dev/null and b/translated_images/cosmosdb-emulator-explorer.a1c80b1347206fe2f30f88fc123821636587d04fc5a56a9eb350c7da6b31f361.ms.png differ diff --git a/translated_images/cosmosdb-emulator-explorer.a1c80b1347206fe2f30f88fc123821636587d04fc5a56a9eb350c7da6b31f361.vi.png b/translated_images/cosmosdb-emulator-explorer.a1c80b1347206fe2f30f88fc123821636587d04fc5a56a9eb350c7da6b31f361.vi.png new file mode 100644 index 00000000..5930a5ea Binary files /dev/null and b/translated_images/cosmosdb-emulator-explorer.a1c80b1347206fe2f30f88fc123821636587d04fc5a56a9eb350c7da6b31f361.vi.png differ diff --git a/translated_images/cosmosdb-emulator-persons-query.6905ebb497e3cd047cd96e55a0a03f69ce1b91b2b3d8c147e617b746b22b7e33.id.png b/translated_images/cosmosdb-emulator-persons-query.6905ebb497e3cd047cd96e55a0a03f69ce1b91b2b3d8c147e617b746b22b7e33.id.png new file mode 100644 index 00000000..cb5b964f Binary files /dev/null and b/translated_images/cosmosdb-emulator-persons-query.6905ebb497e3cd047cd96e55a0a03f69ce1b91b2b3d8c147e617b746b22b7e33.id.png differ diff --git a/translated_images/cosmosdb-emulator-persons-query.6905ebb497e3cd047cd96e55a0a03f69ce1b91b2b3d8c147e617b746b22b7e33.ms.png b/translated_images/cosmosdb-emulator-persons-query.6905ebb497e3cd047cd96e55a0a03f69ce1b91b2b3d8c147e617b746b22b7e33.ms.png new file mode 100644 index 00000000..bccdd030 Binary files /dev/null and b/translated_images/cosmosdb-emulator-persons-query.6905ebb497e3cd047cd96e55a0a03f69ce1b91b2b3d8c147e617b746b22b7e33.ms.png differ diff --git a/translated_images/cosmosdb-emulator-persons-query.6905ebb497e3cd047cd96e55a0a03f69ce1b91b2b3d8c147e617b746b22b7e33.vi.png b/translated_images/cosmosdb-emulator-persons-query.6905ebb497e3cd047cd96e55a0a03f69ce1b91b2b3d8c147e617b746b22b7e33.vi.png new file mode 100644 index 00000000..0b11942a Binary files /dev/null and b/translated_images/cosmosdb-emulator-persons-query.6905ebb497e3cd047cd96e55a0a03f69ce1b91b2b3d8c147e617b746b22b7e33.vi.png differ diff --git a/translated_images/cosmosdb-emulator-persons.bf640586a7077c8985dfd3071946465c8e074c722c7c202d6d714de99a93b90a.id.png b/translated_images/cosmosdb-emulator-persons.bf640586a7077c8985dfd3071946465c8e074c722c7c202d6d714de99a93b90a.id.png new file mode 100644 index 00000000..114730d1 Binary files /dev/null and b/translated_images/cosmosdb-emulator-persons.bf640586a7077c8985dfd3071946465c8e074c722c7c202d6d714de99a93b90a.id.png differ diff --git a/translated_images/cosmosdb-emulator-persons.bf640586a7077c8985dfd3071946465c8e074c722c7c202d6d714de99a93b90a.ms.png b/translated_images/cosmosdb-emulator-persons.bf640586a7077c8985dfd3071946465c8e074c722c7c202d6d714de99a93b90a.ms.png new file mode 100644 index 00000000..5c231a41 Binary files /dev/null and b/translated_images/cosmosdb-emulator-persons.bf640586a7077c8985dfd3071946465c8e074c722c7c202d6d714de99a93b90a.ms.png differ diff --git a/translated_images/cosmosdb-emulator-persons.bf640586a7077c8985dfd3071946465c8e074c722c7c202d6d714de99a93b90a.vi.png b/translated_images/cosmosdb-emulator-persons.bf640586a7077c8985dfd3071946465c8e074c722c7c202d6d714de99a93b90a.vi.png new file mode 100644 index 00000000..84470328 Binary files /dev/null and b/translated_images/cosmosdb-emulator-persons.bf640586a7077c8985dfd3071946465c8e074c722c7c202d6d714de99a93b90a.vi.png differ diff --git a/translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.id.png b/translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.id.png new file mode 100644 index 00000000..851e25ad Binary files /dev/null and b/translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.id.png differ diff --git a/translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.ms.png b/translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.ms.png new file mode 100644 index 00000000..851e25ad Binary files /dev/null and b/translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.ms.png differ diff --git a/translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.vi.png b/translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.vi.png new file mode 100644 index 00000000..144860bf Binary files /dev/null and b/translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.vi.png differ diff --git a/translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.id.png b/translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.id.png new file mode 100644 index 00000000..28ce40f3 Binary files /dev/null and b/translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.id.png differ diff --git a/translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.ms.png b/translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.ms.png new file mode 100644 index 00000000..3468e16f Binary files /dev/null and b/translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.ms.png differ diff --git a/translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.vi.png b/translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.vi.png new file mode 100644 index 00000000..2740b3a3 Binary files /dev/null and b/translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.vi.png differ diff --git a/translated_images/data-love.a22ef29e6742c852505ada062920956d3d7604870b281a8ca7c7ac6f37381d5a.id.jpg b/translated_images/data-love.a22ef29e6742c852505ada062920956d3d7604870b281a8ca7c7ac6f37381d5a.id.jpg new file mode 100644 index 00000000..54145b36 Binary files /dev/null and b/translated_images/data-love.a22ef29e6742c852505ada062920956d3d7604870b281a8ca7c7ac6f37381d5a.id.jpg differ diff --git a/translated_images/data-love.a22ef29e6742c852505ada062920956d3d7604870b281a8ca7c7ac6f37381d5a.ms.jpg b/translated_images/data-love.a22ef29e6742c852505ada062920956d3d7604870b281a8ca7c7ac6f37381d5a.ms.jpg new file mode 100644 index 00000000..54145b36 Binary files /dev/null and b/translated_images/data-love.a22ef29e6742c852505ada062920956d3d7604870b281a8ca7c7ac6f37381d5a.ms.jpg differ diff --git a/translated_images/data-love.a22ef29e6742c852505ada062920956d3d7604870b281a8ca7c7ac6f37381d5a.vi.jpg b/translated_images/data-love.a22ef29e6742c852505ada062920956d3d7604870b281a8ca7c7ac6f37381d5a.vi.jpg new file mode 100644 index 00000000..54145b36 Binary files /dev/null and b/translated_images/data-love.a22ef29e6742c852505ada062920956d3d7604870b281a8ca7c7ac6f37381d5a.vi.jpg differ diff --git a/translated_images/data-science-applications.4e5019cd8790ebac2277ff5f08af386f8727cac5d30f77727c7090677e6adb9c.id.png b/translated_images/data-science-applications.4e5019cd8790ebac2277ff5f08af386f8727cac5d30f77727c7090677e6adb9c.id.png new file mode 100644 index 00000000..0b253c14 Binary files /dev/null and b/translated_images/data-science-applications.4e5019cd8790ebac2277ff5f08af386f8727cac5d30f77727c7090677e6adb9c.id.png differ diff --git a/translated_images/data-science-applications.4e5019cd8790ebac2277ff5f08af386f8727cac5d30f77727c7090677e6adb9c.ms.png b/translated_images/data-science-applications.4e5019cd8790ebac2277ff5f08af386f8727cac5d30f77727c7090677e6adb9c.ms.png new file mode 100644 index 00000000..0057e18b Binary files /dev/null and b/translated_images/data-science-applications.4e5019cd8790ebac2277ff5f08af386f8727cac5d30f77727c7090677e6adb9c.ms.png differ diff --git a/translated_images/data-science-applications.4e5019cd8790ebac2277ff5f08af386f8727cac5d30f77727c7090677e6adb9c.vi.png b/translated_images/data-science-applications.4e5019cd8790ebac2277ff5f08af386f8727cac5d30f77727c7090677e6adb9c.vi.png new file mode 100644 index 00000000..6cbe913f Binary files /dev/null and b/translated_images/data-science-applications.4e5019cd8790ebac2277ff5f08af386f8727cac5d30f77727c7090677e6adb9c.vi.png differ diff --git a/translated_images/data-science-lifecycle.a1e362637503c4fb0cd5e859d7552edcdb4aa629a279727008baa121f2d33f32.id.jpg b/translated_images/data-science-lifecycle.a1e362637503c4fb0cd5e859d7552edcdb4aa629a279727008baa121f2d33f32.id.jpg new file mode 100644 index 00000000..fccb211c Binary files /dev/null and b/translated_images/data-science-lifecycle.a1e362637503c4fb0cd5e859d7552edcdb4aa629a279727008baa121f2d33f32.id.jpg differ diff --git a/translated_images/data-science-lifecycle.a1e362637503c4fb0cd5e859d7552edcdb4aa629a279727008baa121f2d33f32.ms.jpg b/translated_images/data-science-lifecycle.a1e362637503c4fb0cd5e859d7552edcdb4aa629a279727008baa121f2d33f32.ms.jpg new file mode 100644 index 00000000..1db4c416 Binary files /dev/null and b/translated_images/data-science-lifecycle.a1e362637503c4fb0cd5e859d7552edcdb4aa629a279727008baa121f2d33f32.ms.jpg differ diff --git a/translated_images/data-science-lifecycle.a1e362637503c4fb0cd5e859d7552edcdb4aa629a279727008baa121f2d33f32.vi.jpg b/translated_images/data-science-lifecycle.a1e362637503c4fb0cd5e859d7552edcdb4aa629a279727008baa121f2d33f32.vi.jpg new file mode 100644 index 00000000..f4d065c8 Binary files /dev/null and b/translated_images/data-science-lifecycle.a1e362637503c4fb0cd5e859d7552edcdb4aa629a279727008baa121f2d33f32.vi.jpg differ diff --git a/translated_images/data.48e22bb7617d8d92188afbc4c48effb920ba79f5cebdc0652cd9f34bbbd90c18.id.jpg b/translated_images/data.48e22bb7617d8d92188afbc4c48effb920ba79f5cebdc0652cd9f34bbbd90c18.id.jpg new file mode 100644 index 00000000..745de649 Binary files /dev/null and b/translated_images/data.48e22bb7617d8d92188afbc4c48effb920ba79f5cebdc0652cd9f34bbbd90c18.id.jpg differ diff --git a/translated_images/data.48e22bb7617d8d92188afbc4c48effb920ba79f5cebdc0652cd9f34bbbd90c18.ms.jpg b/translated_images/data.48e22bb7617d8d92188afbc4c48effb920ba79f5cebdc0652cd9f34bbbd90c18.ms.jpg new file mode 100644 index 00000000..d13625e1 Binary files /dev/null and b/translated_images/data.48e22bb7617d8d92188afbc4c48effb920ba79f5cebdc0652cd9f34bbbd90c18.ms.jpg differ diff --git a/translated_images/data.48e22bb7617d8d92188afbc4c48effb920ba79f5cebdc0652cd9f34bbbd90c18.vi.jpg b/translated_images/data.48e22bb7617d8d92188afbc4c48effb920ba79f5cebdc0652cd9f34bbbd90c18.vi.jpg new file mode 100644 index 00000000..92eb882e Binary files /dev/null and b/translated_images/data.48e22bb7617d8d92188afbc4c48effb920ba79f5cebdc0652cd9f34bbbd90c18.vi.jpg differ diff --git a/translated_images/dataframe-1.caf409f0c688e84c85b793998b945f3cb66554e13dbb490d4a52f37909a41eb4.id.png b/translated_images/dataframe-1.caf409f0c688e84c85b793998b945f3cb66554e13dbb490d4a52f37909a41eb4.id.png new file mode 100644 index 00000000..6bc65dc6 Binary files /dev/null and b/translated_images/dataframe-1.caf409f0c688e84c85b793998b945f3cb66554e13dbb490d4a52f37909a41eb4.id.png differ diff --git a/translated_images/dataframe-1.caf409f0c688e84c85b793998b945f3cb66554e13dbb490d4a52f37909a41eb4.ms.png b/translated_images/dataframe-1.caf409f0c688e84c85b793998b945f3cb66554e13dbb490d4a52f37909a41eb4.ms.png new file mode 100644 index 00000000..1d5b1ffa Binary files /dev/null and b/translated_images/dataframe-1.caf409f0c688e84c85b793998b945f3cb66554e13dbb490d4a52f37909a41eb4.ms.png differ diff --git a/translated_images/dataframe-1.caf409f0c688e84c85b793998b945f3cb66554e13dbb490d4a52f37909a41eb4.vi.png b/translated_images/dataframe-1.caf409f0c688e84c85b793998b945f3cb66554e13dbb490d4a52f37909a41eb4.vi.png new file mode 100644 index 00000000..4418c6fa Binary files /dev/null and b/translated_images/dataframe-1.caf409f0c688e84c85b793998b945f3cb66554e13dbb490d4a52f37909a41eb4.vi.png differ diff --git a/translated_images/datascienceinthecloud.59ffb059a670fb0a68fee3f0f2906239b25240a57c3990b8c0809c9c7703eabd.id.jpg b/translated_images/datascienceinthecloud.59ffb059a670fb0a68fee3f0f2906239b25240a57c3990b8c0809c9c7703eabd.id.jpg new file mode 100644 index 00000000..31511ab0 Binary files /dev/null and b/translated_images/datascienceinthecloud.59ffb059a670fb0a68fee3f0f2906239b25240a57c3990b8c0809c9c7703eabd.id.jpg differ diff --git a/translated_images/datascienceinthecloud.59ffb059a670fb0a68fee3f0f2906239b25240a57c3990b8c0809c9c7703eabd.ms.jpg b/translated_images/datascienceinthecloud.59ffb059a670fb0a68fee3f0f2906239b25240a57c3990b8c0809c9c7703eabd.ms.jpg new file mode 100644 index 00000000..05dd3e68 Binary files /dev/null and b/translated_images/datascienceinthecloud.59ffb059a670fb0a68fee3f0f2906239b25240a57c3990b8c0809c9c7703eabd.ms.jpg differ diff --git a/translated_images/datascienceinthecloud.59ffb059a670fb0a68fee3f0f2906239b25240a57c3990b8c0809c9c7703eabd.vi.jpg b/translated_images/datascienceinthecloud.59ffb059a670fb0a68fee3f0f2906239b25240a57c3990b8c0809c9c7703eabd.vi.jpg new file mode 100644 index 00000000..5dd96271 Binary files /dev/null and b/translated_images/datascienceinthecloud.59ffb059a670fb0a68fee3f0f2906239b25240a57c3990b8c0809c9c7703eabd.vi.jpg differ diff --git a/translated_images/dataset-1.e86ab4e10907a6e9c2a72577b51db35f13689cb33702337b8b7032f2ef76dac2.id.png b/translated_images/dataset-1.e86ab4e10907a6e9c2a72577b51db35f13689cb33702337b8b7032f2ef76dac2.id.png new file mode 100644 index 00000000..457b54c2 Binary files /dev/null and b/translated_images/dataset-1.e86ab4e10907a6e9c2a72577b51db35f13689cb33702337b8b7032f2ef76dac2.id.png differ diff --git a/translated_images/dataset-1.e86ab4e10907a6e9c2a72577b51db35f13689cb33702337b8b7032f2ef76dac2.ms.png b/translated_images/dataset-1.e86ab4e10907a6e9c2a72577b51db35f13689cb33702337b8b7032f2ef76dac2.ms.png new file mode 100644 index 00000000..6ca93458 Binary files /dev/null and b/translated_images/dataset-1.e86ab4e10907a6e9c2a72577b51db35f13689cb33702337b8b7032f2ef76dac2.ms.png differ diff --git a/translated_images/dataset-1.e86ab4e10907a6e9c2a72577b51db35f13689cb33702337b8b7032f2ef76dac2.vi.png b/translated_images/dataset-1.e86ab4e10907a6e9c2a72577b51db35f13689cb33702337b8b7032f2ef76dac2.vi.png new file mode 100644 index 00000000..c4b070ff Binary files /dev/null and b/translated_images/dataset-1.e86ab4e10907a6e9c2a72577b51db35f13689cb33702337b8b7032f2ef76dac2.vi.png differ diff --git a/translated_images/dataset-2.f58de1c435d5bf9ccb16ccc5f5d4380eb2b50affca85cfbf4f97562bdab99f77.id.png b/translated_images/dataset-2.f58de1c435d5bf9ccb16ccc5f5d4380eb2b50affca85cfbf4f97562bdab99f77.id.png new file mode 100644 index 00000000..4a4ea450 Binary files /dev/null and b/translated_images/dataset-2.f58de1c435d5bf9ccb16ccc5f5d4380eb2b50affca85cfbf4f97562bdab99f77.id.png differ diff --git a/translated_images/dataset-2.f58de1c435d5bf9ccb16ccc5f5d4380eb2b50affca85cfbf4f97562bdab99f77.ms.png b/translated_images/dataset-2.f58de1c435d5bf9ccb16ccc5f5d4380eb2b50affca85cfbf4f97562bdab99f77.ms.png new file mode 100644 index 00000000..92259757 Binary files /dev/null and b/translated_images/dataset-2.f58de1c435d5bf9ccb16ccc5f5d4380eb2b50affca85cfbf4f97562bdab99f77.ms.png differ diff --git a/translated_images/dataset-2.f58de1c435d5bf9ccb16ccc5f5d4380eb2b50affca85cfbf4f97562bdab99f77.vi.png b/translated_images/dataset-2.f58de1c435d5bf9ccb16ccc5f5d4380eb2b50affca85cfbf4f97562bdab99f77.vi.png new file mode 100644 index 00000000..cd326a0d Binary files /dev/null and b/translated_images/dataset-2.f58de1c435d5bf9ccb16ccc5f5d4380eb2b50affca85cfbf4f97562bdab99f77.vi.png differ diff --git a/translated_images/dataset-3.58db8c0eb783e89236a02bbce5bb4ba808d081a87d994d5284b1ae59928c95bf.id.png b/translated_images/dataset-3.58db8c0eb783e89236a02bbce5bb4ba808d081a87d994d5284b1ae59928c95bf.id.png new file mode 100644 index 00000000..64546029 Binary files /dev/null and b/translated_images/dataset-3.58db8c0eb783e89236a02bbce5bb4ba808d081a87d994d5284b1ae59928c95bf.id.png differ diff --git a/translated_images/dataset-3.58db8c0eb783e89236a02bbce5bb4ba808d081a87d994d5284b1ae59928c95bf.ms.png b/translated_images/dataset-3.58db8c0eb783e89236a02bbce5bb4ba808d081a87d994d5284b1ae59928c95bf.ms.png new file mode 100644 index 00000000..7e27a8ae Binary files /dev/null and b/translated_images/dataset-3.58db8c0eb783e89236a02bbce5bb4ba808d081a87d994d5284b1ae59928c95bf.ms.png differ diff --git a/translated_images/dataset-3.58db8c0eb783e89236a02bbce5bb4ba808d081a87d994d5284b1ae59928c95bf.vi.png b/translated_images/dataset-3.58db8c0eb783e89236a02bbce5bb4ba808d081a87d994d5284b1ae59928c95bf.vi.png new file mode 100644 index 00000000..c7812d2c Binary files /dev/null and b/translated_images/dataset-3.58db8c0eb783e89236a02bbce5bb4ba808d081a87d994d5284b1ae59928c95bf.vi.png differ diff --git a/translated_images/density-plot.675ccf865b76c690487fb7f69420a8444a3515f03bad5482886232d4330f5c85.id.png b/translated_images/density-plot.675ccf865b76c690487fb7f69420a8444a3515f03bad5482886232d4330f5c85.id.png new file mode 100644 index 00000000..d3df4531 Binary files /dev/null and b/translated_images/density-plot.675ccf865b76c690487fb7f69420a8444a3515f03bad5482886232d4330f5c85.id.png differ diff --git a/translated_images/density-plot.675ccf865b76c690487fb7f69420a8444a3515f03bad5482886232d4330f5c85.ms.png b/translated_images/density-plot.675ccf865b76c690487fb7f69420a8444a3515f03bad5482886232d4330f5c85.ms.png new file mode 100644 index 00000000..16a4fbb5 Binary files /dev/null and b/translated_images/density-plot.675ccf865b76c690487fb7f69420a8444a3515f03bad5482886232d4330f5c85.ms.png differ diff --git a/translated_images/density-plot.675ccf865b76c690487fb7f69420a8444a3515f03bad5482886232d4330f5c85.vi.png b/translated_images/density-plot.675ccf865b76c690487fb7f69420a8444a3515f03bad5482886232d4330f5c85.vi.png new file mode 100644 index 00000000..d9e38855 Binary files /dev/null and b/translated_images/density-plot.675ccf865b76c690487fb7f69420a8444a3515f03bad5482886232d4330f5c85.vi.png differ diff --git a/translated_images/density1.8801043bd4af2567b0f706332b5853c7614e5e4b81b457acc27eb4e092a65cbd.id.png b/translated_images/density1.8801043bd4af2567b0f706332b5853c7614e5e4b81b457acc27eb4e092a65cbd.id.png new file mode 100644 index 00000000..826e5489 Binary files /dev/null and b/translated_images/density1.8801043bd4af2567b0f706332b5853c7614e5e4b81b457acc27eb4e092a65cbd.id.png differ diff --git a/translated_images/density1.8801043bd4af2567b0f706332b5853c7614e5e4b81b457acc27eb4e092a65cbd.ms.png b/translated_images/density1.8801043bd4af2567b0f706332b5853c7614e5e4b81b457acc27eb4e092a65cbd.ms.png new file mode 100644 index 00000000..23a711ec Binary files /dev/null and b/translated_images/density1.8801043bd4af2567b0f706332b5853c7614e5e4b81b457acc27eb4e092a65cbd.ms.png differ diff --git a/translated_images/density1.8801043bd4af2567b0f706332b5853c7614e5e4b81b457acc27eb4e092a65cbd.vi.png b/translated_images/density1.8801043bd4af2567b0f706332b5853c7614e5e4b81b457acc27eb4e092a65cbd.vi.png new file mode 100644 index 00000000..731e94b9 Binary files /dev/null and b/translated_images/density1.8801043bd4af2567b0f706332b5853c7614e5e4b81b457acc27eb4e092a65cbd.vi.png differ diff --git a/translated_images/density2.8e7647257060ff544a1aaded57e8dd1887586bfe340139e9b77ac1e5287f7977.id.png b/translated_images/density2.8e7647257060ff544a1aaded57e8dd1887586bfe340139e9b77ac1e5287f7977.id.png new file mode 100644 index 00000000..99005dbd Binary files /dev/null and b/translated_images/density2.8e7647257060ff544a1aaded57e8dd1887586bfe340139e9b77ac1e5287f7977.id.png differ diff --git a/translated_images/density2.8e7647257060ff544a1aaded57e8dd1887586bfe340139e9b77ac1e5287f7977.ms.png b/translated_images/density2.8e7647257060ff544a1aaded57e8dd1887586bfe340139e9b77ac1e5287f7977.ms.png new file mode 100644 index 00000000..0577b298 Binary files /dev/null and b/translated_images/density2.8e7647257060ff544a1aaded57e8dd1887586bfe340139e9b77ac1e5287f7977.ms.png differ diff --git a/translated_images/density2.8e7647257060ff544a1aaded57e8dd1887586bfe340139e9b77ac1e5287f7977.vi.png b/translated_images/density2.8e7647257060ff544a1aaded57e8dd1887586bfe340139e9b77ac1e5287f7977.vi.png new file mode 100644 index 00000000..5a8965a5 Binary files /dev/null and b/translated_images/density2.8e7647257060ff544a1aaded57e8dd1887586bfe340139e9b77ac1e5287f7977.vi.png differ diff --git a/translated_images/density3.84ae27da82f31e6b83ad977646f029a1d21186574d7581facd70123b3eb257ee.id.png b/translated_images/density3.84ae27da82f31e6b83ad977646f029a1d21186574d7581facd70123b3eb257ee.id.png new file mode 100644 index 00000000..ad9c0793 Binary files /dev/null and b/translated_images/density3.84ae27da82f31e6b83ad977646f029a1d21186574d7581facd70123b3eb257ee.id.png differ diff --git a/translated_images/density3.84ae27da82f31e6b83ad977646f029a1d21186574d7581facd70123b3eb257ee.ms.png b/translated_images/density3.84ae27da82f31e6b83ad977646f029a1d21186574d7581facd70123b3eb257ee.ms.png new file mode 100644 index 00000000..3fff79cb Binary files /dev/null and b/translated_images/density3.84ae27da82f31e6b83ad977646f029a1d21186574d7581facd70123b3eb257ee.ms.png differ diff --git a/translated_images/density3.84ae27da82f31e6b83ad977646f029a1d21186574d7581facd70123b3eb257ee.vi.png b/translated_images/density3.84ae27da82f31e6b83ad977646f029a1d21186574d7581facd70123b3eb257ee.vi.png new file mode 100644 index 00000000..76e24534 Binary files /dev/null and b/translated_images/density3.84ae27da82f31e6b83ad977646f029a1d21186574d7581facd70123b3eb257ee.vi.png differ diff --git a/translated_images/density4.e9d6c033f15c500fd33df94cb592b9f5cf1ed2a3d213c448a3f9e97ba39573ce.id.png b/translated_images/density4.e9d6c033f15c500fd33df94cb592b9f5cf1ed2a3d213c448a3f9e97ba39573ce.id.png new file mode 100644 index 00000000..f401a6a7 Binary files /dev/null and b/translated_images/density4.e9d6c033f15c500fd33df94cb592b9f5cf1ed2a3d213c448a3f9e97ba39573ce.id.png differ diff --git a/translated_images/density4.e9d6c033f15c500fd33df94cb592b9f5cf1ed2a3d213c448a3f9e97ba39573ce.ms.png b/translated_images/density4.e9d6c033f15c500fd33df94cb592b9f5cf1ed2a3d213c448a3f9e97ba39573ce.ms.png new file mode 100644 index 00000000..b3ef4ac4 Binary files /dev/null and b/translated_images/density4.e9d6c033f15c500fd33df94cb592b9f5cf1ed2a3d213c448a3f9e97ba39573ce.ms.png differ diff --git a/translated_images/density4.e9d6c033f15c500fd33df94cb592b9f5cf1ed2a3d213c448a3f9e97ba39573ce.vi.png b/translated_images/density4.e9d6c033f15c500fd33df94cb592b9f5cf1ed2a3d213c448a3f9e97ba39573ce.vi.png new file mode 100644 index 00000000..12e9bf36 Binary files /dev/null and b/translated_images/density4.e9d6c033f15c500fd33df94cb592b9f5cf1ed2a3d213c448a3f9e97ba39573ce.vi.png differ diff --git a/translated_images/deploy-1.ddad725acadc84e34553c3d09e727160faeb32527a9fb8b904c0f99235a34bb6.id.png b/translated_images/deploy-1.ddad725acadc84e34553c3d09e727160faeb32527a9fb8b904c0f99235a34bb6.id.png new file mode 100644 index 00000000..2c853b9d Binary files /dev/null and b/translated_images/deploy-1.ddad725acadc84e34553c3d09e727160faeb32527a9fb8b904c0f99235a34bb6.id.png differ diff --git a/translated_images/deploy-1.ddad725acadc84e34553c3d09e727160faeb32527a9fb8b904c0f99235a34bb6.ms.png b/translated_images/deploy-1.ddad725acadc84e34553c3d09e727160faeb32527a9fb8b904c0f99235a34bb6.ms.png new file mode 100644 index 00000000..23a70b78 Binary files /dev/null and b/translated_images/deploy-1.ddad725acadc84e34553c3d09e727160faeb32527a9fb8b904c0f99235a34bb6.ms.png differ diff --git a/translated_images/deploy-1.ddad725acadc84e34553c3d09e727160faeb32527a9fb8b904c0f99235a34bb6.vi.png b/translated_images/deploy-1.ddad725acadc84e34553c3d09e727160faeb32527a9fb8b904c0f99235a34bb6.vi.png new file mode 100644 index 00000000..72f8d9fb Binary files /dev/null and b/translated_images/deploy-1.ddad725acadc84e34553c3d09e727160faeb32527a9fb8b904c0f99235a34bb6.vi.png differ diff --git a/translated_images/deploy-2.94dbb13f239086473aa4bf814342fd40483d136849b080f02bafbb995383940e.id.png b/translated_images/deploy-2.94dbb13f239086473aa4bf814342fd40483d136849b080f02bafbb995383940e.id.png new file mode 100644 index 00000000..97a7cefd Binary files /dev/null and b/translated_images/deploy-2.94dbb13f239086473aa4bf814342fd40483d136849b080f02bafbb995383940e.id.png differ diff --git a/translated_images/deploy-2.94dbb13f239086473aa4bf814342fd40483d136849b080f02bafbb995383940e.ms.png b/translated_images/deploy-2.94dbb13f239086473aa4bf814342fd40483d136849b080f02bafbb995383940e.ms.png new file mode 100644 index 00000000..1fcc8528 Binary files /dev/null and b/translated_images/deploy-2.94dbb13f239086473aa4bf814342fd40483d136849b080f02bafbb995383940e.ms.png differ diff --git a/translated_images/deploy-2.94dbb13f239086473aa4bf814342fd40483d136849b080f02bafbb995383940e.vi.png b/translated_images/deploy-2.94dbb13f239086473aa4bf814342fd40483d136849b080f02bafbb995383940e.vi.png new file mode 100644 index 00000000..6148362b Binary files /dev/null and b/translated_images/deploy-2.94dbb13f239086473aa4bf814342fd40483d136849b080f02bafbb995383940e.vi.png differ diff --git a/translated_images/deploy-3.fecefef070e8ef3b28e802326d107f61ac4e672d20bf82d05f78d025f9e6c611.id.png b/translated_images/deploy-3.fecefef070e8ef3b28e802326d107f61ac4e672d20bf82d05f78d025f9e6c611.id.png new file mode 100644 index 00000000..406c0739 Binary files /dev/null and b/translated_images/deploy-3.fecefef070e8ef3b28e802326d107f61ac4e672d20bf82d05f78d025f9e6c611.id.png differ diff --git a/translated_images/deploy-3.fecefef070e8ef3b28e802326d107f61ac4e672d20bf82d05f78d025f9e6c611.ms.png b/translated_images/deploy-3.fecefef070e8ef3b28e802326d107f61ac4e672d20bf82d05f78d025f9e6c611.ms.png new file mode 100644 index 00000000..cacde4d1 Binary files /dev/null and b/translated_images/deploy-3.fecefef070e8ef3b28e802326d107f61ac4e672d20bf82d05f78d025f9e6c611.ms.png differ diff --git a/translated_images/deploy-3.fecefef070e8ef3b28e802326d107f61ac4e672d20bf82d05f78d025f9e6c611.vi.png b/translated_images/deploy-3.fecefef070e8ef3b28e802326d107f61ac4e672d20bf82d05f78d025f9e6c611.vi.png new file mode 100644 index 00000000..504f4425 Binary files /dev/null and b/translated_images/deploy-3.fecefef070e8ef3b28e802326d107f61ac4e672d20bf82d05f78d025f9e6c611.vi.png differ diff --git a/translated_images/dist1-wb.0d0cac82e2974fbbec635826fefead401af795f82e2279e2e2678bf2c117d827.id.png b/translated_images/dist1-wb.0d0cac82e2974fbbec635826fefead401af795f82e2279e2e2678bf2c117d827.id.png new file mode 100644 index 00000000..db496a4d Binary files /dev/null and b/translated_images/dist1-wb.0d0cac82e2974fbbec635826fefead401af795f82e2279e2e2678bf2c117d827.id.png differ diff --git a/translated_images/dist1-wb.0d0cac82e2974fbbec635826fefead401af795f82e2279e2e2678bf2c117d827.ms.png b/translated_images/dist1-wb.0d0cac82e2974fbbec635826fefead401af795f82e2279e2e2678bf2c117d827.ms.png new file mode 100644 index 00000000..49e16809 Binary files /dev/null and b/translated_images/dist1-wb.0d0cac82e2974fbbec635826fefead401af795f82e2279e2e2678bf2c117d827.ms.png differ diff --git a/translated_images/dist1-wb.0d0cac82e2974fbbec635826fefead401af795f82e2279e2e2678bf2c117d827.vi.png b/translated_images/dist1-wb.0d0cac82e2974fbbec635826fefead401af795f82e2279e2e2678bf2c117d827.vi.png new file mode 100644 index 00000000..79ec51d2 Binary files /dev/null and b/translated_images/dist1-wb.0d0cac82e2974fbbec635826fefead401af795f82e2279e2e2678bf2c117d827.vi.png differ diff --git a/translated_images/dist1.0010100b00231819be7540ba60a4909cbda8a1a83c1cc1ceb4d4e8a5bcb325f4.id.png b/translated_images/dist1.0010100b00231819be7540ba60a4909cbda8a1a83c1cc1ceb4d4e8a5bcb325f4.id.png new file mode 100644 index 00000000..ccc99767 Binary files /dev/null and b/translated_images/dist1.0010100b00231819be7540ba60a4909cbda8a1a83c1cc1ceb4d4e8a5bcb325f4.id.png differ diff --git a/translated_images/dist1.0010100b00231819be7540ba60a4909cbda8a1a83c1cc1ceb4d4e8a5bcb325f4.ms.png b/translated_images/dist1.0010100b00231819be7540ba60a4909cbda8a1a83c1cc1ceb4d4e8a5bcb325f4.ms.png new file mode 100644 index 00000000..ccc99767 Binary files /dev/null and b/translated_images/dist1.0010100b00231819be7540ba60a4909cbda8a1a83c1cc1ceb4d4e8a5bcb325f4.ms.png differ diff --git a/translated_images/dist1.0010100b00231819be7540ba60a4909cbda8a1a83c1cc1ceb4d4e8a5bcb325f4.vi.png b/translated_images/dist1.0010100b00231819be7540ba60a4909cbda8a1a83c1cc1ceb4d4e8a5bcb325f4.vi.png new file mode 100644 index 00000000..ccc99767 Binary files /dev/null and b/translated_images/dist1.0010100b00231819be7540ba60a4909cbda8a1a83c1cc1ceb4d4e8a5bcb325f4.vi.png differ diff --git a/translated_images/dist2-wb.2c0a7a3499b2fbf561e9f93b69f265dfc538dc78f6de15088ba84a88152e26ba.id.png b/translated_images/dist2-wb.2c0a7a3499b2fbf561e9f93b69f265dfc538dc78f6de15088ba84a88152e26ba.id.png new file mode 100644 index 00000000..6713886d Binary files /dev/null and b/translated_images/dist2-wb.2c0a7a3499b2fbf561e9f93b69f265dfc538dc78f6de15088ba84a88152e26ba.id.png differ diff --git a/translated_images/dist2-wb.2c0a7a3499b2fbf561e9f93b69f265dfc538dc78f6de15088ba84a88152e26ba.ms.png b/translated_images/dist2-wb.2c0a7a3499b2fbf561e9f93b69f265dfc538dc78f6de15088ba84a88152e26ba.ms.png new file mode 100644 index 00000000..5ecfc824 Binary files /dev/null and b/translated_images/dist2-wb.2c0a7a3499b2fbf561e9f93b69f265dfc538dc78f6de15088ba84a88152e26ba.ms.png differ diff --git a/translated_images/dist2-wb.2c0a7a3499b2fbf561e9f93b69f265dfc538dc78f6de15088ba84a88152e26ba.vi.png b/translated_images/dist2-wb.2c0a7a3499b2fbf561e9f93b69f265dfc538dc78f6de15088ba84a88152e26ba.vi.png new file mode 100644 index 00000000..2786ae04 Binary files /dev/null and b/translated_images/dist2-wb.2c0a7a3499b2fbf561e9f93b69f265dfc538dc78f6de15088ba84a88152e26ba.vi.png differ diff --git a/translated_images/dist2.c398bfd5320401b924305d2cc20a6c0f6670455e61abaf827a359d07b4248969.id.png b/translated_images/dist2.c398bfd5320401b924305d2cc20a6c0f6670455e61abaf827a359d07b4248969.id.png new file mode 100644 index 00000000..f2d0f317 Binary files /dev/null and b/translated_images/dist2.c398bfd5320401b924305d2cc20a6c0f6670455e61abaf827a359d07b4248969.id.png differ diff --git a/translated_images/dist2.c398bfd5320401b924305d2cc20a6c0f6670455e61abaf827a359d07b4248969.ms.png b/translated_images/dist2.c398bfd5320401b924305d2cc20a6c0f6670455e61abaf827a359d07b4248969.ms.png new file mode 100644 index 00000000..f2d0f317 Binary files /dev/null and b/translated_images/dist2.c398bfd5320401b924305d2cc20a6c0f6670455e61abaf827a359d07b4248969.ms.png differ diff --git a/translated_images/dist2.c398bfd5320401b924305d2cc20a6c0f6670455e61abaf827a359d07b4248969.vi.png b/translated_images/dist2.c398bfd5320401b924305d2cc20a6c0f6670455e61abaf827a359d07b4248969.vi.png new file mode 100644 index 00000000..f2d0f317 Binary files /dev/null and b/translated_images/dist2.c398bfd5320401b924305d2cc20a6c0f6670455e61abaf827a359d07b4248969.vi.png differ diff --git a/translated_images/dist3-wb.64b88db7f9780200bd486a2c2a3252548dd439672dbd3f778193db7f654b100c.id.png b/translated_images/dist3-wb.64b88db7f9780200bd486a2c2a3252548dd439672dbd3f778193db7f654b100c.id.png new file mode 100644 index 00000000..5edb8471 Binary files /dev/null and b/translated_images/dist3-wb.64b88db7f9780200bd486a2c2a3252548dd439672dbd3f778193db7f654b100c.id.png differ diff --git a/translated_images/dist3-wb.64b88db7f9780200bd486a2c2a3252548dd439672dbd3f778193db7f654b100c.ms.png b/translated_images/dist3-wb.64b88db7f9780200bd486a2c2a3252548dd439672dbd3f778193db7f654b100c.ms.png new file mode 100644 index 00000000..5edb8471 Binary files /dev/null and b/translated_images/dist3-wb.64b88db7f9780200bd486a2c2a3252548dd439672dbd3f778193db7f654b100c.ms.png differ diff --git a/translated_images/dist3-wb.64b88db7f9780200bd486a2c2a3252548dd439672dbd3f778193db7f654b100c.vi.png b/translated_images/dist3-wb.64b88db7f9780200bd486a2c2a3252548dd439672dbd3f778193db7f654b100c.vi.png new file mode 100644 index 00000000..60ae829f Binary files /dev/null and b/translated_images/dist3-wb.64b88db7f9780200bd486a2c2a3252548dd439672dbd3f778193db7f654b100c.vi.png differ diff --git a/translated_images/dist3.ad4d9658559690f561d0ac76bfee5843cce918f9c83805be66e0790ac824ef07.id.png b/translated_images/dist3.ad4d9658559690f561d0ac76bfee5843cce918f9c83805be66e0790ac824ef07.id.png new file mode 100644 index 00000000..e48b0151 Binary files /dev/null and b/translated_images/dist3.ad4d9658559690f561d0ac76bfee5843cce918f9c83805be66e0790ac824ef07.id.png differ diff --git a/translated_images/dist3.ad4d9658559690f561d0ac76bfee5843cce918f9c83805be66e0790ac824ef07.ms.png b/translated_images/dist3.ad4d9658559690f561d0ac76bfee5843cce918f9c83805be66e0790ac824ef07.ms.png new file mode 100644 index 00000000..e48b0151 Binary files /dev/null and b/translated_images/dist3.ad4d9658559690f561d0ac76bfee5843cce918f9c83805be66e0790ac824ef07.ms.png differ diff --git a/translated_images/dist3.ad4d9658559690f561d0ac76bfee5843cce918f9c83805be66e0790ac824ef07.vi.png b/translated_images/dist3.ad4d9658559690f561d0ac76bfee5843cce918f9c83805be66e0790ac824ef07.vi.png new file mode 100644 index 00000000..e48b0151 Binary files /dev/null and b/translated_images/dist3.ad4d9658559690f561d0ac76bfee5843cce918f9c83805be66e0790ac824ef07.vi.png differ diff --git a/translated_images/distribution-30bins.6a3921ea7a421bf71f06bf5231009e43d1146f1b8da8dc254e99b5779a4983e5.id.png b/translated_images/distribution-30bins.6a3921ea7a421bf71f06bf5231009e43d1146f1b8da8dc254e99b5779a4983e5.id.png new file mode 100644 index 00000000..1c900ed3 Binary files /dev/null and b/translated_images/distribution-30bins.6a3921ea7a421bf71f06bf5231009e43d1146f1b8da8dc254e99b5779a4983e5.id.png differ diff --git a/translated_images/distribution-30bins.6a3921ea7a421bf71f06bf5231009e43d1146f1b8da8dc254e99b5779a4983e5.ms.png b/translated_images/distribution-30bins.6a3921ea7a421bf71f06bf5231009e43d1146f1b8da8dc254e99b5779a4983e5.ms.png new file mode 100644 index 00000000..ba1234f3 Binary files /dev/null and b/translated_images/distribution-30bins.6a3921ea7a421bf71f06bf5231009e43d1146f1b8da8dc254e99b5779a4983e5.ms.png differ diff --git a/translated_images/distribution-30bins.6a3921ea7a421bf71f06bf5231009e43d1146f1b8da8dc254e99b5779a4983e5.vi.png b/translated_images/distribution-30bins.6a3921ea7a421bf71f06bf5231009e43d1146f1b8da8dc254e99b5779a4983e5.vi.png new file mode 100644 index 00000000..c90e607a Binary files /dev/null and b/translated_images/distribution-30bins.6a3921ea7a421bf71f06bf5231009e43d1146f1b8da8dc254e99b5779a4983e5.vi.png differ diff --git a/translated_images/distribution-over-the-entire-dataset.d22afd3fa96be854e4c82213fedec9e3703cba753d07fad4606aadf58cf7e78e.id.png b/translated_images/distribution-over-the-entire-dataset.d22afd3fa96be854e4c82213fedec9e3703cba753d07fad4606aadf58cf7e78e.id.png new file mode 100644 index 00000000..b5803cd2 Binary files /dev/null and b/translated_images/distribution-over-the-entire-dataset.d22afd3fa96be854e4c82213fedec9e3703cba753d07fad4606aadf58cf7e78e.id.png differ diff --git a/translated_images/distribution-over-the-entire-dataset.d22afd3fa96be854e4c82213fedec9e3703cba753d07fad4606aadf58cf7e78e.ms.png b/translated_images/distribution-over-the-entire-dataset.d22afd3fa96be854e4c82213fedec9e3703cba753d07fad4606aadf58cf7e78e.ms.png new file mode 100644 index 00000000..3b5f7531 Binary files /dev/null and b/translated_images/distribution-over-the-entire-dataset.d22afd3fa96be854e4c82213fedec9e3703cba753d07fad4606aadf58cf7e78e.ms.png differ diff --git a/translated_images/distribution-over-the-entire-dataset.d22afd3fa96be854e4c82213fedec9e3703cba753d07fad4606aadf58cf7e78e.vi.png b/translated_images/distribution-over-the-entire-dataset.d22afd3fa96be854e4c82213fedec9e3703cba753d07fad4606aadf58cf7e78e.vi.png new file mode 100644 index 00000000..b6122a87 Binary files /dev/null and b/translated_images/distribution-over-the-entire-dataset.d22afd3fa96be854e4c82213fedec9e3703cba753d07fad4606aadf58cf7e78e.vi.png differ diff --git a/translated_images/document-db.ddeec48c6dc9e5fd1c905a6de302537f57a2e74c82753baeaa27e992512282b9.id.png b/translated_images/document-db.ddeec48c6dc9e5fd1c905a6de302537f57a2e74c82753baeaa27e992512282b9.id.png new file mode 100644 index 00000000..06827b13 Binary files /dev/null and b/translated_images/document-db.ddeec48c6dc9e5fd1c905a6de302537f57a2e74c82753baeaa27e992512282b9.id.png differ diff --git a/translated_images/document-db.ddeec48c6dc9e5fd1c905a6de302537f57a2e74c82753baeaa27e992512282b9.ms.png b/translated_images/document-db.ddeec48c6dc9e5fd1c905a6de302537f57a2e74c82753baeaa27e992512282b9.ms.png new file mode 100644 index 00000000..2ff06bab Binary files /dev/null and b/translated_images/document-db.ddeec48c6dc9e5fd1c905a6de302537f57a2e74c82753baeaa27e992512282b9.ms.png differ diff --git a/translated_images/document-db.ddeec48c6dc9e5fd1c905a6de302537f57a2e74c82753baeaa27e992512282b9.vi.png b/translated_images/document-db.ddeec48c6dc9e5fd1c905a6de302537f57a2e74c82753baeaa27e992512282b9.vi.png new file mode 100644 index 00000000..e4258c67 Binary files /dev/null and b/translated_images/document-db.ddeec48c6dc9e5fd1c905a6de302537f57a2e74c82753baeaa27e992512282b9.vi.png differ diff --git a/translated_images/donut-wb.34e6fb275da9d834c2205145e39a3de9b6878191dcdba6f7a9e85f4b520449bc.id.png b/translated_images/donut-wb.34e6fb275da9d834c2205145e39a3de9b6878191dcdba6f7a9e85f4b520449bc.id.png new file mode 100644 index 00000000..862a2410 Binary files /dev/null and b/translated_images/donut-wb.34e6fb275da9d834c2205145e39a3de9b6878191dcdba6f7a9e85f4b520449bc.id.png differ diff --git a/translated_images/donut-wb.34e6fb275da9d834c2205145e39a3de9b6878191dcdba6f7a9e85f4b520449bc.ms.png b/translated_images/donut-wb.34e6fb275da9d834c2205145e39a3de9b6878191dcdba6f7a9e85f4b520449bc.ms.png new file mode 100644 index 00000000..60ae5e3b Binary files /dev/null and b/translated_images/donut-wb.34e6fb275da9d834c2205145e39a3de9b6878191dcdba6f7a9e85f4b520449bc.ms.png differ diff --git a/translated_images/donut-wb.34e6fb275da9d834c2205145e39a3de9b6878191dcdba6f7a9e85f4b520449bc.vi.png b/translated_images/donut-wb.34e6fb275da9d834c2205145e39a3de9b6878191dcdba6f7a9e85f4b520449bc.vi.png new file mode 100644 index 00000000..fff1e01c Binary files /dev/null and b/translated_images/donut-wb.34e6fb275da9d834c2205145e39a3de9b6878191dcdba6f7a9e85f4b520449bc.vi.png differ diff --git a/translated_images/donut-wb.be3c12a22712302b5d10c40014d5389d4a1ae4412fe1655b3cf4af57b64f799a.id.png b/translated_images/donut-wb.be3c12a22712302b5d10c40014d5389d4a1ae4412fe1655b3cf4af57b64f799a.id.png new file mode 100644 index 00000000..97927120 Binary files /dev/null and b/translated_images/donut-wb.be3c12a22712302b5d10c40014d5389d4a1ae4412fe1655b3cf4af57b64f799a.id.png differ diff --git a/translated_images/donut-wb.be3c12a22712302b5d10c40014d5389d4a1ae4412fe1655b3cf4af57b64f799a.ms.png b/translated_images/donut-wb.be3c12a22712302b5d10c40014d5389d4a1ae4412fe1655b3cf4af57b64f799a.ms.png new file mode 100644 index 00000000..17697900 Binary files /dev/null and b/translated_images/donut-wb.be3c12a22712302b5d10c40014d5389d4a1ae4412fe1655b3cf4af57b64f799a.ms.png differ diff --git a/translated_images/donut-wb.be3c12a22712302b5d10c40014d5389d4a1ae4412fe1655b3cf4af57b64f799a.vi.png b/translated_images/donut-wb.be3c12a22712302b5d10c40014d5389d4a1ae4412fe1655b3cf4af57b64f799a.vi.png new file mode 100644 index 00000000..b1994548 Binary files /dev/null and b/translated_images/donut-wb.be3c12a22712302b5d10c40014d5389d4a1ae4412fe1655b3cf4af57b64f799a.vi.png differ diff --git a/translated_images/donut.f016d7be7f08c8f8c49e9217b2ee05e952ecd1bd8c6f5c49466080f4991ad790.id.png b/translated_images/donut.f016d7be7f08c8f8c49e9217b2ee05e952ecd1bd8c6f5c49466080f4991ad790.id.png new file mode 100644 index 00000000..e109b4c9 Binary files /dev/null and b/translated_images/donut.f016d7be7f08c8f8c49e9217b2ee05e952ecd1bd8c6f5c49466080f4991ad790.id.png differ diff --git a/translated_images/donut.f016d7be7f08c8f8c49e9217b2ee05e952ecd1bd8c6f5c49466080f4991ad790.ms.png b/translated_images/donut.f016d7be7f08c8f8c49e9217b2ee05e952ecd1bd8c6f5c49466080f4991ad790.ms.png new file mode 100644 index 00000000..145028d4 Binary files /dev/null and b/translated_images/donut.f016d7be7f08c8f8c49e9217b2ee05e952ecd1bd8c6f5c49466080f4991ad790.ms.png differ diff --git a/translated_images/donut.f016d7be7f08c8f8c49e9217b2ee05e952ecd1bd8c6f5c49466080f4991ad790.vi.png b/translated_images/donut.f016d7be7f08c8f8c49e9217b2ee05e952ecd1bd8c6f5c49466080f4991ad790.vi.png new file mode 100644 index 00000000..e109b4c9 Binary files /dev/null and b/translated_images/donut.f016d7be7f08c8f8c49e9217b2ee05e952ecd1bd8c6f5c49466080f4991ad790.vi.png differ diff --git a/translated_images/ds-for-beginners.d01930c9193ef5228caf620d5462a4189dc1a551e34d121eb777e0463889d7a5.id.png b/translated_images/ds-for-beginners.d01930c9193ef5228caf620d5462a4189dc1a551e34d121eb777e0463889d7a5.id.png new file mode 100644 index 00000000..49655d1e Binary files /dev/null and b/translated_images/ds-for-beginners.d01930c9193ef5228caf620d5462a4189dc1a551e34d121eb777e0463889d7a5.id.png differ diff --git a/translated_images/ds-for-beginners.d01930c9193ef5228caf620d5462a4189dc1a551e34d121eb777e0463889d7a5.ms.png b/translated_images/ds-for-beginners.d01930c9193ef5228caf620d5462a4189dc1a551e34d121eb777e0463889d7a5.ms.png new file mode 100644 index 00000000..16d1d468 Binary files /dev/null and b/translated_images/ds-for-beginners.d01930c9193ef5228caf620d5462a4189dc1a551e34d121eb777e0463889d7a5.ms.png differ diff --git a/translated_images/ds-for-beginners.d01930c9193ef5228caf620d5462a4189dc1a551e34d121eb777e0463889d7a5.vi.png b/translated_images/ds-for-beginners.d01930c9193ef5228caf620d5462a4189dc1a551e34d121eb777e0463889d7a5.vi.png new file mode 100644 index 00000000..c5e5e7bc Binary files /dev/null and b/translated_images/ds-for-beginners.d01930c9193ef5228caf620d5462a4189dc1a551e34d121eb777e0463889d7a5.vi.png differ diff --git a/translated_images/ds_wordcloud.664a7c07dca57de017c22bf0498cb40f898d48aa85b3c36a80620fea12fadd42.id.png b/translated_images/ds_wordcloud.664a7c07dca57de017c22bf0498cb40f898d48aa85b3c36a80620fea12fadd42.id.png new file mode 100644 index 00000000..3be469e9 Binary files /dev/null and b/translated_images/ds_wordcloud.664a7c07dca57de017c22bf0498cb40f898d48aa85b3c36a80620fea12fadd42.id.png differ diff --git a/translated_images/ds_wordcloud.664a7c07dca57de017c22bf0498cb40f898d48aa85b3c36a80620fea12fadd42.ms.png b/translated_images/ds_wordcloud.664a7c07dca57de017c22bf0498cb40f898d48aa85b3c36a80620fea12fadd42.ms.png new file mode 100644 index 00000000..1e7b2d4e Binary files /dev/null and b/translated_images/ds_wordcloud.664a7c07dca57de017c22bf0498cb40f898d48aa85b3c36a80620fea12fadd42.ms.png differ diff --git a/translated_images/ds_wordcloud.664a7c07dca57de017c22bf0498cb40f898d48aa85b3c36a80620fea12fadd42.vi.png b/translated_images/ds_wordcloud.664a7c07dca57de017c22bf0498cb40f898d48aa85b3c36a80620fea12fadd42.vi.png new file mode 100644 index 00000000..320a8449 Binary files /dev/null and b/translated_images/ds_wordcloud.664a7c07dca57de017c22bf0498cb40f898d48aa85b3c36a80620fea12fadd42.vi.png differ diff --git a/translated_images/dual-line.a4c28ce659603fab2c003f4df816733df2bf41d1facb7de27989ec9afbf01b33.id.png b/translated_images/dual-line.a4c28ce659603fab2c003f4df816733df2bf41d1facb7de27989ec9afbf01b33.id.png new file mode 100644 index 00000000..e364075b Binary files /dev/null and b/translated_images/dual-line.a4c28ce659603fab2c003f4df816733df2bf41d1facb7de27989ec9afbf01b33.id.png differ diff --git a/translated_images/dual-line.a4c28ce659603fab2c003f4df816733df2bf41d1facb7de27989ec9afbf01b33.ms.png b/translated_images/dual-line.a4c28ce659603fab2c003f4df816733df2bf41d1facb7de27989ec9afbf01b33.ms.png new file mode 100644 index 00000000..bb7b2857 Binary files /dev/null and b/translated_images/dual-line.a4c28ce659603fab2c003f4df816733df2bf41d1facb7de27989ec9afbf01b33.ms.png differ diff --git a/translated_images/dual-line.a4c28ce659603fab2c003f4df816733df2bf41d1facb7de27989ec9afbf01b33.vi.png b/translated_images/dual-line.a4c28ce659603fab2c003f4df816733df2bf41d1facb7de27989ec9afbf01b33.vi.png new file mode 100644 index 00000000..3485e130 Binary files /dev/null and b/translated_images/dual-line.a4c28ce659603fab2c003f4df816733df2bf41d1facb7de27989ec9afbf01b33.vi.png differ diff --git a/translated_images/dual-line.fc4665f360a54018d7df9bc6abcc26460112e17dcbda18d3b9ae6109b32b36c3.id.png b/translated_images/dual-line.fc4665f360a54018d7df9bc6abcc26460112e17dcbda18d3b9ae6109b32b36c3.id.png new file mode 100644 index 00000000..ba833ea1 Binary files /dev/null and b/translated_images/dual-line.fc4665f360a54018d7df9bc6abcc26460112e17dcbda18d3b9ae6109b32b36c3.id.png differ diff --git a/translated_images/dual-line.fc4665f360a54018d7df9bc6abcc26460112e17dcbda18d3b9ae6109b32b36c3.ms.png b/translated_images/dual-line.fc4665f360a54018d7df9bc6abcc26460112e17dcbda18d3b9ae6109b32b36c3.ms.png new file mode 100644 index 00000000..ba833ea1 Binary files /dev/null and b/translated_images/dual-line.fc4665f360a54018d7df9bc6abcc26460112e17dcbda18d3b9ae6109b32b36c3.ms.png differ diff --git a/translated_images/dual-line.fc4665f360a54018d7df9bc6abcc26460112e17dcbda18d3b9ae6109b32b36c3.vi.png b/translated_images/dual-line.fc4665f360a54018d7df9bc6abcc26460112e17dcbda18d3b9ae6109b32b36c3.vi.png new file mode 100644 index 00000000..81c23f5a Binary files /dev/null and b/translated_images/dual-line.fc4665f360a54018d7df9bc6abcc26460112e17dcbda18d3b9ae6109b32b36c3.vi.png differ diff --git a/translated_images/facet.491ad90d61c2a7cc69b50c929f80786c749e38217ccedbf1e22ed8909b65987c.id.png b/translated_images/facet.491ad90d61c2a7cc69b50c929f80786c749e38217ccedbf1e22ed8909b65987c.id.png new file mode 100644 index 00000000..9773f440 Binary files /dev/null and b/translated_images/facet.491ad90d61c2a7cc69b50c929f80786c749e38217ccedbf1e22ed8909b65987c.id.png differ diff --git a/translated_images/facet.491ad90d61c2a7cc69b50c929f80786c749e38217ccedbf1e22ed8909b65987c.ms.png b/translated_images/facet.491ad90d61c2a7cc69b50c929f80786c749e38217ccedbf1e22ed8909b65987c.ms.png new file mode 100644 index 00000000..9773f440 Binary files /dev/null and b/translated_images/facet.491ad90d61c2a7cc69b50c929f80786c749e38217ccedbf1e22ed8909b65987c.ms.png differ diff --git a/translated_images/facet.491ad90d61c2a7cc69b50c929f80786c749e38217ccedbf1e22ed8909b65987c.vi.png b/translated_images/facet.491ad90d61c2a7cc69b50c929f80786c749e38217ccedbf1e22ed8909b65987c.vi.png new file mode 100644 index 00000000..9773f440 Binary files /dev/null and b/translated_images/facet.491ad90d61c2a7cc69b50c929f80786c749e38217ccedbf1e22ed8909b65987c.vi.png differ diff --git a/translated_images/facet.6a34851dcd540050dcc0ead741be35075d776741668dd0e42f482c89b114c217.id.png b/translated_images/facet.6a34851dcd540050dcc0ead741be35075d776741668dd0e42f482c89b114c217.id.png new file mode 100644 index 00000000..85c0ee3d Binary files /dev/null and b/translated_images/facet.6a34851dcd540050dcc0ead741be35075d776741668dd0e42f482c89b114c217.id.png differ diff --git a/translated_images/facet.6a34851dcd540050dcc0ead741be35075d776741668dd0e42f482c89b114c217.ms.png b/translated_images/facet.6a34851dcd540050dcc0ead741be35075d776741668dd0e42f482c89b114c217.ms.png new file mode 100644 index 00000000..1c326301 Binary files /dev/null and b/translated_images/facet.6a34851dcd540050dcc0ead741be35075d776741668dd0e42f482c89b114c217.ms.png differ diff --git a/translated_images/facet.6a34851dcd540050dcc0ead741be35075d776741668dd0e42f482c89b114c217.vi.png b/translated_images/facet.6a34851dcd540050dcc0ead741be35075d776741668dd0e42f482c89b114c217.vi.png new file mode 100644 index 00000000..542daeb4 Binary files /dev/null and b/translated_images/facet.6a34851dcd540050dcc0ead741be35075d776741668dd0e42f482c89b114c217.vi.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.id.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.id.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.id.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ms.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ms.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.ms.png differ diff --git a/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.vi.png b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.vi.png new file mode 100644 index 00000000..26e0ae43 Binary files /dev/null and b/translated_images/favicon.37b561214b36d454f9fd1f725d77f310fe256eb88f2a0ae08b9cb18aeb30650c.vi.png differ diff --git a/translated_images/filtered-histogram.6bf5d2bfd82533220e1bd4bc4f7d14308f43746ed66721d9ec8f460732be6674.id.png b/translated_images/filtered-histogram.6bf5d2bfd82533220e1bd4bc4f7d14308f43746ed66721d9ec8f460732be6674.id.png new file mode 100644 index 00000000..dfac93f1 Binary files /dev/null and b/translated_images/filtered-histogram.6bf5d2bfd82533220e1bd4bc4f7d14308f43746ed66721d9ec8f460732be6674.id.png differ diff --git a/translated_images/filtered-histogram.6bf5d2bfd82533220e1bd4bc4f7d14308f43746ed66721d9ec8f460732be6674.ms.png b/translated_images/filtered-histogram.6bf5d2bfd82533220e1bd4bc4f7d14308f43746ed66721d9ec8f460732be6674.ms.png new file mode 100644 index 00000000..4b9e9df4 Binary files /dev/null and b/translated_images/filtered-histogram.6bf5d2bfd82533220e1bd4bc4f7d14308f43746ed66721d9ec8f460732be6674.ms.png differ diff --git a/translated_images/filtered-histogram.6bf5d2bfd82533220e1bd4bc4f7d14308f43746ed66721d9ec8f460732be6674.vi.png b/translated_images/filtered-histogram.6bf5d2bfd82533220e1bd4bc4f7d14308f43746ed66721d9ec8f460732be6674.vi.png new file mode 100644 index 00000000..6e11a715 Binary files /dev/null and b/translated_images/filtered-histogram.6bf5d2bfd82533220e1bd4bc4f7d14308f43746ed66721d9ec8f460732be6674.vi.png differ diff --git a/translated_images/formula-excel.ad1068c220892f5ead570d12f2394897961d31a5043a1dd4e6fc5d7690c7a14e.id.png b/translated_images/formula-excel.ad1068c220892f5ead570d12f2394897961d31a5043a1dd4e6fc5d7690c7a14e.id.png new file mode 100644 index 00000000..c3a377f2 Binary files /dev/null and b/translated_images/formula-excel.ad1068c220892f5ead570d12f2394897961d31a5043a1dd4e6fc5d7690c7a14e.id.png differ diff --git a/translated_images/formula-excel.ad1068c220892f5ead570d12f2394897961d31a5043a1dd4e6fc5d7690c7a14e.ms.png b/translated_images/formula-excel.ad1068c220892f5ead570d12f2394897961d31a5043a1dd4e6fc5d7690c7a14e.ms.png new file mode 100644 index 00000000..5beec86c Binary files /dev/null and b/translated_images/formula-excel.ad1068c220892f5ead570d12f2394897961d31a5043a1dd4e6fc5d7690c7a14e.ms.png differ diff --git a/translated_images/formula-excel.ad1068c220892f5ead570d12f2394897961d31a5043a1dd4e6fc5d7690c7a14e.vi.png b/translated_images/formula-excel.ad1068c220892f5ead570d12f2394897961d31a5043a1dd4e6fc5d7690c7a14e.vi.png new file mode 100644 index 00000000..b0138970 Binary files /dev/null and b/translated_images/formula-excel.ad1068c220892f5ead570d12f2394897961d31a5043a1dd4e6fc5d7690c7a14e.vi.png differ diff --git a/translated_images/full-data-bar-02.aaa3fda71c63ed564b917841a1886c177dd9a26424142e510c0c0498fd6ca160.id.png b/translated_images/full-data-bar-02.aaa3fda71c63ed564b917841a1886c177dd9a26424142e510c0c0498fd6ca160.id.png new file mode 100644 index 00000000..547933ca Binary files /dev/null and b/translated_images/full-data-bar-02.aaa3fda71c63ed564b917841a1886c177dd9a26424142e510c0c0498fd6ca160.id.png differ diff --git a/translated_images/full-data-bar-02.aaa3fda71c63ed564b917841a1886c177dd9a26424142e510c0c0498fd6ca160.ms.png b/translated_images/full-data-bar-02.aaa3fda71c63ed564b917841a1886c177dd9a26424142e510c0c0498fd6ca160.ms.png new file mode 100644 index 00000000..678d565b Binary files /dev/null and b/translated_images/full-data-bar-02.aaa3fda71c63ed564b917841a1886c177dd9a26424142e510c0c0498fd6ca160.ms.png differ diff --git a/translated_images/full-data-bar-02.aaa3fda71c63ed564b917841a1886c177dd9a26424142e510c0c0498fd6ca160.vi.png b/translated_images/full-data-bar-02.aaa3fda71c63ed564b917841a1886c177dd9a26424142e510c0c0498fd6ca160.vi.png new file mode 100644 index 00000000..55bc21a7 Binary files /dev/null and b/translated_images/full-data-bar-02.aaa3fda71c63ed564b917841a1886c177dd9a26424142e510c0c0498fd6ca160.vi.png differ diff --git a/translated_images/full-data-bar.a0b37da71a6cd23610c83d1e737c4f0aff0524724ed527b9bed12c0bac5f2f07.id.png b/translated_images/full-data-bar.a0b37da71a6cd23610c83d1e737c4f0aff0524724ed527b9bed12c0bac5f2f07.id.png new file mode 100644 index 00000000..66c64bc3 Binary files /dev/null and b/translated_images/full-data-bar.a0b37da71a6cd23610c83d1e737c4f0aff0524724ed527b9bed12c0bac5f2f07.id.png differ diff --git a/translated_images/full-data-bar.a0b37da71a6cd23610c83d1e737c4f0aff0524724ed527b9bed12c0bac5f2f07.ms.png b/translated_images/full-data-bar.a0b37da71a6cd23610c83d1e737c4f0aff0524724ed527b9bed12c0bac5f2f07.ms.png new file mode 100644 index 00000000..a4931494 Binary files /dev/null and b/translated_images/full-data-bar.a0b37da71a6cd23610c83d1e737c4f0aff0524724ed527b9bed12c0bac5f2f07.ms.png differ diff --git a/translated_images/full-data-bar.a0b37da71a6cd23610c83d1e737c4f0aff0524724ed527b9bed12c0bac5f2f07.vi.png b/translated_images/full-data-bar.a0b37da71a6cd23610c83d1e737c4f0aff0524724ed527b9bed12c0bac5f2f07.vi.png new file mode 100644 index 00000000..a1d39151 Binary files /dev/null and b/translated_images/full-data-bar.a0b37da71a6cd23610c83d1e737c4f0aff0524724ed527b9bed12c0bac5f2f07.vi.png differ diff --git a/translated_images/function-excel.be2ae4feddc10ca089f3d4363040d93b7fd046c8d4f83ba975ec46483ee99895.id.png b/translated_images/function-excel.be2ae4feddc10ca089f3d4363040d93b7fd046c8d4f83ba975ec46483ee99895.id.png new file mode 100644 index 00000000..93c848cc Binary files /dev/null and b/translated_images/function-excel.be2ae4feddc10ca089f3d4363040d93b7fd046c8d4f83ba975ec46483ee99895.id.png differ diff --git a/translated_images/function-excel.be2ae4feddc10ca089f3d4363040d93b7fd046c8d4f83ba975ec46483ee99895.ms.png b/translated_images/function-excel.be2ae4feddc10ca089f3d4363040d93b7fd046c8d4f83ba975ec46483ee99895.ms.png new file mode 100644 index 00000000..e34e0f8e Binary files /dev/null and b/translated_images/function-excel.be2ae4feddc10ca089f3d4363040d93b7fd046c8d4f83ba975ec46483ee99895.ms.png differ diff --git a/translated_images/function-excel.be2ae4feddc10ca089f3d4363040d93b7fd046c8d4f83ba975ec46483ee99895.vi.png b/translated_images/function-excel.be2ae4feddc10ca089f3d4363040d93b7fd046c8d4f83ba975ec46483ee99895.vi.png new file mode 100644 index 00000000..9d267cfb Binary files /dev/null and b/translated_images/function-excel.be2ae4feddc10ca089f3d4363040d93b7fd046c8d4f83ba975ec46483ee99895.vi.png differ diff --git a/translated_images/graph-db.d13629152f79a9dac895b20fa7d841d4d4d6f6008b1382227c3bbd200fd4cfa1.id.png b/translated_images/graph-db.d13629152f79a9dac895b20fa7d841d4d4d6f6008b1382227c3bbd200fd4cfa1.id.png new file mode 100644 index 00000000..16fd5ada Binary files /dev/null and b/translated_images/graph-db.d13629152f79a9dac895b20fa7d841d4d4d6f6008b1382227c3bbd200fd4cfa1.id.png differ diff --git a/translated_images/graph-db.d13629152f79a9dac895b20fa7d841d4d4d6f6008b1382227c3bbd200fd4cfa1.ms.png b/translated_images/graph-db.d13629152f79a9dac895b20fa7d841d4d4d6f6008b1382227c3bbd200fd4cfa1.ms.png new file mode 100644 index 00000000..e01bf8db Binary files /dev/null and b/translated_images/graph-db.d13629152f79a9dac895b20fa7d841d4d4d6f6008b1382227c3bbd200fd4cfa1.ms.png differ diff --git a/translated_images/graph-db.d13629152f79a9dac895b20fa7d841d4d4d6f6008b1382227c3bbd200fd4cfa1.vi.png b/translated_images/graph-db.d13629152f79a9dac895b20fa7d841d4d4d6f6008b1382227c3bbd200fd4cfa1.vi.png new file mode 100644 index 00000000..34bb2747 Binary files /dev/null and b/translated_images/graph-db.d13629152f79a9dac895b20fa7d841d4d4d6f6008b1382227c3bbd200fd4cfa1.vi.png differ diff --git a/translated_images/height-boxplot.ccb66b2848b5f51cd28e3acf89512ac7101ad36d0c07fc7b93762c9dcf368d7d.id.png b/translated_images/height-boxplot.ccb66b2848b5f51cd28e3acf89512ac7101ad36d0c07fc7b93762c9dcf368d7d.id.png new file mode 100644 index 00000000..09dcc959 Binary files /dev/null and b/translated_images/height-boxplot.ccb66b2848b5f51cd28e3acf89512ac7101ad36d0c07fc7b93762c9dcf368d7d.id.png differ diff --git a/translated_images/height-boxplot.ccb66b2848b5f51cd28e3acf89512ac7101ad36d0c07fc7b93762c9dcf368d7d.ms.png b/translated_images/height-boxplot.ccb66b2848b5f51cd28e3acf89512ac7101ad36d0c07fc7b93762c9dcf368d7d.ms.png new file mode 100644 index 00000000..09dcc959 Binary files /dev/null and b/translated_images/height-boxplot.ccb66b2848b5f51cd28e3acf89512ac7101ad36d0c07fc7b93762c9dcf368d7d.ms.png differ diff --git a/translated_images/height-boxplot.ccb66b2848b5f51cd28e3acf89512ac7101ad36d0c07fc7b93762c9dcf368d7d.vi.png b/translated_images/height-boxplot.ccb66b2848b5f51cd28e3acf89512ac7101ad36d0c07fc7b93762c9dcf368d7d.vi.png new file mode 100644 index 00000000..09dcc959 Binary files /dev/null and b/translated_images/height-boxplot.ccb66b2848b5f51cd28e3acf89512ac7101ad36d0c07fc7b93762c9dcf368d7d.vi.png differ diff --git a/translated_images/histogram-conservation-wb.3c40450eb072c14de7a1a3ec5c0fcba4995531024760741b392911b567fd8b70.id.png b/translated_images/histogram-conservation-wb.3c40450eb072c14de7a1a3ec5c0fcba4995531024760741b392911b567fd8b70.id.png new file mode 100644 index 00000000..312eea2e Binary files /dev/null and b/translated_images/histogram-conservation-wb.3c40450eb072c14de7a1a3ec5c0fcba4995531024760741b392911b567fd8b70.id.png differ diff --git a/translated_images/histogram-conservation-wb.3c40450eb072c14de7a1a3ec5c0fcba4995531024760741b392911b567fd8b70.ms.png b/translated_images/histogram-conservation-wb.3c40450eb072c14de7a1a3ec5c0fcba4995531024760741b392911b567fd8b70.ms.png new file mode 100644 index 00000000..1c87b3b0 Binary files /dev/null and b/translated_images/histogram-conservation-wb.3c40450eb072c14de7a1a3ec5c0fcba4995531024760741b392911b567fd8b70.ms.png differ diff --git a/translated_images/histogram-conservation-wb.3c40450eb072c14de7a1a3ec5c0fcba4995531024760741b392911b567fd8b70.vi.png b/translated_images/histogram-conservation-wb.3c40450eb072c14de7a1a3ec5c0fcba4995531024760741b392911b567fd8b70.vi.png new file mode 100644 index 00000000..d926ca0f Binary files /dev/null and b/translated_images/histogram-conservation-wb.3c40450eb072c14de7a1a3ec5c0fcba4995531024760741b392911b567fd8b70.vi.png differ diff --git a/translated_images/histogram-conservation.13b3542e7784e41585a3763ba6dfbfaa2a372bcd9edae90675ad18f7b13fa7e3.id.png b/translated_images/histogram-conservation.13b3542e7784e41585a3763ba6dfbfaa2a372bcd9edae90675ad18f7b13fa7e3.id.png new file mode 100644 index 00000000..ca184619 Binary files /dev/null and b/translated_images/histogram-conservation.13b3542e7784e41585a3763ba6dfbfaa2a372bcd9edae90675ad18f7b13fa7e3.id.png differ diff --git a/translated_images/histogram-conservation.13b3542e7784e41585a3763ba6dfbfaa2a372bcd9edae90675ad18f7b13fa7e3.ms.png b/translated_images/histogram-conservation.13b3542e7784e41585a3763ba6dfbfaa2a372bcd9edae90675ad18f7b13fa7e3.ms.png new file mode 100644 index 00000000..43568b30 Binary files /dev/null and b/translated_images/histogram-conservation.13b3542e7784e41585a3763ba6dfbfaa2a372bcd9edae90675ad18f7b13fa7e3.ms.png differ diff --git a/translated_images/histogram-conservation.13b3542e7784e41585a3763ba6dfbfaa2a372bcd9edae90675ad18f7b13fa7e3.vi.png b/translated_images/histogram-conservation.13b3542e7784e41585a3763ba6dfbfaa2a372bcd9edae90675ad18f7b13fa7e3.vi.png new file mode 100644 index 00000000..6fad4b23 Binary files /dev/null and b/translated_images/histogram-conservation.13b3542e7784e41585a3763ba6dfbfaa2a372bcd9edae90675ad18f7b13fa7e3.vi.png differ diff --git a/translated_images/kv-db.e8f2b75686bbdfcba0c827b9272c10ae0821611ea0fe98429b9d13194383afa6.id.png b/translated_images/kv-db.e8f2b75686bbdfcba0c827b9272c10ae0821611ea0fe98429b9d13194383afa6.id.png new file mode 100644 index 00000000..7532a348 Binary files /dev/null and b/translated_images/kv-db.e8f2b75686bbdfcba0c827b9272c10ae0821611ea0fe98429b9d13194383afa6.id.png differ diff --git a/translated_images/kv-db.e8f2b75686bbdfcba0c827b9272c10ae0821611ea0fe98429b9d13194383afa6.ms.png b/translated_images/kv-db.e8f2b75686bbdfcba0c827b9272c10ae0821611ea0fe98429b9d13194383afa6.ms.png new file mode 100644 index 00000000..ff584e7b Binary files /dev/null and b/translated_images/kv-db.e8f2b75686bbdfcba0c827b9272c10ae0821611ea0fe98429b9d13194383afa6.ms.png differ diff --git a/translated_images/kv-db.e8f2b75686bbdfcba0c827b9272c10ae0821611ea0fe98429b9d13194383afa6.vi.png b/translated_images/kv-db.e8f2b75686bbdfcba0c827b9272c10ae0821611ea0fe98429b9d13194383afa6.vi.png new file mode 100644 index 00000000..e3048a1e Binary files /dev/null and b/translated_images/kv-db.e8f2b75686bbdfcba0c827b9272c10ae0821611ea0fe98429b9d13194383afa6.vi.png differ diff --git a/translated_images/labeled-wingspan-02.6110e2d2401cd5238ccc24dfb6d04a6c19436101f6cec151e3992e719f9f1e1f.id.png b/translated_images/labeled-wingspan-02.6110e2d2401cd5238ccc24dfb6d04a6c19436101f6cec151e3992e719f9f1e1f.id.png new file mode 100644 index 00000000..97cf037e Binary files /dev/null and b/translated_images/labeled-wingspan-02.6110e2d2401cd5238ccc24dfb6d04a6c19436101f6cec151e3992e719f9f1e1f.id.png differ diff --git a/translated_images/labeled-wingspan-02.6110e2d2401cd5238ccc24dfb6d04a6c19436101f6cec151e3992e719f9f1e1f.ms.png b/translated_images/labeled-wingspan-02.6110e2d2401cd5238ccc24dfb6d04a6c19436101f6cec151e3992e719f9f1e1f.ms.png new file mode 100644 index 00000000..c14026d7 Binary files /dev/null and b/translated_images/labeled-wingspan-02.6110e2d2401cd5238ccc24dfb6d04a6c19436101f6cec151e3992e719f9f1e1f.ms.png differ diff --git a/translated_images/labeled-wingspan-02.6110e2d2401cd5238ccc24dfb6d04a6c19436101f6cec151e3992e719f9f1e1f.vi.png b/translated_images/labeled-wingspan-02.6110e2d2401cd5238ccc24dfb6d04a6c19436101f6cec151e3992e719f9f1e1f.vi.png new file mode 100644 index 00000000..eae5c833 Binary files /dev/null and b/translated_images/labeled-wingspan-02.6110e2d2401cd5238ccc24dfb6d04a6c19436101f6cec151e3992e719f9f1e1f.vi.png differ diff --git a/translated_images/labeled-wingspan.900ffedd7e3ec6de17070dac63c1cf624cb083fb5b6a157bbb1d60f327f331aa.id.png b/translated_images/labeled-wingspan.900ffedd7e3ec6de17070dac63c1cf624cb083fb5b6a157bbb1d60f327f331aa.id.png new file mode 100644 index 00000000..bf7e3123 Binary files /dev/null and b/translated_images/labeled-wingspan.900ffedd7e3ec6de17070dac63c1cf624cb083fb5b6a157bbb1d60f327f331aa.id.png differ diff --git a/translated_images/labeled-wingspan.900ffedd7e3ec6de17070dac63c1cf624cb083fb5b6a157bbb1d60f327f331aa.ms.png b/translated_images/labeled-wingspan.900ffedd7e3ec6de17070dac63c1cf624cb083fb5b6a157bbb1d60f327f331aa.ms.png new file mode 100644 index 00000000..47c29f0f Binary files /dev/null and b/translated_images/labeled-wingspan.900ffedd7e3ec6de17070dac63c1cf624cb083fb5b6a157bbb1d60f327f331aa.ms.png differ diff --git a/translated_images/labeled-wingspan.900ffedd7e3ec6de17070dac63c1cf624cb083fb5b6a157bbb1d60f327f331aa.vi.png b/translated_images/labeled-wingspan.900ffedd7e3ec6de17070dac63c1cf624cb083fb5b6a157bbb1d60f327f331aa.vi.png new file mode 100644 index 00000000..cf5b6776 Binary files /dev/null and b/translated_images/labeled-wingspan.900ffedd7e3ec6de17070dac63c1cf624cb083fb5b6a157bbb1d60f327f331aa.vi.png differ diff --git a/translated_images/less-smooth-bodymass.10f4db8b683cc17d17b2d33f22405413142004467a1493d416608dafecfdee23.id.png b/translated_images/less-smooth-bodymass.10f4db8b683cc17d17b2d33f22405413142004467a1493d416608dafecfdee23.id.png new file mode 100644 index 00000000..d7b95b4e Binary files /dev/null and b/translated_images/less-smooth-bodymass.10f4db8b683cc17d17b2d33f22405413142004467a1493d416608dafecfdee23.id.png differ diff --git a/translated_images/less-smooth-bodymass.10f4db8b683cc17d17b2d33f22405413142004467a1493d416608dafecfdee23.ms.png b/translated_images/less-smooth-bodymass.10f4db8b683cc17d17b2d33f22405413142004467a1493d416608dafecfdee23.ms.png new file mode 100644 index 00000000..e1f1b65e Binary files /dev/null and b/translated_images/less-smooth-bodymass.10f4db8b683cc17d17b2d33f22405413142004467a1493d416608dafecfdee23.ms.png differ diff --git a/translated_images/less-smooth-bodymass.10f4db8b683cc17d17b2d33f22405413142004467a1493d416608dafecfdee23.vi.png b/translated_images/less-smooth-bodymass.10f4db8b683cc17d17b2d33f22405413142004467a1493d416608dafecfdee23.vi.png new file mode 100644 index 00000000..4a3f74a6 Binary files /dev/null and b/translated_images/less-smooth-bodymass.10f4db8b683cc17d17b2d33f22405413142004467a1493d416608dafecfdee23.vi.png differ diff --git a/translated_images/liaisons.7b440b28f6d07ea430244fdf1fc4c64ff48f473f143b8e921846eda1c302aeba.id.png b/translated_images/liaisons.7b440b28f6d07ea430244fdf1fc4c64ff48f473f143b8e921846eda1c302aeba.id.png new file mode 100644 index 00000000..56f5478b Binary files /dev/null and b/translated_images/liaisons.7b440b28f6d07ea430244fdf1fc4c64ff48f473f143b8e921846eda1c302aeba.id.png differ diff --git a/translated_images/liaisons.7b440b28f6d07ea430244fdf1fc4c64ff48f473f143b8e921846eda1c302aeba.ms.png b/translated_images/liaisons.7b440b28f6d07ea430244fdf1fc4c64ff48f473f143b8e921846eda1c302aeba.ms.png new file mode 100644 index 00000000..56f5478b Binary files /dev/null and b/translated_images/liaisons.7b440b28f6d07ea430244fdf1fc4c64ff48f473f143b8e921846eda1c302aeba.ms.png differ diff --git a/translated_images/liaisons.7b440b28f6d07ea430244fdf1fc4c64ff48f473f143b8e921846eda1c302aeba.vi.png b/translated_images/liaisons.7b440b28f6d07ea430244fdf1fc4c64ff48f473f143b8e921846eda1c302aeba.vi.png new file mode 100644 index 00000000..b6ee81fc Binary files /dev/null and b/translated_images/liaisons.7b440b28f6d07ea430244fdf1fc4c64ff48f473f143b8e921846eda1c302aeba.vi.png differ diff --git a/translated_images/liaisons.90ce7360bcf8476558f700bbbaf198ad697d5b5cb2829ba141a89c0add7c6ecd.id.png b/translated_images/liaisons.90ce7360bcf8476558f700bbbaf198ad697d5b5cb2829ba141a89c0add7c6ecd.id.png new file mode 100644 index 00000000..56f5478b Binary files /dev/null and b/translated_images/liaisons.90ce7360bcf8476558f700bbbaf198ad697d5b5cb2829ba141a89c0add7c6ecd.id.png differ diff --git a/translated_images/liaisons.90ce7360bcf8476558f700bbbaf198ad697d5b5cb2829ba141a89c0add7c6ecd.ms.png b/translated_images/liaisons.90ce7360bcf8476558f700bbbaf198ad697d5b5cb2829ba141a89c0add7c6ecd.ms.png new file mode 100644 index 00000000..56f5478b Binary files /dev/null and b/translated_images/liaisons.90ce7360bcf8476558f700bbbaf198ad697d5b5cb2829ba141a89c0add7c6ecd.ms.png differ diff --git a/translated_images/liaisons.90ce7360bcf8476558f700bbbaf198ad697d5b5cb2829ba141a89c0add7c6ecd.vi.png b/translated_images/liaisons.90ce7360bcf8476558f700bbbaf198ad697d5b5cb2829ba141a89c0add7c6ecd.vi.png new file mode 100644 index 00000000..b6ee81fc Binary files /dev/null and b/translated_images/liaisons.90ce7360bcf8476558f700bbbaf198ad697d5b5cb2829ba141a89c0add7c6ecd.vi.png differ diff --git a/translated_images/line1.299b576fbb2a59e60a59e7130030f59836891f90302be084e4e8d14da0562e2a.id.png b/translated_images/line1.299b576fbb2a59e60a59e7130030f59836891f90302be084e4e8d14da0562e2a.id.png new file mode 100644 index 00000000..c7b62fe8 Binary files /dev/null and b/translated_images/line1.299b576fbb2a59e60a59e7130030f59836891f90302be084e4e8d14da0562e2a.id.png differ diff --git a/translated_images/line1.299b576fbb2a59e60a59e7130030f59836891f90302be084e4e8d14da0562e2a.ms.png b/translated_images/line1.299b576fbb2a59e60a59e7130030f59836891f90302be084e4e8d14da0562e2a.ms.png new file mode 100644 index 00000000..c7b62fe8 Binary files /dev/null and b/translated_images/line1.299b576fbb2a59e60a59e7130030f59836891f90302be084e4e8d14da0562e2a.ms.png differ diff --git a/translated_images/line1.299b576fbb2a59e60a59e7130030f59836891f90302be084e4e8d14da0562e2a.vi.png b/translated_images/line1.299b576fbb2a59e60a59e7130030f59836891f90302be084e4e8d14da0562e2a.vi.png new file mode 100644 index 00000000..e075c0bc Binary files /dev/null and b/translated_images/line1.299b576fbb2a59e60a59e7130030f59836891f90302be084e4e8d14da0562e2a.vi.png differ diff --git a/translated_images/line1.f36eb465229a3b1fe385cdc93861aab3939de987d504b05de0b6cd567ef79f43.id.png b/translated_images/line1.f36eb465229a3b1fe385cdc93861aab3939de987d504b05de0b6cd567ef79f43.id.png new file mode 100644 index 00000000..2f3dd496 Binary files /dev/null and b/translated_images/line1.f36eb465229a3b1fe385cdc93861aab3939de987d504b05de0b6cd567ef79f43.id.png differ diff --git a/translated_images/line1.f36eb465229a3b1fe385cdc93861aab3939de987d504b05de0b6cd567ef79f43.ms.png b/translated_images/line1.f36eb465229a3b1fe385cdc93861aab3939de987d504b05de0b6cd567ef79f43.ms.png new file mode 100644 index 00000000..2f3dd496 Binary files /dev/null and b/translated_images/line1.f36eb465229a3b1fe385cdc93861aab3939de987d504b05de0b6cd567ef79f43.ms.png differ diff --git a/translated_images/line1.f36eb465229a3b1fe385cdc93861aab3939de987d504b05de0b6cd567ef79f43.vi.png b/translated_images/line1.f36eb465229a3b1fe385cdc93861aab3939de987d504b05de0b6cd567ef79f43.vi.png new file mode 100644 index 00000000..da506bcf Binary files /dev/null and b/translated_images/line1.f36eb465229a3b1fe385cdc93861aab3939de987d504b05de0b6cd567ef79f43.vi.png differ diff --git a/translated_images/line2.3b18fcda7176ceba5b6689eaaabb817d49c965e986f11cac1ae3f424030c34d8.id.png b/translated_images/line2.3b18fcda7176ceba5b6689eaaabb817d49c965e986f11cac1ae3f424030c34d8.id.png new file mode 100644 index 00000000..b870e744 Binary files /dev/null and b/translated_images/line2.3b18fcda7176ceba5b6689eaaabb817d49c965e986f11cac1ae3f424030c34d8.id.png differ diff --git a/translated_images/line2.3b18fcda7176ceba5b6689eaaabb817d49c965e986f11cac1ae3f424030c34d8.ms.png b/translated_images/line2.3b18fcda7176ceba5b6689eaaabb817d49c965e986f11cac1ae3f424030c34d8.ms.png new file mode 100644 index 00000000..3c339d91 Binary files /dev/null and b/translated_images/line2.3b18fcda7176ceba5b6689eaaabb817d49c965e986f11cac1ae3f424030c34d8.ms.png differ diff --git a/translated_images/line2.3b18fcda7176ceba5b6689eaaabb817d49c965e986f11cac1ae3f424030c34d8.vi.png b/translated_images/line2.3b18fcda7176ceba5b6689eaaabb817d49c965e986f11cac1ae3f424030c34d8.vi.png new file mode 100644 index 00000000..890c82af Binary files /dev/null and b/translated_images/line2.3b18fcda7176ceba5b6689eaaabb817d49c965e986f11cac1ae3f424030c34d8.vi.png differ diff --git a/translated_images/line2.a5b3493dc01058af6402e657aaa9ae1125fafb5e7d6630c777aa60f900a544e4.id.png b/translated_images/line2.a5b3493dc01058af6402e657aaa9ae1125fafb5e7d6630c777aa60f900a544e4.id.png new file mode 100644 index 00000000..b9b54634 Binary files /dev/null and b/translated_images/line2.a5b3493dc01058af6402e657aaa9ae1125fafb5e7d6630c777aa60f900a544e4.id.png differ diff --git a/translated_images/line2.a5b3493dc01058af6402e657aaa9ae1125fafb5e7d6630c777aa60f900a544e4.ms.png b/translated_images/line2.a5b3493dc01058af6402e657aaa9ae1125fafb5e7d6630c777aa60f900a544e4.ms.png new file mode 100644 index 00000000..16c663c2 Binary files /dev/null and b/translated_images/line2.a5b3493dc01058af6402e657aaa9ae1125fafb5e7d6630c777aa60f900a544e4.ms.png differ diff --git a/translated_images/line2.a5b3493dc01058af6402e657aaa9ae1125fafb5e7d6630c777aa60f900a544e4.vi.png b/translated_images/line2.a5b3493dc01058af6402e657aaa9ae1125fafb5e7d6630c777aa60f900a544e4.vi.png new file mode 100644 index 00000000..1605df5d Binary files /dev/null and b/translated_images/line2.a5b3493dc01058af6402e657aaa9ae1125fafb5e7d6630c777aa60f900a544e4.vi.png differ diff --git a/translated_images/max-length-per-order.e5b283d952c78c12b091307c5d3cf67132dad6fefe80a073353b9dc5c2bd3eb8.id.png b/translated_images/max-length-per-order.e5b283d952c78c12b091307c5d3cf67132dad6fefe80a073353b9dc5c2bd3eb8.id.png new file mode 100644 index 00000000..b7e85450 Binary files /dev/null and b/translated_images/max-length-per-order.e5b283d952c78c12b091307c5d3cf67132dad6fefe80a073353b9dc5c2bd3eb8.id.png differ diff --git a/translated_images/max-length-per-order.e5b283d952c78c12b091307c5d3cf67132dad6fefe80a073353b9dc5c2bd3eb8.ms.png b/translated_images/max-length-per-order.e5b283d952c78c12b091307c5d3cf67132dad6fefe80a073353b9dc5c2bd3eb8.ms.png new file mode 100644 index 00000000..62c34d3d Binary files /dev/null and b/translated_images/max-length-per-order.e5b283d952c78c12b091307c5d3cf67132dad6fefe80a073353b9dc5c2bd3eb8.ms.png differ diff --git a/translated_images/max-length-per-order.e5b283d952c78c12b091307c5d3cf67132dad6fefe80a073353b9dc5c2bd3eb8.vi.png b/translated_images/max-length-per-order.e5b283d952c78c12b091307c5d3cf67132dad6fefe80a073353b9dc5c2bd3eb8.vi.png new file mode 100644 index 00000000..66ebef30 Binary files /dev/null and b/translated_images/max-length-per-order.e5b283d952c78c12b091307c5d3cf67132dad6fefe80a073353b9dc5c2bd3eb8.vi.png differ diff --git a/translated_images/max-wingspan-02.e79fd847b2640b89e21e340a3a9f4c5d4b224c4fcd65f54385e84f1c9ed26d52.id.png b/translated_images/max-wingspan-02.e79fd847b2640b89e21e340a3a9f4c5d4b224c4fcd65f54385e84f1c9ed26d52.id.png new file mode 100644 index 00000000..96713a66 Binary files /dev/null and b/translated_images/max-wingspan-02.e79fd847b2640b89e21e340a3a9f4c5d4b224c4fcd65f54385e84f1c9ed26d52.id.png differ diff --git a/translated_images/max-wingspan-02.e79fd847b2640b89e21e340a3a9f4c5d4b224c4fcd65f54385e84f1c9ed26d52.ms.png b/translated_images/max-wingspan-02.e79fd847b2640b89e21e340a3a9f4c5d4b224c4fcd65f54385e84f1c9ed26d52.ms.png new file mode 100644 index 00000000..96713a66 Binary files /dev/null and b/translated_images/max-wingspan-02.e79fd847b2640b89e21e340a3a9f4c5d4b224c4fcd65f54385e84f1c9ed26d52.ms.png differ diff --git a/translated_images/max-wingspan-02.e79fd847b2640b89e21e340a3a9f4c5d4b224c4fcd65f54385e84f1c9ed26d52.vi.png b/translated_images/max-wingspan-02.e79fd847b2640b89e21e340a3a9f4c5d4b224c4fcd65f54385e84f1c9ed26d52.vi.png new file mode 100644 index 00000000..96713a66 Binary files /dev/null and b/translated_images/max-wingspan-02.e79fd847b2640b89e21e340a3a9f4c5d4b224c4fcd65f54385e84f1c9ed26d52.vi.png differ diff --git a/translated_images/max-wingspan-labels-02.aa90e826ca49a9d1dde78075e9755c1849ef56a4e9ec60f7e9f3806daf9283e2.id.png b/translated_images/max-wingspan-labels-02.aa90e826ca49a9d1dde78075e9755c1849ef56a4e9ec60f7e9f3806daf9283e2.id.png new file mode 100644 index 00000000..7716da5f Binary files /dev/null and b/translated_images/max-wingspan-labels-02.aa90e826ca49a9d1dde78075e9755c1849ef56a4e9ec60f7e9f3806daf9283e2.id.png differ diff --git a/translated_images/max-wingspan-labels-02.aa90e826ca49a9d1dde78075e9755c1849ef56a4e9ec60f7e9f3806daf9283e2.ms.png b/translated_images/max-wingspan-labels-02.aa90e826ca49a9d1dde78075e9755c1849ef56a4e9ec60f7e9f3806daf9283e2.ms.png new file mode 100644 index 00000000..593235b9 Binary files /dev/null and b/translated_images/max-wingspan-labels-02.aa90e826ca49a9d1dde78075e9755c1849ef56a4e9ec60f7e9f3806daf9283e2.ms.png differ diff --git a/translated_images/max-wingspan-labels-02.aa90e826ca49a9d1dde78075e9755c1849ef56a4e9ec60f7e9f3806daf9283e2.vi.png b/translated_images/max-wingspan-labels-02.aa90e826ca49a9d1dde78075e9755c1849ef56a4e9ec60f7e9f3806daf9283e2.vi.png new file mode 100644 index 00000000..51ba2071 Binary files /dev/null and b/translated_images/max-wingspan-labels-02.aa90e826ca49a9d1dde78075e9755c1849ef56a4e9ec60f7e9f3806daf9283e2.vi.png differ diff --git a/translated_images/max-wingspan-labels.46f0cc3c48edd4e00e6ab6d8797e2717a33b4b94d97af3539c5442a1299d03c1.id.png b/translated_images/max-wingspan-labels.46f0cc3c48edd4e00e6ab6d8797e2717a33b4b94d97af3539c5442a1299d03c1.id.png new file mode 100644 index 00000000..0c37ab05 Binary files /dev/null and b/translated_images/max-wingspan-labels.46f0cc3c48edd4e00e6ab6d8797e2717a33b4b94d97af3539c5442a1299d03c1.id.png differ diff --git a/translated_images/max-wingspan-labels.46f0cc3c48edd4e00e6ab6d8797e2717a33b4b94d97af3539c5442a1299d03c1.ms.png b/translated_images/max-wingspan-labels.46f0cc3c48edd4e00e6ab6d8797e2717a33b4b94d97af3539c5442a1299d03c1.ms.png new file mode 100644 index 00000000..0c37ab05 Binary files /dev/null and b/translated_images/max-wingspan-labels.46f0cc3c48edd4e00e6ab6d8797e2717a33b4b94d97af3539c5442a1299d03c1.ms.png differ diff --git a/translated_images/max-wingspan-labels.46f0cc3c48edd4e00e6ab6d8797e2717a33b4b94d97af3539c5442a1299d03c1.vi.png b/translated_images/max-wingspan-labels.46f0cc3c48edd4e00e6ab6d8797e2717a33b4b94d97af3539c5442a1299d03c1.vi.png new file mode 100644 index 00000000..0c37ab05 Binary files /dev/null and b/translated_images/max-wingspan-labels.46f0cc3c48edd4e00e6ab6d8797e2717a33b4b94d97af3539c5442a1299d03c1.vi.png differ diff --git a/translated_images/max-wingspan.0b8d0858436414aa1c53556bfd07e7d4267120782d236abe10e0473252de0760.id.png b/translated_images/max-wingspan.0b8d0858436414aa1c53556bfd07e7d4267120782d236abe10e0473252de0760.id.png new file mode 100644 index 00000000..72f5a3e4 Binary files /dev/null and b/translated_images/max-wingspan.0b8d0858436414aa1c53556bfd07e7d4267120782d236abe10e0473252de0760.id.png differ diff --git a/translated_images/max-wingspan.0b8d0858436414aa1c53556bfd07e7d4267120782d236abe10e0473252de0760.ms.png b/translated_images/max-wingspan.0b8d0858436414aa1c53556bfd07e7d4267120782d236abe10e0473252de0760.ms.png new file mode 100644 index 00000000..72f5a3e4 Binary files /dev/null and b/translated_images/max-wingspan.0b8d0858436414aa1c53556bfd07e7d4267120782d236abe10e0473252de0760.ms.png differ diff --git a/translated_images/max-wingspan.0b8d0858436414aa1c53556bfd07e7d4267120782d236abe10e0473252de0760.vi.png b/translated_images/max-wingspan.0b8d0858436414aa1c53556bfd07e7d4267120782d236abe10e0473252de0760.vi.png new file mode 100644 index 00000000..72f5a3e4 Binary files /dev/null and b/translated_images/max-wingspan.0b8d0858436414aa1c53556bfd07e7d4267120782d236abe10e0473252de0760.vi.png differ diff --git a/translated_images/multi.56548caa9eae8d0fd9012a8586295538c7f4f426e2abc714ba070e2e4b1fc2c1.id.png b/translated_images/multi.56548caa9eae8d0fd9012a8586295538c7f4f426e2abc714ba070e2e4b1fc2c1.id.png new file mode 100644 index 00000000..f8653181 Binary files /dev/null and b/translated_images/multi.56548caa9eae8d0fd9012a8586295538c7f4f426e2abc714ba070e2e4b1fc2c1.id.png differ diff --git a/translated_images/multi.56548caa9eae8d0fd9012a8586295538c7f4f426e2abc714ba070e2e4b1fc2c1.ms.png b/translated_images/multi.56548caa9eae8d0fd9012a8586295538c7f4f426e2abc714ba070e2e4b1fc2c1.ms.png new file mode 100644 index 00000000..daa584a3 Binary files /dev/null and b/translated_images/multi.56548caa9eae8d0fd9012a8586295538c7f4f426e2abc714ba070e2e4b1fc2c1.ms.png differ diff --git a/translated_images/multi.56548caa9eae8d0fd9012a8586295538c7f4f426e2abc714ba070e2e4b1fc2c1.vi.png b/translated_images/multi.56548caa9eae8d0fd9012a8586295538c7f4f426e2abc714ba070e2e4b1fc2c1.vi.png new file mode 100644 index 00000000..0628e46b Binary files /dev/null and b/translated_images/multi.56548caa9eae8d0fd9012a8586295538c7f4f426e2abc714ba070e2e4b1fc2c1.vi.png differ diff --git a/translated_images/new-container.650e10c7a20a5f83824264bfaa0f818d8c203f98136f4647385bd0c369b5035b.id.png b/translated_images/new-container.650e10c7a20a5f83824264bfaa0f818d8c203f98136f4647385bd0c369b5035b.id.png new file mode 100644 index 00000000..edde14ec Binary files /dev/null and b/translated_images/new-container.650e10c7a20a5f83824264bfaa0f818d8c203f98136f4647385bd0c369b5035b.id.png differ diff --git a/translated_images/new-container.650e10c7a20a5f83824264bfaa0f818d8c203f98136f4647385bd0c369b5035b.ms.png b/translated_images/new-container.650e10c7a20a5f83824264bfaa0f818d8c203f98136f4647385bd0c369b5035b.ms.png new file mode 100644 index 00000000..98b0a8ad Binary files /dev/null and b/translated_images/new-container.650e10c7a20a5f83824264bfaa0f818d8c203f98136f4647385bd0c369b5035b.ms.png differ diff --git a/translated_images/new-container.650e10c7a20a5f83824264bfaa0f818d8c203f98136f4647385bd0c369b5035b.vi.png b/translated_images/new-container.650e10c7a20a5f83824264bfaa0f818d8c203f98136f4647385bd0c369b5035b.vi.png new file mode 100644 index 00000000..593bc7c5 Binary files /dev/null and b/translated_images/new-container.650e10c7a20a5f83824264bfaa0f818d8c203f98136f4647385bd0c369b5035b.vi.png differ diff --git a/translated_images/normal-histogram.dfae0d67c202137d552d0015fb87581eca263925e512404f3c12d8885315432e.id.png b/translated_images/normal-histogram.dfae0d67c202137d552d0015fb87581eca263925e512404f3c12d8885315432e.id.png new file mode 100644 index 00000000..3e9ab8ac Binary files /dev/null and b/translated_images/normal-histogram.dfae0d67c202137d552d0015fb87581eca263925e512404f3c12d8885315432e.id.png differ diff --git a/translated_images/normal-histogram.dfae0d67c202137d552d0015fb87581eca263925e512404f3c12d8885315432e.ms.png b/translated_images/normal-histogram.dfae0d67c202137d552d0015fb87581eca263925e512404f3c12d8885315432e.ms.png new file mode 100644 index 00000000..3e9ab8ac Binary files /dev/null and b/translated_images/normal-histogram.dfae0d67c202137d552d0015fb87581eca263925e512404f3c12d8885315432e.ms.png differ diff --git a/translated_images/normal-histogram.dfae0d67c202137d552d0015fb87581eca263925e512404f3c12d8885315432e.vi.png b/translated_images/normal-histogram.dfae0d67c202137d552d0015fb87581eca263925e512404f3c12d8885315432e.vi.png new file mode 100644 index 00000000..3e9ab8ac Binary files /dev/null and b/translated_images/normal-histogram.dfae0d67c202137d552d0015fb87581eca263925e512404f3c12d8885315432e.vi.png differ diff --git a/translated_images/notebook-1.12998af7b02c83f536c11b3aeba561be16e0f05e94146600728ec64270ce1105.id.png b/translated_images/notebook-1.12998af7b02c83f536c11b3aeba561be16e0f05e94146600728ec64270ce1105.id.png new file mode 100644 index 00000000..180b45ca Binary files /dev/null and b/translated_images/notebook-1.12998af7b02c83f536c11b3aeba561be16e0f05e94146600728ec64270ce1105.id.png differ diff --git a/translated_images/notebook-1.12998af7b02c83f536c11b3aeba561be16e0f05e94146600728ec64270ce1105.ms.png b/translated_images/notebook-1.12998af7b02c83f536c11b3aeba561be16e0f05e94146600728ec64270ce1105.ms.png new file mode 100644 index 00000000..437b66c5 Binary files /dev/null and b/translated_images/notebook-1.12998af7b02c83f536c11b3aeba561be16e0f05e94146600728ec64270ce1105.ms.png differ diff --git a/translated_images/notebook-1.12998af7b02c83f536c11b3aeba561be16e0f05e94146600728ec64270ce1105.vi.png b/translated_images/notebook-1.12998af7b02c83f536c11b3aeba561be16e0f05e94146600728ec64270ce1105.vi.png new file mode 100644 index 00000000..55dad72a Binary files /dev/null and b/translated_images/notebook-1.12998af7b02c83f536c11b3aeba561be16e0f05e94146600728ec64270ce1105.vi.png differ diff --git a/translated_images/notebook-2.9a657c037e34f1cf26c0212f5ee9e2da8545b3e107c7682c55114e494167a8aa.id.png b/translated_images/notebook-2.9a657c037e34f1cf26c0212f5ee9e2da8545b3e107c7682c55114e494167a8aa.id.png new file mode 100644 index 00000000..e5b4f439 Binary files /dev/null and b/translated_images/notebook-2.9a657c037e34f1cf26c0212f5ee9e2da8545b3e107c7682c55114e494167a8aa.id.png differ diff --git a/translated_images/notebook-2.9a657c037e34f1cf26c0212f5ee9e2da8545b3e107c7682c55114e494167a8aa.ms.png b/translated_images/notebook-2.9a657c037e34f1cf26c0212f5ee9e2da8545b3e107c7682c55114e494167a8aa.ms.png new file mode 100644 index 00000000..be6c5b37 Binary files /dev/null and b/translated_images/notebook-2.9a657c037e34f1cf26c0212f5ee9e2da8545b3e107c7682c55114e494167a8aa.ms.png differ diff --git a/translated_images/notebook-2.9a657c037e34f1cf26c0212f5ee9e2da8545b3e107c7682c55114e494167a8aa.vi.png b/translated_images/notebook-2.9a657c037e34f1cf26c0212f5ee9e2da8545b3e107c7682c55114e494167a8aa.vi.png new file mode 100644 index 00000000..1eee1cf8 Binary files /dev/null and b/translated_images/notebook-2.9a657c037e34f1cf26c0212f5ee9e2da8545b3e107c7682c55114e494167a8aa.vi.png differ diff --git a/translated_images/parts-of-spreadsheet.120711c82aa18a45c3e62a491a15bba0a31ab0e9db407ec022702fed8ffd89bf.id.png b/translated_images/parts-of-spreadsheet.120711c82aa18a45c3e62a491a15bba0a31ab0e9db407ec022702fed8ffd89bf.id.png new file mode 100644 index 00000000..00145d0b Binary files /dev/null and b/translated_images/parts-of-spreadsheet.120711c82aa18a45c3e62a491a15bba0a31ab0e9db407ec022702fed8ffd89bf.id.png differ diff --git a/translated_images/parts-of-spreadsheet.120711c82aa18a45c3e62a491a15bba0a31ab0e9db407ec022702fed8ffd89bf.ms.png b/translated_images/parts-of-spreadsheet.120711c82aa18a45c3e62a491a15bba0a31ab0e9db407ec022702fed8ffd89bf.ms.png new file mode 100644 index 00000000..00145d0b Binary files /dev/null and b/translated_images/parts-of-spreadsheet.120711c82aa18a45c3e62a491a15bba0a31ab0e9db407ec022702fed8ffd89bf.ms.png differ diff --git a/translated_images/parts-of-spreadsheet.120711c82aa18a45c3e62a491a15bba0a31ab0e9db407ec022702fed8ffd89bf.vi.png b/translated_images/parts-of-spreadsheet.120711c82aa18a45c3e62a491a15bba0a31ab0e9db407ec022702fed8ffd89bf.vi.png new file mode 100644 index 00000000..00145d0b Binary files /dev/null and b/translated_images/parts-of-spreadsheet.120711c82aa18a45c3e62a491a15bba0a31ab0e9db407ec022702fed8ffd89bf.vi.png differ diff --git a/translated_images/pie1-wb.685df063673751f4b0b82127f7a52c7f9a920192f22ae61ad28412ba9ace97bf.id.png b/translated_images/pie1-wb.685df063673751f4b0b82127f7a52c7f9a920192f22ae61ad28412ba9ace97bf.id.png new file mode 100644 index 00000000..c5df18c1 Binary files /dev/null and b/translated_images/pie1-wb.685df063673751f4b0b82127f7a52c7f9a920192f22ae61ad28412ba9ace97bf.id.png differ diff --git a/translated_images/pie1-wb.685df063673751f4b0b82127f7a52c7f9a920192f22ae61ad28412ba9ace97bf.ms.png b/translated_images/pie1-wb.685df063673751f4b0b82127f7a52c7f9a920192f22ae61ad28412ba9ace97bf.ms.png new file mode 100644 index 00000000..7391349e Binary files /dev/null and b/translated_images/pie1-wb.685df063673751f4b0b82127f7a52c7f9a920192f22ae61ad28412ba9ace97bf.ms.png differ diff --git a/translated_images/pie1-wb.685df063673751f4b0b82127f7a52c7f9a920192f22ae61ad28412ba9ace97bf.vi.png b/translated_images/pie1-wb.685df063673751f4b0b82127f7a52c7f9a920192f22ae61ad28412ba9ace97bf.vi.png new file mode 100644 index 00000000..533e4737 Binary files /dev/null and b/translated_images/pie1-wb.685df063673751f4b0b82127f7a52c7f9a920192f22ae61ad28412ba9ace97bf.vi.png differ diff --git a/translated_images/pie1-wb.e201f2fcc335413143ce37650fb7f5f0bb21358e7823a327ed8644dfb84be9db.id.png b/translated_images/pie1-wb.e201f2fcc335413143ce37650fb7f5f0bb21358e7823a327ed8644dfb84be9db.id.png new file mode 100644 index 00000000..fc6f052d Binary files /dev/null and b/translated_images/pie1-wb.e201f2fcc335413143ce37650fb7f5f0bb21358e7823a327ed8644dfb84be9db.id.png differ diff --git a/translated_images/pie1-wb.e201f2fcc335413143ce37650fb7f5f0bb21358e7823a327ed8644dfb84be9db.ms.png b/translated_images/pie1-wb.e201f2fcc335413143ce37650fb7f5f0bb21358e7823a327ed8644dfb84be9db.ms.png new file mode 100644 index 00000000..37e74f6b Binary files /dev/null and b/translated_images/pie1-wb.e201f2fcc335413143ce37650fb7f5f0bb21358e7823a327ed8644dfb84be9db.ms.png differ diff --git a/translated_images/pie1-wb.e201f2fcc335413143ce37650fb7f5f0bb21358e7823a327ed8644dfb84be9db.vi.png b/translated_images/pie1-wb.e201f2fcc335413143ce37650fb7f5f0bb21358e7823a327ed8644dfb84be9db.vi.png new file mode 100644 index 00000000..931d2d10 Binary files /dev/null and b/translated_images/pie1-wb.e201f2fcc335413143ce37650fb7f5f0bb21358e7823a327ed8644dfb84be9db.vi.png differ diff --git a/translated_images/pie1.8f6a8bfac96de60e38ced1a1ac39fd9caafa95142b3bbcb65d540bcad678806f.id.png b/translated_images/pie1.8f6a8bfac96de60e38ced1a1ac39fd9caafa95142b3bbcb65d540bcad678806f.id.png new file mode 100644 index 00000000..03536e9e Binary files /dev/null and b/translated_images/pie1.8f6a8bfac96de60e38ced1a1ac39fd9caafa95142b3bbcb65d540bcad678806f.id.png differ diff --git a/translated_images/pie1.8f6a8bfac96de60e38ced1a1ac39fd9caafa95142b3bbcb65d540bcad678806f.ms.png b/translated_images/pie1.8f6a8bfac96de60e38ced1a1ac39fd9caafa95142b3bbcb65d540bcad678806f.ms.png new file mode 100644 index 00000000..52ed0d64 Binary files /dev/null and b/translated_images/pie1.8f6a8bfac96de60e38ced1a1ac39fd9caafa95142b3bbcb65d540bcad678806f.ms.png differ diff --git a/translated_images/pie1.8f6a8bfac96de60e38ced1a1ac39fd9caafa95142b3bbcb65d540bcad678806f.vi.png b/translated_images/pie1.8f6a8bfac96de60e38ced1a1ac39fd9caafa95142b3bbcb65d540bcad678806f.vi.png new file mode 100644 index 00000000..e8e6d60c Binary files /dev/null and b/translated_images/pie1.8f6a8bfac96de60e38ced1a1ac39fd9caafa95142b3bbcb65d540bcad678806f.vi.png differ diff --git a/translated_images/planetary-computer-explorer.c1e95a9b053167d64e2e8e4347cfb689e47e2037c33103fc1bbea1a149d4f85b.id.png b/translated_images/planetary-computer-explorer.c1e95a9b053167d64e2e8e4347cfb689e47e2037c33103fc1bbea1a149d4f85b.id.png new file mode 100644 index 00000000..9bc1aa77 Binary files /dev/null and b/translated_images/planetary-computer-explorer.c1e95a9b053167d64e2e8e4347cfb689e47e2037c33103fc1bbea1a149d4f85b.id.png differ diff --git a/translated_images/planetary-computer-explorer.c1e95a9b053167d64e2e8e4347cfb689e47e2037c33103fc1bbea1a149d4f85b.ms.png b/translated_images/planetary-computer-explorer.c1e95a9b053167d64e2e8e4347cfb689e47e2037c33103fc1bbea1a149d4f85b.ms.png new file mode 100644 index 00000000..d366112e Binary files /dev/null and b/translated_images/planetary-computer-explorer.c1e95a9b053167d64e2e8e4347cfb689e47e2037c33103fc1bbea1a149d4f85b.ms.png differ diff --git a/translated_images/planetary-computer-explorer.c1e95a9b053167d64e2e8e4347cfb689e47e2037c33103fc1bbea1a149d4f85b.vi.png b/translated_images/planetary-computer-explorer.c1e95a9b053167d64e2e8e4347cfb689e47e2037c33103fc1bbea1a149d4f85b.vi.png new file mode 100644 index 00000000..211d3bb2 Binary files /dev/null and b/translated_images/planetary-computer-explorer.c1e95a9b053167d64e2e8e4347cfb689e47e2037c33103fc1bbea1a149d4f85b.vi.png differ diff --git a/translated_images/probability-density.a8aad29f17a14afb519b407c7b6edeb9f3f9aa5f69c9e6d9445f604e5f8a2bf7.id.png b/translated_images/probability-density.a8aad29f17a14afb519b407c7b6edeb9f3f9aa5f69c9e6d9445f604e5f8a2bf7.id.png new file mode 100644 index 00000000..d24ff6b4 Binary files /dev/null and b/translated_images/probability-density.a8aad29f17a14afb519b407c7b6edeb9f3f9aa5f69c9e6d9445f604e5f8a2bf7.id.png differ diff --git a/translated_images/probability-density.a8aad29f17a14afb519b407c7b6edeb9f3f9aa5f69c9e6d9445f604e5f8a2bf7.ms.png b/translated_images/probability-density.a8aad29f17a14afb519b407c7b6edeb9f3f9aa5f69c9e6d9445f604e5f8a2bf7.ms.png new file mode 100644 index 00000000..276636a0 Binary files /dev/null and b/translated_images/probability-density.a8aad29f17a14afb519b407c7b6edeb9f3f9aa5f69c9e6d9445f604e5f8a2bf7.ms.png differ diff --git a/translated_images/probability-density.a8aad29f17a14afb519b407c7b6edeb9f3f9aa5f69c9e6d9445f604e5f8a2bf7.vi.png b/translated_images/probability-density.a8aad29f17a14afb519b407c7b6edeb9f3f9aa5f69c9e6d9445f604e5f8a2bf7.vi.png new file mode 100644 index 00000000..81c57412 Binary files /dev/null and b/translated_images/probability-density.a8aad29f17a14afb519b407c7b6edeb9f3f9aa5f69c9e6d9445f604e5f8a2bf7.vi.png differ diff --git a/translated_images/project-schema.420e56d495624541eaecf2b737f138c86fb7d8162bb1c0bf8783c350872ffc4d.id.png b/translated_images/project-schema.420e56d495624541eaecf2b737f138c86fb7d8162bb1c0bf8783c350872ffc4d.id.png new file mode 100644 index 00000000..2ccd9e06 Binary files /dev/null and b/translated_images/project-schema.420e56d495624541eaecf2b737f138c86fb7d8162bb1c0bf8783c350872ffc4d.id.png differ diff --git a/translated_images/project-schema.420e56d495624541eaecf2b737f138c86fb7d8162bb1c0bf8783c350872ffc4d.ms.png b/translated_images/project-schema.420e56d495624541eaecf2b737f138c86fb7d8162bb1c0bf8783c350872ffc4d.ms.png new file mode 100644 index 00000000..f26151e4 Binary files /dev/null and b/translated_images/project-schema.420e56d495624541eaecf2b737f138c86fb7d8162bb1c0bf8783c350872ffc4d.ms.png differ diff --git a/translated_images/project-schema.420e56d495624541eaecf2b737f138c86fb7d8162bb1c0bf8783c350872ffc4d.vi.png b/translated_images/project-schema.420e56d495624541eaecf2b737f138c86fb7d8162bb1c0bf8783c350872ffc4d.vi.png new file mode 100644 index 00000000..c6faa2a3 Binary files /dev/null and b/translated_images/project-schema.420e56d495624541eaecf2b737f138c86fb7d8162bb1c0bf8783c350872ffc4d.vi.png differ diff --git a/translated_images/project-schema.736f6e403f321eb48d10242b3f4334dc6ccf0eabef8ff87daf52b89781389fcb.id.png b/translated_images/project-schema.736f6e403f321eb48d10242b3f4334dc6ccf0eabef8ff87daf52b89781389fcb.id.png new file mode 100644 index 00000000..97dfe4ff Binary files /dev/null and b/translated_images/project-schema.736f6e403f321eb48d10242b3f4334dc6ccf0eabef8ff87daf52b89781389fcb.id.png differ diff --git a/translated_images/project-schema.736f6e403f321eb48d10242b3f4334dc6ccf0eabef8ff87daf52b89781389fcb.ms.png b/translated_images/project-schema.736f6e403f321eb48d10242b3f4334dc6ccf0eabef8ff87daf52b89781389fcb.ms.png new file mode 100644 index 00000000..0ead3757 Binary files /dev/null and b/translated_images/project-schema.736f6e403f321eb48d10242b3f4334dc6ccf0eabef8ff87daf52b89781389fcb.ms.png differ diff --git a/translated_images/project-schema.736f6e403f321eb48d10242b3f4334dc6ccf0eabef8ff87daf52b89781389fcb.vi.png b/translated_images/project-schema.736f6e403f321eb48d10242b3f4334dc6ccf0eabef8ff87daf52b89781389fcb.vi.png new file mode 100644 index 00000000..c6faa2a3 Binary files /dev/null and b/translated_images/project-schema.736f6e403f321eb48d10242b3f4334dc6ccf0eabef8ff87daf52b89781389fcb.vi.png differ diff --git a/translated_images/scatter-wb.9d98b0ed7f0388af979441853361a11df5f518f5307938a503ca7913e986111b.id.png b/translated_images/scatter-wb.9d98b0ed7f0388af979441853361a11df5f518f5307938a503ca7913e986111b.id.png new file mode 100644 index 00000000..44c3cea7 Binary files /dev/null and b/translated_images/scatter-wb.9d98b0ed7f0388af979441853361a11df5f518f5307938a503ca7913e986111b.id.png differ diff --git a/translated_images/scatter-wb.9d98b0ed7f0388af979441853361a11df5f518f5307938a503ca7913e986111b.ms.png b/translated_images/scatter-wb.9d98b0ed7f0388af979441853361a11df5f518f5307938a503ca7913e986111b.ms.png new file mode 100644 index 00000000..7b238590 Binary files /dev/null and b/translated_images/scatter-wb.9d98b0ed7f0388af979441853361a11df5f518f5307938a503ca7913e986111b.ms.png differ diff --git a/translated_images/scatter-wb.9d98b0ed7f0388af979441853361a11df5f518f5307938a503ca7913e986111b.vi.png b/translated_images/scatter-wb.9d98b0ed7f0388af979441853361a11df5f518f5307938a503ca7913e986111b.vi.png new file mode 100644 index 00000000..1eff0683 Binary files /dev/null and b/translated_images/scatter-wb.9d98b0ed7f0388af979441853361a11df5f518f5307938a503ca7913e986111b.vi.png differ diff --git a/translated_images/scatter.520a43eceb46dbcb96899da0f580f3f3615cf9dba38c9c84e52ebc6b4b48e3ff.id.png b/translated_images/scatter.520a43eceb46dbcb96899da0f580f3f3615cf9dba38c9c84e52ebc6b4b48e3ff.id.png new file mode 100644 index 00000000..4b96709c Binary files /dev/null and b/translated_images/scatter.520a43eceb46dbcb96899da0f580f3f3615cf9dba38c9c84e52ebc6b4b48e3ff.id.png differ diff --git a/translated_images/scatter.520a43eceb46dbcb96899da0f580f3f3615cf9dba38c9c84e52ebc6b4b48e3ff.ms.png b/translated_images/scatter.520a43eceb46dbcb96899da0f580f3f3615cf9dba38c9c84e52ebc6b4b48e3ff.ms.png new file mode 100644 index 00000000..4b96709c Binary files /dev/null and b/translated_images/scatter.520a43eceb46dbcb96899da0f580f3f3615cf9dba38c9c84e52ebc6b4b48e3ff.ms.png differ diff --git a/translated_images/scatter.520a43eceb46dbcb96899da0f580f3f3615cf9dba38c9c84e52ebc6b4b48e3ff.vi.png b/translated_images/scatter.520a43eceb46dbcb96899da0f580f3f3615cf9dba38c9c84e52ebc6b4b48e3ff.vi.png new file mode 100644 index 00000000..4b96709c Binary files /dev/null and b/translated_images/scatter.520a43eceb46dbcb96899da0f580f3f3615cf9dba38c9c84e52ebc6b4b48e3ff.vi.png differ diff --git a/translated_images/scatter1.5e1aa5fd6706c5d12b5e503ccb77f8a930f8620f539f524ddf56a16c039a5d2f.id.png b/translated_images/scatter1.5e1aa5fd6706c5d12b5e503ccb77f8a930f8620f539f524ddf56a16c039a5d2f.id.png new file mode 100644 index 00000000..67cabd42 Binary files /dev/null and b/translated_images/scatter1.5e1aa5fd6706c5d12b5e503ccb77f8a930f8620f539f524ddf56a16c039a5d2f.id.png differ diff --git a/translated_images/scatter1.5e1aa5fd6706c5d12b5e503ccb77f8a930f8620f539f524ddf56a16c039a5d2f.ms.png b/translated_images/scatter1.5e1aa5fd6706c5d12b5e503ccb77f8a930f8620f539f524ddf56a16c039a5d2f.ms.png new file mode 100644 index 00000000..da6a578b Binary files /dev/null and b/translated_images/scatter1.5e1aa5fd6706c5d12b5e503ccb77f8a930f8620f539f524ddf56a16c039a5d2f.ms.png differ diff --git a/translated_images/scatter1.5e1aa5fd6706c5d12b5e503ccb77f8a930f8620f539f524ddf56a16c039a5d2f.vi.png b/translated_images/scatter1.5e1aa5fd6706c5d12b5e503ccb77f8a930f8620f539f524ddf56a16c039a5d2f.vi.png new file mode 100644 index 00000000..da6a578b Binary files /dev/null and b/translated_images/scatter1.5e1aa5fd6706c5d12b5e503ccb77f8a930f8620f539f524ddf56a16c039a5d2f.vi.png differ diff --git a/translated_images/scatter1.86b8900674d88b26dd3353a83fe604e9ab3722c4680cc40ee9beb452ff02cdea.id.png b/translated_images/scatter1.86b8900674d88b26dd3353a83fe604e9ab3722c4680cc40ee9beb452ff02cdea.id.png new file mode 100644 index 00000000..f3993a59 Binary files /dev/null and b/translated_images/scatter1.86b8900674d88b26dd3353a83fe604e9ab3722c4680cc40ee9beb452ff02cdea.id.png differ diff --git a/translated_images/scatter1.86b8900674d88b26dd3353a83fe604e9ab3722c4680cc40ee9beb452ff02cdea.ms.png b/translated_images/scatter1.86b8900674d88b26dd3353a83fe604e9ab3722c4680cc40ee9beb452ff02cdea.ms.png new file mode 100644 index 00000000..a877814a Binary files /dev/null and b/translated_images/scatter1.86b8900674d88b26dd3353a83fe604e9ab3722c4680cc40ee9beb452ff02cdea.ms.png differ diff --git a/translated_images/scatter1.86b8900674d88b26dd3353a83fe604e9ab3722c4680cc40ee9beb452ff02cdea.vi.png b/translated_images/scatter1.86b8900674d88b26dd3353a83fe604e9ab3722c4680cc40ee9beb452ff02cdea.vi.png new file mode 100644 index 00000000..9cf156f8 Binary files /dev/null and b/translated_images/scatter1.86b8900674d88b26dd3353a83fe604e9ab3722c4680cc40ee9beb452ff02cdea.vi.png differ diff --git a/translated_images/scatter2.4d1cbc693bad20e2b563888747eb6bdf65b73ce449d903f7cd4068a78502dcff.id.png b/translated_images/scatter2.4d1cbc693bad20e2b563888747eb6bdf65b73ce449d903f7cd4068a78502dcff.id.png new file mode 100644 index 00000000..06bcc651 Binary files /dev/null and b/translated_images/scatter2.4d1cbc693bad20e2b563888747eb6bdf65b73ce449d903f7cd4068a78502dcff.id.png differ diff --git a/translated_images/scatter2.4d1cbc693bad20e2b563888747eb6bdf65b73ce449d903f7cd4068a78502dcff.ms.png b/translated_images/scatter2.4d1cbc693bad20e2b563888747eb6bdf65b73ce449d903f7cd4068a78502dcff.ms.png new file mode 100644 index 00000000..e1fe203e Binary files /dev/null and b/translated_images/scatter2.4d1cbc693bad20e2b563888747eb6bdf65b73ce449d903f7cd4068a78502dcff.ms.png differ diff --git a/translated_images/scatter2.4d1cbc693bad20e2b563888747eb6bdf65b73ce449d903f7cd4068a78502dcff.vi.png b/translated_images/scatter2.4d1cbc693bad20e2b563888747eb6bdf65b73ce449d903f7cd4068a78502dcff.vi.png new file mode 100644 index 00000000..856779b4 Binary files /dev/null and b/translated_images/scatter2.4d1cbc693bad20e2b563888747eb6bdf65b73ce449d903f7cd4068a78502dcff.vi.png differ diff --git a/translated_images/scatter2.c0041a58621ca702990b001aa0b20cd68c1e1814417139af8a7211a2bed51c5f.id.png b/translated_images/scatter2.c0041a58621ca702990b001aa0b20cd68c1e1814417139af8a7211a2bed51c5f.id.png new file mode 100644 index 00000000..cc4afbf1 Binary files /dev/null and b/translated_images/scatter2.c0041a58621ca702990b001aa0b20cd68c1e1814417139af8a7211a2bed51c5f.id.png differ diff --git a/translated_images/scatter2.c0041a58621ca702990b001aa0b20cd68c1e1814417139af8a7211a2bed51c5f.ms.png b/translated_images/scatter2.c0041a58621ca702990b001aa0b20cd68c1e1814417139af8a7211a2bed51c5f.ms.png new file mode 100644 index 00000000..dbc8eb5a Binary files /dev/null and b/translated_images/scatter2.c0041a58621ca702990b001aa0b20cd68c1e1814417139af8a7211a2bed51c5f.ms.png differ diff --git a/translated_images/scatter2.c0041a58621ca702990b001aa0b20cd68c1e1814417139af8a7211a2bed51c5f.vi.png b/translated_images/scatter2.c0041a58621ca702990b001aa0b20cd68c1e1814417139af8a7211a2bed51c5f.vi.png new file mode 100644 index 00000000..3d6186f9 Binary files /dev/null and b/translated_images/scatter2.c0041a58621ca702990b001aa0b20cd68c1e1814417139af8a7211a2bed51c5f.vi.png differ diff --git a/translated_images/scatter3.3c160a3d1dcb36b37900ebb4cf97f34036f28ae2b7b8e6062766c7c1dfc00853.id.png b/translated_images/scatter3.3c160a3d1dcb36b37900ebb4cf97f34036f28ae2b7b8e6062766c7c1dfc00853.id.png new file mode 100644 index 00000000..d677de1c Binary files /dev/null and b/translated_images/scatter3.3c160a3d1dcb36b37900ebb4cf97f34036f28ae2b7b8e6062766c7c1dfc00853.id.png differ diff --git a/translated_images/scatter3.3c160a3d1dcb36b37900ebb4cf97f34036f28ae2b7b8e6062766c7c1dfc00853.ms.png b/translated_images/scatter3.3c160a3d1dcb36b37900ebb4cf97f34036f28ae2b7b8e6062766c7c1dfc00853.ms.png new file mode 100644 index 00000000..f0f6ba90 Binary files /dev/null and b/translated_images/scatter3.3c160a3d1dcb36b37900ebb4cf97f34036f28ae2b7b8e6062766c7c1dfc00853.ms.png differ diff --git a/translated_images/scatter3.3c160a3d1dcb36b37900ebb4cf97f34036f28ae2b7b8e6062766c7c1dfc00853.vi.png b/translated_images/scatter3.3c160a3d1dcb36b37900ebb4cf97f34036f28ae2b7b8e6062766c7c1dfc00853.vi.png new file mode 100644 index 00000000..eb86e1f3 Binary files /dev/null and b/translated_images/scatter3.3c160a3d1dcb36b37900ebb4cf97f34036f28ae2b7b8e6062766c7c1dfc00853.vi.png differ diff --git a/translated_images/scatter3.722d21e6f20b3ea2e18339bb9b10d75906126715eb7d5fdc88fe74dcb6d7066a.id.png b/translated_images/scatter3.722d21e6f20b3ea2e18339bb9b10d75906126715eb7d5fdc88fe74dcb6d7066a.id.png new file mode 100644 index 00000000..a29a2f30 Binary files /dev/null and b/translated_images/scatter3.722d21e6f20b3ea2e18339bb9b10d75906126715eb7d5fdc88fe74dcb6d7066a.id.png differ diff --git a/translated_images/scatter3.722d21e6f20b3ea2e18339bb9b10d75906126715eb7d5fdc88fe74dcb6d7066a.ms.png b/translated_images/scatter3.722d21e6f20b3ea2e18339bb9b10d75906126715eb7d5fdc88fe74dcb6d7066a.ms.png new file mode 100644 index 00000000..d09a3116 Binary files /dev/null and b/translated_images/scatter3.722d21e6f20b3ea2e18339bb9b10d75906126715eb7d5fdc88fe74dcb6d7066a.ms.png differ diff --git a/translated_images/scatter3.722d21e6f20b3ea2e18339bb9b10d75906126715eb7d5fdc88fe74dcb6d7066a.vi.png b/translated_images/scatter3.722d21e6f20b3ea2e18339bb9b10d75906126715eb7d5fdc88fe74dcb6d7066a.vi.png new file mode 100644 index 00000000..c3713226 Binary files /dev/null and b/translated_images/scatter3.722d21e6f20b3ea2e18339bb9b10d75906126715eb7d5fdc88fe74dcb6d7066a.vi.png differ diff --git a/translated_images/scatterplot-wingspan-02.1c33790094ce36a75f5fb45b25ed2cf27f0356ea609e43c11e97a2cedd7011a4.id.png b/translated_images/scatterplot-wingspan-02.1c33790094ce36a75f5fb45b25ed2cf27f0356ea609e43c11e97a2cedd7011a4.id.png new file mode 100644 index 00000000..c57ff93d Binary files /dev/null and b/translated_images/scatterplot-wingspan-02.1c33790094ce36a75f5fb45b25ed2cf27f0356ea609e43c11e97a2cedd7011a4.id.png differ diff --git a/translated_images/scatterplot-wingspan-02.1c33790094ce36a75f5fb45b25ed2cf27f0356ea609e43c11e97a2cedd7011a4.ms.png b/translated_images/scatterplot-wingspan-02.1c33790094ce36a75f5fb45b25ed2cf27f0356ea609e43c11e97a2cedd7011a4.ms.png new file mode 100644 index 00000000..4ea2aca2 Binary files /dev/null and b/translated_images/scatterplot-wingspan-02.1c33790094ce36a75f5fb45b25ed2cf27f0356ea609e43c11e97a2cedd7011a4.ms.png differ diff --git a/translated_images/scatterplot-wingspan-02.1c33790094ce36a75f5fb45b25ed2cf27f0356ea609e43c11e97a2cedd7011a4.vi.png b/translated_images/scatterplot-wingspan-02.1c33790094ce36a75f5fb45b25ed2cf27f0356ea609e43c11e97a2cedd7011a4.vi.png new file mode 100644 index 00000000..6caf92a4 Binary files /dev/null and b/translated_images/scatterplot-wingspan-02.1c33790094ce36a75f5fb45b25ed2cf27f0356ea609e43c11e97a2cedd7011a4.vi.png differ diff --git a/translated_images/scatterplot-wingspan.bdab448702939bb32a0d3522a9fcd8aa36d5f428aca5e8655a677eb6d0597111.id.png b/translated_images/scatterplot-wingspan.bdab448702939bb32a0d3522a9fcd8aa36d5f428aca5e8655a677eb6d0597111.id.png new file mode 100644 index 00000000..420674b6 Binary files /dev/null and b/translated_images/scatterplot-wingspan.bdab448702939bb32a0d3522a9fcd8aa36d5f428aca5e8655a677eb6d0597111.id.png differ diff --git a/translated_images/scatterplot-wingspan.bdab448702939bb32a0d3522a9fcd8aa36d5f428aca5e8655a677eb6d0597111.ms.png b/translated_images/scatterplot-wingspan.bdab448702939bb32a0d3522a9fcd8aa36d5f428aca5e8655a677eb6d0597111.ms.png new file mode 100644 index 00000000..420674b6 Binary files /dev/null and b/translated_images/scatterplot-wingspan.bdab448702939bb32a0d3522a9fcd8aa36d5f428aca5e8655a677eb6d0597111.ms.png differ diff --git a/translated_images/scatterplot-wingspan.bdab448702939bb32a0d3522a9fcd8aa36d5f428aca5e8655a677eb6d0597111.vi.png b/translated_images/scatterplot-wingspan.bdab448702939bb32a0d3522a9fcd8aa36d5f428aca5e8655a677eb6d0597111.vi.png new file mode 100644 index 00000000..420674b6 Binary files /dev/null and b/translated_images/scatterplot-wingspan.bdab448702939bb32a0d3522a9fcd8aa36d5f428aca5e8655a677eb6d0597111.vi.png differ diff --git a/translated_images/stacked-bar-chart.0c92264e89da7b391a7490224d1e7059a020e8b74dcd354414aeac78871c02f1.id.png b/translated_images/stacked-bar-chart.0c92264e89da7b391a7490224d1e7059a020e8b74dcd354414aeac78871c02f1.id.png new file mode 100644 index 00000000..11855939 Binary files /dev/null and b/translated_images/stacked-bar-chart.0c92264e89da7b391a7490224d1e7059a020e8b74dcd354414aeac78871c02f1.id.png differ diff --git a/translated_images/stacked-bar-chart.0c92264e89da7b391a7490224d1e7059a020e8b74dcd354414aeac78871c02f1.ms.png b/translated_images/stacked-bar-chart.0c92264e89da7b391a7490224d1e7059a020e8b74dcd354414aeac78871c02f1.ms.png new file mode 100644 index 00000000..ae4ef9e0 Binary files /dev/null and b/translated_images/stacked-bar-chart.0c92264e89da7b391a7490224d1e7059a020e8b74dcd354414aeac78871c02f1.ms.png differ diff --git a/translated_images/stacked-bar-chart.0c92264e89da7b391a7490224d1e7059a020e8b74dcd354414aeac78871c02f1.vi.png b/translated_images/stacked-bar-chart.0c92264e89da7b391a7490224d1e7059a020e8b74dcd354414aeac78871c02f1.vi.png new file mode 100644 index 00000000..7942ffee Binary files /dev/null and b/translated_images/stacked-bar-chart.0c92264e89da7b391a7490224d1e7059a020e8b74dcd354414aeac78871c02f1.vi.png differ diff --git a/translated_images/superimposed-02.f03058536baeb2ed7864f01102538464d4c2fd7ade881ddd7d5ba74dc5d2fdae.id.png b/translated_images/superimposed-02.f03058536baeb2ed7864f01102538464d4c2fd7ade881ddd7d5ba74dc5d2fdae.id.png new file mode 100644 index 00000000..83350deb Binary files /dev/null and b/translated_images/superimposed-02.f03058536baeb2ed7864f01102538464d4c2fd7ade881ddd7d5ba74dc5d2fdae.id.png differ diff --git a/translated_images/superimposed-02.f03058536baeb2ed7864f01102538464d4c2fd7ade881ddd7d5ba74dc5d2fdae.ms.png b/translated_images/superimposed-02.f03058536baeb2ed7864f01102538464d4c2fd7ade881ddd7d5ba74dc5d2fdae.ms.png new file mode 100644 index 00000000..a2675a82 Binary files /dev/null and b/translated_images/superimposed-02.f03058536baeb2ed7864f01102538464d4c2fd7ade881ddd7d5ba74dc5d2fdae.ms.png differ diff --git a/translated_images/superimposed-02.f03058536baeb2ed7864f01102538464d4c2fd7ade881ddd7d5ba74dc5d2fdae.vi.png b/translated_images/superimposed-02.f03058536baeb2ed7864f01102538464d4c2fd7ade881ddd7d5ba74dc5d2fdae.vi.png new file mode 100644 index 00000000..194bd82f Binary files /dev/null and b/translated_images/superimposed-02.f03058536baeb2ed7864f01102538464d4c2fd7ade881ddd7d5ba74dc5d2fdae.vi.png differ diff --git a/translated_images/superimposed-values.5363f0705a1da4167625a373a1064331ea3cb7a06a297297d0734fcc9b3819a0.id.png b/translated_images/superimposed-values.5363f0705a1da4167625a373a1064331ea3cb7a06a297297d0734fcc9b3819a0.id.png new file mode 100644 index 00000000..8923c7c5 Binary files /dev/null and b/translated_images/superimposed-values.5363f0705a1da4167625a373a1064331ea3cb7a06a297297d0734fcc9b3819a0.id.png differ diff --git a/translated_images/superimposed-values.5363f0705a1da4167625a373a1064331ea3cb7a06a297297d0734fcc9b3819a0.ms.png b/translated_images/superimposed-values.5363f0705a1da4167625a373a1064331ea3cb7a06a297297d0734fcc9b3819a0.ms.png new file mode 100644 index 00000000..17d380ef Binary files /dev/null and b/translated_images/superimposed-values.5363f0705a1da4167625a373a1064331ea3cb7a06a297297d0734fcc9b3819a0.ms.png differ diff --git a/translated_images/superimposed-values.5363f0705a1da4167625a373a1064331ea3cb7a06a297297d0734fcc9b3819a0.vi.png b/translated_images/superimposed-values.5363f0705a1da4167625a373a1064331ea3cb7a06a297297d0734fcc9b3819a0.vi.png new file mode 100644 index 00000000..eb1a5080 Binary files /dev/null and b/translated_images/superimposed-values.5363f0705a1da4167625a373a1064331ea3cb7a06a297297d0734fcc9b3819a0.vi.png differ diff --git a/translated_images/superimposed.8b5bd0e8825d9c5c06e2b15d61e3f7ebdd36678f2bdfa1e74c57e24e4486885a.id.png b/translated_images/superimposed.8b5bd0e8825d9c5c06e2b15d61e3f7ebdd36678f2bdfa1e74c57e24e4486885a.id.png new file mode 100644 index 00000000..462346a6 Binary files /dev/null and b/translated_images/superimposed.8b5bd0e8825d9c5c06e2b15d61e3f7ebdd36678f2bdfa1e74c57e24e4486885a.id.png differ diff --git a/translated_images/superimposed.8b5bd0e8825d9c5c06e2b15d61e3f7ebdd36678f2bdfa1e74c57e24e4486885a.ms.png b/translated_images/superimposed.8b5bd0e8825d9c5c06e2b15d61e3f7ebdd36678f2bdfa1e74c57e24e4486885a.ms.png new file mode 100644 index 00000000..462346a6 Binary files /dev/null and b/translated_images/superimposed.8b5bd0e8825d9c5c06e2b15d61e3f7ebdd36678f2bdfa1e74c57e24e4486885a.ms.png differ diff --git a/translated_images/superimposed.8b5bd0e8825d9c5c06e2b15d61e3f7ebdd36678f2bdfa1e74c57e24e4486885a.vi.png b/translated_images/superimposed.8b5bd0e8825d9c5c06e2b15d61e3f7ebdd36678f2bdfa1e74c57e24e4486885a.vi.png new file mode 100644 index 00000000..462346a6 Binary files /dev/null and b/translated_images/superimposed.8b5bd0e8825d9c5c06e2b15d61e3f7ebdd36678f2bdfa1e74c57e24e4486885a.vi.png differ diff --git a/translated_images/tdsp-lifecycle2.e19029d598e2e73d5ef8a4b98837d688ec6044fe332c905d4dbb69eb6d5c1d96.id.png b/translated_images/tdsp-lifecycle2.e19029d598e2e73d5ef8a4b98837d688ec6044fe332c905d4dbb69eb6d5c1d96.id.png new file mode 100644 index 00000000..38b7178d Binary files /dev/null and b/translated_images/tdsp-lifecycle2.e19029d598e2e73d5ef8a4b98837d688ec6044fe332c905d4dbb69eb6d5c1d96.id.png differ diff --git a/translated_images/tdsp-lifecycle2.e19029d598e2e73d5ef8a4b98837d688ec6044fe332c905d4dbb69eb6d5c1d96.ms.png b/translated_images/tdsp-lifecycle2.e19029d598e2e73d5ef8a4b98837d688ec6044fe332c905d4dbb69eb6d5c1d96.ms.png new file mode 100644 index 00000000..88912652 Binary files /dev/null and b/translated_images/tdsp-lifecycle2.e19029d598e2e73d5ef8a4b98837d688ec6044fe332c905d4dbb69eb6d5c1d96.ms.png differ diff --git a/translated_images/tdsp-lifecycle2.e19029d598e2e73d5ef8a4b98837d688ec6044fe332c905d4dbb69eb6d5c1d96.vi.png b/translated_images/tdsp-lifecycle2.e19029d598e2e73d5ef8a4b98837d688ec6044fe332c905d4dbb69eb6d5c1d96.vi.png new file mode 100644 index 00000000..7893c88e Binary files /dev/null and b/translated_images/tdsp-lifecycle2.e19029d598e2e73d5ef8a4b98837d688ec6044fe332c905d4dbb69eb6d5c1d96.vi.png differ diff --git a/translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.id.png b/translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.id.png new file mode 100644 index 00000000..f226e17c Binary files /dev/null and b/translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.id.png differ diff --git a/translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.ms.png b/translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.ms.png new file mode 100644 index 00000000..89e23ce8 Binary files /dev/null and b/translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.ms.png differ diff --git a/translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.vi.png b/translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.vi.png new file mode 100644 index 00000000..cb63de54 Binary files /dev/null and b/translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.vi.png differ diff --git a/translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.id.png b/translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.id.png new file mode 100644 index 00000000..53d23e92 Binary files /dev/null and b/translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.id.png differ diff --git a/translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.ms.png b/translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.ms.png new file mode 100644 index 00000000..656c7b87 Binary files /dev/null and b/translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.ms.png differ diff --git a/translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.vi.png b/translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.vi.png new file mode 100644 index 00000000..1e4e1e00 Binary files /dev/null and b/translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.vi.png differ diff --git a/translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.id.png b/translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.id.png new file mode 100644 index 00000000..119369cb Binary files /dev/null and b/translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.id.png differ diff --git a/translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.ms.png b/translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.ms.png new file mode 100644 index 00000000..76a6a589 Binary files /dev/null and b/translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.ms.png differ diff --git a/translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.vi.png b/translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.vi.png new file mode 100644 index 00000000..f4f27ba7 Binary files /dev/null and b/translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.vi.png differ diff --git a/translated_images/tornado.2880ffc7f135f82b5e5328624799010abefd1080ae4b7ecacbdc7d792f1d8849.id.png b/translated_images/tornado.2880ffc7f135f82b5e5328624799010abefd1080ae4b7ecacbdc7d792f1d8849.id.png new file mode 100644 index 00000000..d6d626ea Binary files /dev/null and b/translated_images/tornado.2880ffc7f135f82b5e5328624799010abefd1080ae4b7ecacbdc7d792f1d8849.id.png differ diff --git a/translated_images/tornado.2880ffc7f135f82b5e5328624799010abefd1080ae4b7ecacbdc7d792f1d8849.ms.png b/translated_images/tornado.2880ffc7f135f82b5e5328624799010abefd1080ae4b7ecacbdc7d792f1d8849.ms.png new file mode 100644 index 00000000..e7126b32 Binary files /dev/null and b/translated_images/tornado.2880ffc7f135f82b5e5328624799010abefd1080ae4b7ecacbdc7d792f1d8849.ms.png differ diff --git a/translated_images/tornado.2880ffc7f135f82b5e5328624799010abefd1080ae4b7ecacbdc7d792f1d8849.vi.png b/translated_images/tornado.2880ffc7f135f82b5e5328624799010abefd1080ae4b7ecacbdc7d792f1d8849.vi.png new file mode 100644 index 00000000..2239aeee Binary files /dev/null and b/translated_images/tornado.2880ffc7f135f82b5e5328624799010abefd1080ae4b7ecacbdc7d792f1d8849.vi.png differ diff --git a/translated_images/tornado.9f42168791208f970d6faefc11d1226d7ca89518013b14aa66b1c9edcd7678d2.id.png b/translated_images/tornado.9f42168791208f970d6faefc11d1226d7ca89518013b14aa66b1c9edcd7678d2.id.png new file mode 100644 index 00000000..f78cd71c Binary files /dev/null and b/translated_images/tornado.9f42168791208f970d6faefc11d1226d7ca89518013b14aa66b1c9edcd7678d2.id.png differ diff --git a/translated_images/tornado.9f42168791208f970d6faefc11d1226d7ca89518013b14aa66b1c9edcd7678d2.ms.png b/translated_images/tornado.9f42168791208f970d6faefc11d1226d7ca89518013b14aa66b1c9edcd7678d2.ms.png new file mode 100644 index 00000000..0fcfc34e Binary files /dev/null and b/translated_images/tornado.9f42168791208f970d6faefc11d1226d7ca89518013b14aa66b1c9edcd7678d2.ms.png differ diff --git a/translated_images/tornado.9f42168791208f970d6faefc11d1226d7ca89518013b14aa66b1c9edcd7678d2.vi.png b/translated_images/tornado.9f42168791208f970d6faefc11d1226d7ca89518013b14aa66b1c9edcd7678d2.vi.png new file mode 100644 index 00000000..53946c17 Binary files /dev/null and b/translated_images/tornado.9f42168791208f970d6faefc11d1226d7ca89518013b14aa66b1c9edcd7678d2.vi.png differ diff --git a/translated_images/video-def-ds.6623ee2392ef1abf6d7faf3fad10a4163642811749da75f44e35a5bb121de15c.id.png b/translated_images/video-def-ds.6623ee2392ef1abf6d7faf3fad10a4163642811749da75f44e35a5bb121de15c.id.png new file mode 100644 index 00000000..b9dc1455 Binary files /dev/null and b/translated_images/video-def-ds.6623ee2392ef1abf6d7faf3fad10a4163642811749da75f44e35a5bb121de15c.id.png differ diff --git a/translated_images/video-def-ds.6623ee2392ef1abf6d7faf3fad10a4163642811749da75f44e35a5bb121de15c.ms.png b/translated_images/video-def-ds.6623ee2392ef1abf6d7faf3fad10a4163642811749da75f44e35a5bb121de15c.ms.png new file mode 100644 index 00000000..f588e13f Binary files /dev/null and b/translated_images/video-def-ds.6623ee2392ef1abf6d7faf3fad10a4163642811749da75f44e35a5bb121de15c.ms.png differ diff --git a/translated_images/video-def-ds.6623ee2392ef1abf6d7faf3fad10a4163642811749da75f44e35a5bb121de15c.vi.png b/translated_images/video-def-ds.6623ee2392ef1abf6d7faf3fad10a4163642811749da75f44e35a5bb121de15c.vi.png new file mode 100644 index 00000000..7f54ed96 Binary files /dev/null and b/translated_images/video-def-ds.6623ee2392ef1abf6d7faf3fad10a4163642811749da75f44e35a5bb121de15c.vi.png differ diff --git a/translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.id.png b/translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.id.png new file mode 100644 index 00000000..1e989bbf Binary files /dev/null and b/translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.id.png differ diff --git a/translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.ms.png b/translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.ms.png new file mode 100644 index 00000000..fe3f5aec Binary files /dev/null and b/translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.ms.png differ diff --git a/translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.vi.png b/translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.vi.png new file mode 100644 index 00000000..06b2d4fa Binary files /dev/null and b/translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.vi.png differ diff --git a/translated_images/video-prob-and-stats.e4282e5efa2f2543400843ed98b1057065c9600cebfc8a728e8931b5702b2ae4.id.png b/translated_images/video-prob-and-stats.e4282e5efa2f2543400843ed98b1057065c9600cebfc8a728e8931b5702b2ae4.id.png new file mode 100644 index 00000000..65de5c66 Binary files /dev/null and b/translated_images/video-prob-and-stats.e4282e5efa2f2543400843ed98b1057065c9600cebfc8a728e8931b5702b2ae4.id.png differ diff --git a/translated_images/video-prob-and-stats.e4282e5efa2f2543400843ed98b1057065c9600cebfc8a728e8931b5702b2ae4.ms.png b/translated_images/video-prob-and-stats.e4282e5efa2f2543400843ed98b1057065c9600cebfc8a728e8931b5702b2ae4.ms.png new file mode 100644 index 00000000..bb7bc4e6 Binary files /dev/null and b/translated_images/video-prob-and-stats.e4282e5efa2f2543400843ed98b1057065c9600cebfc8a728e8931b5702b2ae4.ms.png differ diff --git a/translated_images/video-prob-and-stats.e4282e5efa2f2543400843ed98b1057065c9600cebfc8a728e8931b5702b2ae4.vi.png b/translated_images/video-prob-and-stats.e4282e5efa2f2543400843ed98b1057065c9600cebfc8a728e8931b5702b2ae4.vi.png new file mode 100644 index 00000000..6e6ebb13 Binary files /dev/null and b/translated_images/video-prob-and-stats.e4282e5efa2f2543400843ed98b1057065c9600cebfc8a728e8931b5702b2ae4.vi.png differ diff --git a/translated_images/waffle.5455dbae4ccf17d53bb40ff0a657ecef7b8aa967e27a19cc96325bd81598f65e.id.png b/translated_images/waffle.5455dbae4ccf17d53bb40ff0a657ecef7b8aa967e27a19cc96325bd81598f65e.id.png new file mode 100644 index 00000000..d7889b9b Binary files /dev/null and b/translated_images/waffle.5455dbae4ccf17d53bb40ff0a657ecef7b8aa967e27a19cc96325bd81598f65e.id.png differ diff --git a/translated_images/waffle.5455dbae4ccf17d53bb40ff0a657ecef7b8aa967e27a19cc96325bd81598f65e.ms.png b/translated_images/waffle.5455dbae4ccf17d53bb40ff0a657ecef7b8aa967e27a19cc96325bd81598f65e.ms.png new file mode 100644 index 00000000..e55a9cb0 Binary files /dev/null and b/translated_images/waffle.5455dbae4ccf17d53bb40ff0a657ecef7b8aa967e27a19cc96325bd81598f65e.ms.png differ diff --git a/translated_images/waffle.5455dbae4ccf17d53bb40ff0a657ecef7b8aa967e27a19cc96325bd81598f65e.vi.png b/translated_images/waffle.5455dbae4ccf17d53bb40ff0a657ecef7b8aa967e27a19cc96325bd81598f65e.vi.png new file mode 100644 index 00000000..c6537c30 Binary files /dev/null and b/translated_images/waffle.5455dbae4ccf17d53bb40ff0a657ecef7b8aa967e27a19cc96325bd81598f65e.vi.png differ diff --git a/translated_images/waffle.aaa75c5337735a6ef32ace0ffb6506ef49e5aefe870ffd72b1bb080f4843c217.id.png b/translated_images/waffle.aaa75c5337735a6ef32ace0ffb6506ef49e5aefe870ffd72b1bb080f4843c217.id.png new file mode 100644 index 00000000..2b982dd6 Binary files /dev/null and b/translated_images/waffle.aaa75c5337735a6ef32ace0ffb6506ef49e5aefe870ffd72b1bb080f4843c217.id.png differ diff --git a/translated_images/waffle.aaa75c5337735a6ef32ace0ffb6506ef49e5aefe870ffd72b1bb080f4843c217.ms.png b/translated_images/waffle.aaa75c5337735a6ef32ace0ffb6506ef49e5aefe870ffd72b1bb080f4843c217.ms.png new file mode 100644 index 00000000..ffa813d5 Binary files /dev/null and b/translated_images/waffle.aaa75c5337735a6ef32ace0ffb6506ef49e5aefe870ffd72b1bb080f4843c217.ms.png differ diff --git a/translated_images/waffle.aaa75c5337735a6ef32ace0ffb6506ef49e5aefe870ffd72b1bb080f4843c217.vi.png b/translated_images/waffle.aaa75c5337735a6ef32ace0ffb6506ef49e5aefe870ffd72b1bb080f4843c217.vi.png new file mode 100644 index 00000000..faef2b71 Binary files /dev/null and b/translated_images/waffle.aaa75c5337735a6ef32ace0ffb6506ef49e5aefe870ffd72b1bb080f4843c217.vi.png differ diff --git a/translated_images/weight-boxplot.1dbab1c03af26f8a008fff4e17680082c8ab147d6df646cbac440bbf8f5b9c42.id.png b/translated_images/weight-boxplot.1dbab1c03af26f8a008fff4e17680082c8ab147d6df646cbac440bbf8f5b9c42.id.png new file mode 100644 index 00000000..c3128ec7 Binary files /dev/null and b/translated_images/weight-boxplot.1dbab1c03af26f8a008fff4e17680082c8ab147d6df646cbac440bbf8f5b9c42.id.png differ diff --git a/translated_images/weight-boxplot.1dbab1c03af26f8a008fff4e17680082c8ab147d6df646cbac440bbf8f5b9c42.ms.png b/translated_images/weight-boxplot.1dbab1c03af26f8a008fff4e17680082c8ab147d6df646cbac440bbf8f5b9c42.ms.png new file mode 100644 index 00000000..c3128ec7 Binary files /dev/null and b/translated_images/weight-boxplot.1dbab1c03af26f8a008fff4e17680082c8ab147d6df646cbac440bbf8f5b9c42.ms.png differ diff --git a/translated_images/weight-boxplot.1dbab1c03af26f8a008fff4e17680082c8ab147d6df646cbac440bbf8f5b9c42.vi.png b/translated_images/weight-boxplot.1dbab1c03af26f8a008fff4e17680082c8ab147d6df646cbac440bbf8f5b9c42.vi.png new file mode 100644 index 00000000..c3128ec7 Binary files /dev/null and b/translated_images/weight-boxplot.1dbab1c03af26f8a008fff4e17680082c8ab147d6df646cbac440bbf8f5b9c42.vi.png differ diff --git a/translated_images/weight-height-relationship.3f06bde4ca2aba9974182c4ef037ed602acd0fbbbbe2ca91cefd838a9e66bcf9.id.png b/translated_images/weight-height-relationship.3f06bde4ca2aba9974182c4ef037ed602acd0fbbbbe2ca91cefd838a9e66bcf9.id.png new file mode 100644 index 00000000..46f03801 Binary files /dev/null and b/translated_images/weight-height-relationship.3f06bde4ca2aba9974182c4ef037ed602acd0fbbbbe2ca91cefd838a9e66bcf9.id.png differ diff --git a/translated_images/weight-height-relationship.3f06bde4ca2aba9974182c4ef037ed602acd0fbbbbe2ca91cefd838a9e66bcf9.ms.png b/translated_images/weight-height-relationship.3f06bde4ca2aba9974182c4ef037ed602acd0fbbbbe2ca91cefd838a9e66bcf9.ms.png new file mode 100644 index 00000000..46f03801 Binary files /dev/null and b/translated_images/weight-height-relationship.3f06bde4ca2aba9974182c4ef037ed602acd0fbbbbe2ca91cefd838a9e66bcf9.ms.png differ diff --git a/translated_images/weight-height-relationship.3f06bde4ca2aba9974182c4ef037ed602acd0fbbbbe2ca91cefd838a9e66bcf9.vi.png b/translated_images/weight-height-relationship.3f06bde4ca2aba9974182c4ef037ed602acd0fbbbbe2ca91cefd838a9e66bcf9.vi.png new file mode 100644 index 00000000..8da0af5f Binary files /dev/null and b/translated_images/weight-height-relationship.3f06bde4ca2aba9974182c4ef037ed602acd0fbbbbe2ca91cefd838a9e66bcf9.vi.png differ diff --git a/translated_images/weight-histogram.bfd00caf7fc30b145b21e862dba7def41c75635d5280de25d840dd7f0b00545e.id.png b/translated_images/weight-histogram.bfd00caf7fc30b145b21e862dba7def41c75635d5280de25d840dd7f0b00545e.id.png new file mode 100644 index 00000000..e0ce391d Binary files /dev/null and b/translated_images/weight-histogram.bfd00caf7fc30b145b21e862dba7def41c75635d5280de25d840dd7f0b00545e.id.png differ diff --git a/translated_images/weight-histogram.bfd00caf7fc30b145b21e862dba7def41c75635d5280de25d840dd7f0b00545e.ms.png b/translated_images/weight-histogram.bfd00caf7fc30b145b21e862dba7def41c75635d5280de25d840dd7f0b00545e.ms.png new file mode 100644 index 00000000..065b2246 Binary files /dev/null and b/translated_images/weight-histogram.bfd00caf7fc30b145b21e862dba7def41c75635d5280de25d840dd7f0b00545e.ms.png differ diff --git a/translated_images/weight-histogram.bfd00caf7fc30b145b21e862dba7def41c75635d5280de25d840dd7f0b00545e.vi.png b/translated_images/weight-histogram.bfd00caf7fc30b145b21e862dba7def41c75635d5280de25d840dd7f0b00545e.vi.png new file mode 100644 index 00000000..f6a57f8a Binary files /dev/null and b/translated_images/weight-histogram.bfd00caf7fc30b145b21e862dba7def41c75635d5280de25d840dd7f0b00545e.vi.png differ diff --git a/translated_images/wingspan-conservation-collation.4024e9aa6910866aa82f0c6cb6a6b4b925bd10079e6b0ef8f92eefa5a6792f76.id.png b/translated_images/wingspan-conservation-collation.4024e9aa6910866aa82f0c6cb6a6b4b925bd10079e6b0ef8f92eefa5a6792f76.id.png new file mode 100644 index 00000000..1b8ffa97 Binary files /dev/null and b/translated_images/wingspan-conservation-collation.4024e9aa6910866aa82f0c6cb6a6b4b925bd10079e6b0ef8f92eefa5a6792f76.id.png differ diff --git a/translated_images/wingspan-conservation-collation.4024e9aa6910866aa82f0c6cb6a6b4b925bd10079e6b0ef8f92eefa5a6792f76.ms.png b/translated_images/wingspan-conservation-collation.4024e9aa6910866aa82f0c6cb6a6b4b925bd10079e6b0ef8f92eefa5a6792f76.ms.png new file mode 100644 index 00000000..b43a355f Binary files /dev/null and b/translated_images/wingspan-conservation-collation.4024e9aa6910866aa82f0c6cb6a6b4b925bd10079e6b0ef8f92eefa5a6792f76.ms.png differ diff --git a/translated_images/wingspan-conservation-collation.4024e9aa6910866aa82f0c6cb6a6b4b925bd10079e6b0ef8f92eefa5a6792f76.vi.png b/translated_images/wingspan-conservation-collation.4024e9aa6910866aa82f0c6cb6a6b4b925bd10079e6b0ef8f92eefa5a6792f76.vi.png new file mode 100644 index 00000000..80485cd1 Binary files /dev/null and b/translated_images/wingspan-conservation-collation.4024e9aa6910866aa82f0c6cb6a6b4b925bd10079e6b0ef8f92eefa5a6792f76.vi.png differ diff --git a/translated_images/workspace-1.ac8694d60b073ed1ae8333d71244dc8a9b3e439d54593724f98f1beefdd27b08.id.png b/translated_images/workspace-1.ac8694d60b073ed1ae8333d71244dc8a9b3e439d54593724f98f1beefdd27b08.id.png new file mode 100644 index 00000000..e879fb83 Binary files /dev/null and b/translated_images/workspace-1.ac8694d60b073ed1ae8333d71244dc8a9b3e439d54593724f98f1beefdd27b08.id.png differ diff --git a/translated_images/workspace-1.ac8694d60b073ed1ae8333d71244dc8a9b3e439d54593724f98f1beefdd27b08.ms.png b/translated_images/workspace-1.ac8694d60b073ed1ae8333d71244dc8a9b3e439d54593724f98f1beefdd27b08.ms.png new file mode 100644 index 00000000..39cfb1a2 Binary files /dev/null and b/translated_images/workspace-1.ac8694d60b073ed1ae8333d71244dc8a9b3e439d54593724f98f1beefdd27b08.ms.png differ diff --git a/translated_images/workspace-1.ac8694d60b073ed1ae8333d71244dc8a9b3e439d54593724f98f1beefdd27b08.vi.png b/translated_images/workspace-1.ac8694d60b073ed1ae8333d71244dc8a9b3e439d54593724f98f1beefdd27b08.vi.png new file mode 100644 index 00000000..ceef5058 Binary files /dev/null and b/translated_images/workspace-1.ac8694d60b073ed1ae8333d71244dc8a9b3e439d54593724f98f1beefdd27b08.vi.png differ diff --git a/translated_images/workspace-2.ae7c486db8796147075e4a56566aa819827dd6c4c8d18d64590317c3be625f17.id.png b/translated_images/workspace-2.ae7c486db8796147075e4a56566aa819827dd6c4c8d18d64590317c3be625f17.id.png new file mode 100644 index 00000000..3801c4b6 Binary files /dev/null and b/translated_images/workspace-2.ae7c486db8796147075e4a56566aa819827dd6c4c8d18d64590317c3be625f17.id.png differ diff --git a/translated_images/workspace-2.ae7c486db8796147075e4a56566aa819827dd6c4c8d18d64590317c3be625f17.ms.png b/translated_images/workspace-2.ae7c486db8796147075e4a56566aa819827dd6c4c8d18d64590317c3be625f17.ms.png new file mode 100644 index 00000000..9605304c Binary files /dev/null and b/translated_images/workspace-2.ae7c486db8796147075e4a56566aa819827dd6c4c8d18d64590317c3be625f17.ms.png differ diff --git a/translated_images/workspace-2.ae7c486db8796147075e4a56566aa819827dd6c4c8d18d64590317c3be625f17.vi.png b/translated_images/workspace-2.ae7c486db8796147075e4a56566aa819827dd6c4c8d18d64590317c3be625f17.vi.png new file mode 100644 index 00000000..a47a909e Binary files /dev/null and b/translated_images/workspace-2.ae7c486db8796147075e4a56566aa819827dd6c4c8d18d64590317c3be625f17.vi.png differ diff --git a/translated_images/workspace-3.398ca4a5858132cce584db9df10c5a011cd9075eb182e647a77d5cac01771eea.id.png b/translated_images/workspace-3.398ca4a5858132cce584db9df10c5a011cd9075eb182e647a77d5cac01771eea.id.png new file mode 100644 index 00000000..b5a2ad89 Binary files /dev/null and b/translated_images/workspace-3.398ca4a5858132cce584db9df10c5a011cd9075eb182e647a77d5cac01771eea.id.png differ diff --git a/translated_images/workspace-3.398ca4a5858132cce584db9df10c5a011cd9075eb182e647a77d5cac01771eea.ms.png b/translated_images/workspace-3.398ca4a5858132cce584db9df10c5a011cd9075eb182e647a77d5cac01771eea.ms.png new file mode 100644 index 00000000..cbd00ed3 Binary files /dev/null and b/translated_images/workspace-3.398ca4a5858132cce584db9df10c5a011cd9075eb182e647a77d5cac01771eea.ms.png differ diff --git a/translated_images/workspace-3.398ca4a5858132cce584db9df10c5a011cd9075eb182e647a77d5cac01771eea.vi.png b/translated_images/workspace-3.398ca4a5858132cce584db9df10c5a011cd9075eb182e647a77d5cac01771eea.vi.png new file mode 100644 index 00000000..fc44298a Binary files /dev/null and b/translated_images/workspace-3.398ca4a5858132cce584db9df10c5a011cd9075eb182e647a77d5cac01771eea.vi.png differ diff --git a/translated_images/workspace-4.bac87f6599c4df63e624fc2608990f965887bee551d9dedc71c687b43b986b6a.id.png b/translated_images/workspace-4.bac87f6599c4df63e624fc2608990f965887bee551d9dedc71c687b43b986b6a.id.png new file mode 100644 index 00000000..9d435383 Binary files /dev/null and b/translated_images/workspace-4.bac87f6599c4df63e624fc2608990f965887bee551d9dedc71c687b43b986b6a.id.png differ diff --git a/translated_images/workspace-4.bac87f6599c4df63e624fc2608990f965887bee551d9dedc71c687b43b986b6a.ms.png b/translated_images/workspace-4.bac87f6599c4df63e624fc2608990f965887bee551d9dedc71c687b43b986b6a.ms.png new file mode 100644 index 00000000..3be1a74e Binary files /dev/null and b/translated_images/workspace-4.bac87f6599c4df63e624fc2608990f965887bee551d9dedc71c687b43b986b6a.ms.png differ diff --git a/translated_images/workspace-4.bac87f6599c4df63e624fc2608990f965887bee551d9dedc71c687b43b986b6a.vi.png b/translated_images/workspace-4.bac87f6599c4df63e624fc2608990f965887bee551d9dedc71c687b43b986b6a.vi.png new file mode 100644 index 00000000..cd61e576 Binary files /dev/null and b/translated_images/workspace-4.bac87f6599c4df63e624fc2608990f965887bee551d9dedc71c687b43b986b6a.vi.png differ diff --git a/translated_images/workspace-5.a6eb17e0a5e6420018b08bdaf3755ce977f96f1df3ea363d2476a9dce7e15adb.id.png b/translated_images/workspace-5.a6eb17e0a5e6420018b08bdaf3755ce977f96f1df3ea363d2476a9dce7e15adb.id.png new file mode 100644 index 00000000..8994f76c Binary files /dev/null and b/translated_images/workspace-5.a6eb17e0a5e6420018b08bdaf3755ce977f96f1df3ea363d2476a9dce7e15adb.id.png differ diff --git a/translated_images/workspace-5.a6eb17e0a5e6420018b08bdaf3755ce977f96f1df3ea363d2476a9dce7e15adb.ms.png b/translated_images/workspace-5.a6eb17e0a5e6420018b08bdaf3755ce977f96f1df3ea363d2476a9dce7e15adb.ms.png new file mode 100644 index 00000000..53495157 Binary files /dev/null and b/translated_images/workspace-5.a6eb17e0a5e6420018b08bdaf3755ce977f96f1df3ea363d2476a9dce7e15adb.ms.png differ diff --git a/translated_images/workspace-5.a6eb17e0a5e6420018b08bdaf3755ce977f96f1df3ea363d2476a9dce7e15adb.vi.png b/translated_images/workspace-5.a6eb17e0a5e6420018b08bdaf3755ce977f96f1df3ea363d2476a9dce7e15adb.vi.png new file mode 100644 index 00000000..b5abaee6 Binary files /dev/null and b/translated_images/workspace-5.a6eb17e0a5e6420018b08bdaf3755ce977f96f1df3ea363d2476a9dce7e15adb.vi.png differ diff --git a/translated_images/workspace-6.8dd81fe841797ee17f8f73916769576260b16c4e17e850d277a49db35fd74a15.id.png b/translated_images/workspace-6.8dd81fe841797ee17f8f73916769576260b16c4e17e850d277a49db35fd74a15.id.png new file mode 100644 index 00000000..c36420d8 Binary files /dev/null and b/translated_images/workspace-6.8dd81fe841797ee17f8f73916769576260b16c4e17e850d277a49db35fd74a15.id.png differ diff --git a/translated_images/workspace-6.8dd81fe841797ee17f8f73916769576260b16c4e17e850d277a49db35fd74a15.ms.png b/translated_images/workspace-6.8dd81fe841797ee17f8f73916769576260b16c4e17e850d277a49db35fd74a15.ms.png new file mode 100644 index 00000000..2b441649 Binary files /dev/null and b/translated_images/workspace-6.8dd81fe841797ee17f8f73916769576260b16c4e17e850d277a49db35fd74a15.ms.png differ diff --git a/translated_images/workspace-6.8dd81fe841797ee17f8f73916769576260b16c4e17e850d277a49db35fd74a15.vi.png b/translated_images/workspace-6.8dd81fe841797ee17f8f73916769576260b16c4e17e850d277a49db35fd74a15.vi.png new file mode 100644 index 00000000..d3d3134a Binary files /dev/null and b/translated_images/workspace-6.8dd81fe841797ee17f8f73916769576260b16c4e17e850d277a49db35fd74a15.vi.png differ diff --git a/translations/id/1-Introduction/01-defining-data-science/README.md b/translations/id/1-Introduction/01-defining-data-science/README.md new file mode 100644 index 00000000..f6ffdece --- /dev/null +++ b/translations/id/1-Introduction/01-defining-data-science/README.md @@ -0,0 +1,124 @@ + +# Mendefinisikan Ilmu Data + +| ![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/01-Definitions.png) | +| :----------------------------------------------------------------------------------------------------: | +| Mendefinisikan Ilmu Data - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +--- + +[![Video Mendefinisikan Ilmu Data](../../../../translated_images/video-def-ds.6623ee2392ef1abf6d7faf3fad10a4163642811749da75f44e35a5bb121de15c.id.png)](https://youtu.be/beZ7Mb_oz9I) + +## [Kuis Pra-Kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/0) + +## Apa itu Data? +Dalam kehidupan sehari-hari, kita selalu dikelilingi oleh data. Teks yang sedang Anda baca sekarang adalah data. Daftar nomor telepon teman-teman Anda di ponsel adalah data, begitu juga dengan waktu saat ini yang ditampilkan di jam tangan Anda. Sebagai manusia, kita secara alami beroperasi dengan data, seperti menghitung uang yang kita miliki atau menulis surat kepada teman. + +Namun, data menjadi jauh lebih penting dengan adanya komputer. Peran utama komputer adalah melakukan perhitungan, tetapi mereka memerlukan data untuk diolah. Oleh karena itu, kita perlu memahami bagaimana komputer menyimpan dan memproses data. + +Dengan munculnya Internet, peran komputer sebagai perangkat pengolah data semakin meningkat. Jika dipikirkan, kita sekarang lebih sering menggunakan komputer untuk memproses dan berkomunikasi data daripada untuk perhitungan sebenarnya. Ketika kita menulis email kepada teman atau mencari informasi di Internet, kita pada dasarnya sedang menciptakan, menyimpan, mengirimkan, dan memanipulasi data. +> Bisakah Anda mengingat kapan terakhir kali Anda menggunakan komputer untuk benar-benar menghitung sesuatu? + +## Apa itu Ilmu Data? + +Menurut [Wikipedia](https://en.wikipedia.org/wiki/Data_science), **Ilmu Data** didefinisikan sebagai *bidang ilmiah yang menggunakan metode ilmiah untuk mengekstrak pengetahuan dan wawasan dari data terstruktur dan tidak terstruktur, serta menerapkan pengetahuan dan wawasan yang dapat ditindaklanjuti dari data di berbagai domain aplikasi*. + +Definisi ini menyoroti beberapa aspek penting dari ilmu data: + +* Tujuan utama ilmu data adalah **mengekstrak pengetahuan** dari data, dengan kata lain - untuk **memahami** data, menemukan hubungan tersembunyi, dan membangun **model**. +* Ilmu data menggunakan **metode ilmiah**, seperti probabilitas dan statistik. Faktanya, ketika istilah *ilmu data* pertama kali diperkenalkan, beberapa orang berpendapat bahwa ilmu data hanyalah nama baru yang keren untuk statistik. Namun, sekarang telah jelas bahwa bidang ini jauh lebih luas. +* Pengetahuan yang diperoleh harus diterapkan untuk menghasilkan **wawasan yang dapat ditindaklanjuti**, yaitu wawasan praktis yang dapat diterapkan pada situasi bisnis nyata. +* Kita harus mampu mengolah data **terstruktur** maupun **tidak terstruktur**. Kita akan kembali membahas berbagai jenis data ini nanti dalam kursus. +* **Domain aplikasi** adalah konsep penting, dan ilmuwan data sering kali memerlukan setidaknya sedikit keahlian dalam domain masalah, misalnya: keuangan, kedokteran, pemasaran, dll. + +> Aspek penting lain dari Ilmu Data adalah mempelajari bagaimana data dapat dikumpulkan, disimpan, dan diolah menggunakan komputer. Sementara statistik memberikan dasar matematika, ilmu data menerapkan konsep matematika untuk benar-benar mendapatkan wawasan dari data. + +Salah satu cara (yang dikaitkan dengan [Jim Gray](https://en.wikipedia.org/wiki/Jim_Gray_(computer_scientist))) untuk melihat ilmu data adalah menganggapnya sebagai paradigma ilmu pengetahuan yang terpisah: +* **Empiris**, di mana kita terutama mengandalkan observasi dan hasil eksperimen +* **Teoretis**, di mana konsep baru muncul dari pengetahuan ilmiah yang sudah ada +* **Komputasional**, di mana kita menemukan prinsip baru berdasarkan eksperimen komputasi +* **Berbasis Data**, berdasarkan penemuan hubungan dan pola dalam data + +## Bidang Terkait Lainnya + +Karena data ada di mana-mana, ilmu data itu sendiri juga merupakan bidang yang luas, yang menyentuh banyak disiplin ilmu lainnya. + +## Jenis Data + +Seperti yang telah disebutkan, data ada di mana-mana. Kita hanya perlu menangkapnya dengan cara yang tepat! Penting untuk membedakan antara **data terstruktur** dan **tidak terstruktur**. Data terstruktur biasanya direpresentasikan dalam bentuk yang terorganisir dengan baik, sering kali sebagai tabel atau sejumlah tabel, sedangkan data tidak terstruktur hanyalah kumpulan file. Kadang-kadang kita juga dapat berbicara tentang **data semi-terstruktur**, yang memiliki semacam struktur yang dapat sangat bervariasi. + +| Terstruktur | Semi-terstruktur | Tidak Terstruktur | +| ---------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------- | +| Daftar orang dengan nomor telepon mereka | Halaman Wikipedia dengan tautan | Teks dari Ensiklopedia Britannica | +| Suhu di semua ruangan sebuah gedung setiap menit selama 20 tahun terakhir | Koleksi makalah ilmiah dalam format JSON dengan penulis, tanggal publikasi, dan abstrak | Berkas dokumen perusahaan | +| Data usia dan jenis kelamin semua orang yang memasuki gedung | Halaman internet | Rekaman video mentah dari kamera CCTV | + +## Dari Mana Mendapatkan Data + +Ada banyak sumber data yang mungkin, dan tidak mungkin untuk mencantumkan semuanya! Namun, mari kita sebutkan beberapa tempat khas di mana Anda dapat memperoleh data: + +* **Terstruktur** + - **Internet of Things** (IoT), termasuk data dari berbagai sensor, seperti sensor suhu atau tekanan, menyediakan banyak data yang berguna. Misalnya, jika sebuah gedung perkantoran dilengkapi dengan sensor IoT, kita dapat secara otomatis mengontrol pemanasan dan pencahayaan untuk meminimalkan biaya. + - **Survei** yang kita minta pengguna untuk mengisi setelah pembelian, atau setelah mengunjungi situs web. + - **Analisis perilaku** dapat, misalnya, membantu kita memahami seberapa dalam pengguna menjelajahi situs, dan apa alasan utama mereka meninggalkan situs. +* **Tidak Terstruktur** + - **Teks** dapat menjadi sumber wawasan yang kaya, seperti **skor sentimen** secara keseluruhan, atau mengekstraksi kata kunci dan makna semantik. + - **Gambar** atau **Video**. Rekaman video dari kamera pengawas dapat digunakan untuk memperkirakan lalu lintas di jalan, dan memberi tahu orang-orang tentang potensi kemacetan. + - **Log** server web dapat digunakan untuk memahami halaman mana dari situs kita yang paling sering dikunjungi, dan berapa lama. +* **Semi-terstruktur** + - Grafik **Jejaring Sosial** dapat menjadi sumber data yang hebat tentang kepribadian pengguna dan potensi efektivitas dalam menyebarkan informasi. + - Ketika kita memiliki sekumpulan foto dari sebuah pesta, kita dapat mencoba mengekstrak data **Dinamika Kelompok** dengan membangun grafik orang-orang yang berfoto bersama. + +Dengan mengetahui berbagai sumber data yang mungkin, Anda dapat mencoba memikirkan berbagai skenario di mana teknik ilmu data dapat diterapkan untuk memahami situasi dengan lebih baik, dan meningkatkan proses bisnis. + +## Apa yang Bisa Dilakukan dengan Data + +Dalam Ilmu Data, kita fokus pada langkah-langkah berikut dalam perjalanan data: + +Tentu saja, tergantung pada data yang sebenarnya, beberapa langkah mungkin tidak diperlukan (misalnya, ketika kita sudah memiliki data di database, atau ketika kita tidak memerlukan pelatihan model), atau beberapa langkah mungkin diulang beberapa kali (seperti pemrosesan data). + +## Digitalisasi dan Transformasi Digital + +Dalam dekade terakhir, banyak bisnis mulai memahami pentingnya data dalam pengambilan keputusan bisnis. Untuk menerapkan prinsip-prinsip ilmu data dalam menjalankan bisnis, pertama-tama kita perlu mengumpulkan data, yaitu menerjemahkan proses bisnis ke dalam bentuk digital. Ini dikenal sebagai **digitalisasi**. Menerapkan teknik ilmu data pada data ini untuk memandu keputusan dapat menghasilkan peningkatan produktivitas yang signifikan (atau bahkan perubahan arah bisnis), yang disebut **transformasi digital**. + +Mari kita pertimbangkan sebuah contoh. Misalkan kita memiliki kursus ilmu data (seperti ini) yang kita sampaikan secara online kepada siswa, dan kita ingin menggunakan ilmu data untuk meningkatkannya. Bagaimana kita bisa melakukannya? + +Kita dapat mulai dengan bertanya "Apa yang bisa didigitalisasi?" Cara paling sederhana adalah dengan mengukur waktu yang dibutuhkan setiap siswa untuk menyelesaikan setiap modul, dan mengukur pengetahuan yang diperoleh dengan memberikan tes pilihan ganda di akhir setiap modul. Dengan menghitung rata-rata waktu penyelesaian di seluruh siswa, kita dapat mengetahui modul mana yang paling sulit bagi siswa, dan bekerja untuk menyederhanakannya. +Anda mungkin berpendapat bahwa pendekatan ini tidak ideal, karena modul dapat memiliki panjang yang berbeda. Mungkin lebih adil untuk membagi waktu berdasarkan panjang modul (dalam jumlah karakter), dan membandingkan nilai-nilai tersebut sebagai gantinya. +Ketika kita mulai menganalisis hasil tes pilihan ganda, kita dapat mencoba menentukan konsep mana yang sulit dipahami oleh siswa, dan menggunakan informasi tersebut untuk meningkatkan konten. Untuk melakukannya, kita perlu merancang tes sedemikian rupa sehingga setiap pertanyaan terkait dengan konsep atau bagian pengetahuan tertentu. + +Jika kita ingin membuatnya lebih rumit, kita dapat memplot waktu yang dibutuhkan untuk setiap modul terhadap kategori usia siswa. Kita mungkin menemukan bahwa untuk beberapa kategori usia, dibutuhkan waktu yang terlalu lama untuk menyelesaikan modul, atau siswa berhenti sebelum menyelesaikannya. Hal ini dapat membantu kita memberikan rekomendasi usia untuk modul tersebut, dan meminimalkan ketidakpuasan orang akibat ekspektasi yang salah. + +## 🚀 Tantangan + +Dalam tantangan ini, kita akan mencoba menemukan konsep-konsep yang relevan dengan bidang Data Science dengan melihat teks. Kita akan mengambil artikel Wikipedia tentang Data Science, mengunduh dan memproses teksnya, lalu membuat word cloud seperti ini: + +![Word Cloud untuk Data Science](../../../../translated_images/ds_wordcloud.664a7c07dca57de017c22bf0498cb40f898d48aa85b3c36a80620fea12fadd42.id.png) + +Kunjungi [`notebook.ipynb`](../../../../../../../../../1-Introduction/01-defining-data-science/notebook.ipynb ':ignore') untuk membaca kode. Anda juga dapat menjalankan kode tersebut, dan melihat bagaimana kode tersebut melakukan semua transformasi data secara real time. + +> Jika Anda tidak tahu cara menjalankan kode di Jupyter Notebook, lihat [artikel ini](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). + +## [Kuis setelah kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/1) + +## Tugas + +* **Tugas 1**: Modifikasi kode di atas untuk menemukan konsep terkait untuk bidang **Big Data** dan **Machine Learning** +* **Tugas 2**: [Pikirkan Tentang Skenario Data Science](assignment.md) + +## Kredit + +Pelajaran ini dibuat dengan ♥️ oleh [Dmitry Soshnikov](http://soshnikov.com) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diingat bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/1-Introduction/01-defining-data-science/assignment.md b/translations/id/1-Introduction/01-defining-data-science/assignment.md new file mode 100644 index 00000000..9bf65dbd --- /dev/null +++ b/translations/id/1-Introduction/01-defining-data-science/assignment.md @@ -0,0 +1,46 @@ + +# Tugas: Skenario Data Science + +Dalam tugas pertama ini, kami meminta Anda untuk memikirkan beberapa proses atau masalah kehidupan nyata di berbagai domain masalah, dan bagaimana Anda dapat meningkatkannya menggunakan proses Data Science. Pertimbangkan hal-hal berikut: + +1. Data apa yang dapat Anda kumpulkan? +1. Bagaimana Anda akan mengumpulkannya? +1. Bagaimana Anda akan menyimpan data tersebut? Seberapa besar kemungkinan ukuran data tersebut? +1. Wawasan apa yang mungkin bisa Anda dapatkan dari data ini? Keputusan apa yang dapat kita ambil berdasarkan data tersebut? + +Cobalah untuk memikirkan 3 masalah/proses yang berbeda dan jelaskan masing-masing poin di atas untuk setiap domain masalah. + +Berikut adalah beberapa domain masalah dan masalah yang dapat membantu Anda mulai berpikir: + +1. Bagaimana Anda dapat menggunakan data untuk meningkatkan proses pendidikan anak-anak di sekolah? +1. Bagaimana Anda dapat menggunakan data untuk mengontrol vaksinasi selama pandemi? +1. Bagaimana Anda dapat menggunakan data untuk memastikan Anda produktif di tempat kerja? + +## Instruksi + +Isi tabel berikut (gantikan domain masalah yang disarankan dengan yang Anda miliki jika diperlukan): + +| Domain Masalah | Masalah | Data apa yang dikumpulkan | Bagaimana menyimpan data | Wawasan/keputusan apa yang dapat kita buat | +|----------------|---------|--------------------------|--------------------------|-------------------------------------------| +| Pendidikan | | | | | +| Vaksinasi | | | | | +| Produktivitas | | | | | + +## Rubrik + +Unggul | Memadai | Perlu Peningkatan +--- | --- | -- | +Mampu mengidentifikasi sumber data yang masuk akal, cara menyimpan data, dan kemungkinan keputusan/wawasan untuk semua domain masalah | Beberapa aspek solusi tidak dijelaskan secara rinci, penyimpanan data tidak dibahas, setidaknya 2 domain masalah dijelaskan | Hanya sebagian solusi data yang dijelaskan, hanya satu domain masalah yang dipertimbangkan. + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diingat bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/1-Introduction/01-defining-data-science/solution/assignment.md b/translations/id/1-Introduction/01-defining-data-science/solution/assignment.md new file mode 100644 index 00000000..c20a7c9b --- /dev/null +++ b/translations/id/1-Introduction/01-defining-data-science/solution/assignment.md @@ -0,0 +1,48 @@ + +# Tugas: Skenario Data Science + +Dalam tugas pertama ini, kami meminta Anda untuk memikirkan beberapa proses atau masalah kehidupan nyata di berbagai domain masalah, dan bagaimana Anda dapat meningkatkannya menggunakan proses Data Science. Pikirkan hal-hal berikut: + +1. Data apa yang dapat Anda kumpulkan? +1. Bagaimana Anda akan mengumpulkannya? +1. Bagaimana Anda akan menyimpan data tersebut? Seberapa besar kemungkinan data tersebut? +1. Wawasan apa yang mungkin bisa Anda dapatkan dari data ini? Keputusan apa yang dapat kita ambil berdasarkan data tersebut? + +Cobalah untuk memikirkan 3 masalah/proses yang berbeda dan jelaskan masing-masing poin di atas untuk setiap domain masalah. + +Berikut adalah beberapa domain masalah dan masalah yang dapat membantu Anda mulai berpikir: + +1. Bagaimana Anda dapat menggunakan data untuk meningkatkan proses pendidikan anak-anak di sekolah? +1. Bagaimana Anda dapat menggunakan data untuk mengontrol vaksinasi selama pandemi? +1. Bagaimana Anda dapat menggunakan data untuk memastikan Anda produktif di tempat kerja? + +## Instruksi + +Isi tabel berikut (gantikan domain masalah yang disarankan dengan yang Anda miliki jika diperlukan): + +| Domain Masalah | Masalah | Data apa yang dikumpulkan | Bagaimana menyimpan data | Wawasan/keputusan apa yang dapat kita buat | +|----------------|---------|--------------------------|--------------------------|-------------------------------------------| +| Pendidikan | Di universitas, biasanya kehadiran di kuliah rendah, dan kami memiliki hipotesis bahwa mahasiswa yang menghadiri kuliah rata-rata lebih baik dalam ujian. Kami ingin mendorong kehadiran dan menguji hipotesis ini. | Kami dapat melacak kehadiran melalui foto yang diambil oleh kamera keamanan di kelas, atau dengan melacak alamat bluetooth/wifi dari ponsel mahasiswa di kelas. Data ujian sudah tersedia di database universitas. | Jika kami melacak gambar dari kamera keamanan - kami perlu menyimpan beberapa (5-10) foto selama kelas berlangsung (data tidak terstruktur), dan kemudian menggunakan AI untuk mengidentifikasi wajah mahasiswa (mengonversi data menjadi bentuk terstruktur). | Kami dapat menghitung data rata-rata kehadiran untuk setiap mahasiswa, dan melihat apakah ada korelasi dengan nilai ujian. Kami akan membahas lebih lanjut tentang korelasi di bagian [probabilitas dan statistik](../../04-stats-and-probability/README.md). Untuk mendorong kehadiran mahasiswa, kami dapat mempublikasikan peringkat kehadiran mingguan di portal sekolah, dan mengadakan undian hadiah di antara mereka yang memiliki kehadiran tertinggi. | +| Vaksinasi | | | | | +| Produktivitas | | | | | + +> *Kami hanya memberikan satu jawaban sebagai contoh, sehingga Anda dapat memahami apa yang diharapkan dalam tugas ini.* + +## Rubrik + +Unggul | Memadai | Perlu Peningkatan +--- | --- | -- | +Dapat mengidentifikasi sumber data yang masuk akal, cara menyimpan data, dan kemungkinan keputusan/wawasan untuk semua domain masalah | Beberapa aspek solusi tidak dijelaskan secara rinci, penyimpanan data tidak dibahas, setidaknya 2 domain masalah dijelaskan | Hanya sebagian solusi data yang dijelaskan, hanya satu domain masalah yang dipertimbangkan. + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diingat bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/1-Introduction/02-ethics/README.md b/translations/id/1-Introduction/02-ethics/README.md new file mode 100644 index 00000000..877dbf01 --- /dev/null +++ b/translations/id/1-Introduction/02-ethics/README.md @@ -0,0 +1,267 @@ + +# Pengantar Etika Data + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/02-Ethics.png)| +|:---:| +| Etika Data Sains - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +--- + +Kita semua adalah warga data yang hidup di dunia yang dipenuhi data. + +Tren pasar menunjukkan bahwa pada tahun 2022, 1 dari 3 organisasi besar akan membeli dan menjual data mereka melalui [Pasar dan Bursa Online](https://www.gartner.com/smarterwithgartner/gartner-top-10-trends-in-data-and-analytics-for-2020/). Sebagai **Pengembang Aplikasi**, kita akan menemukan bahwa semakin mudah dan murah untuk mengintegrasikan wawasan berbasis data dan otomatisasi berbasis algoritma ke dalam pengalaman pengguna sehari-hari. Namun, seiring dengan semakin meluasnya penggunaan AI, kita juga perlu memahami potensi bahaya yang disebabkan oleh [senjataisasi](https://www.youtube.com/watch?v=TQHs8SA1qpk) algoritma semacam itu dalam skala besar. + +Tren juga menunjukkan bahwa kita akan menciptakan dan mengonsumsi lebih dari [180 zettabyte](https://www.statista.com/statistics/871513/worldwide-data-created/) data pada tahun 2025. Sebagai **Ilmuwan Data**, ini memberi kita akses yang belum pernah terjadi sebelumnya ke data pribadi. Ini berarti kita dapat membangun profil perilaku pengguna dan memengaruhi pengambilan keputusan dengan cara yang menciptakan [ilusi pilihan bebas](https://www.datasciencecentral.com/profiles/blogs/the-illusion-of-choice) sambil secara potensial mendorong pengguna ke arah hasil yang kita inginkan. Hal ini juga menimbulkan pertanyaan yang lebih luas tentang privasi data dan perlindungan pengguna. + +Etika data kini menjadi _pagar pembatas yang diperlukan_ untuk ilmu data dan rekayasa, membantu kita meminimalkan potensi bahaya dan konsekuensi yang tidak diinginkan dari tindakan berbasis data kita. [Gartner Hype Cycle for AI](https://www.gartner.com/smarterwithgartner/2-megatrends-dominate-the-gartner-hype-cycle-for-artificial-intelligence-2020/) mengidentifikasi tren relevan dalam etika digital, AI yang bertanggung jawab, dan tata kelola AI sebagai pendorong utama untuk megatren yang lebih besar seputar _demokratisasi_ dan _industrialisasi_ AI. + +![Gartner's Hype Cycle for AI - 2020](https://images-cdn.newscred.com/Zz1mOWJhNzlkNDA2ZTMxMWViYjRiOGFiM2IyMjQ1YmMwZQ==) + +Dalam pelajaran ini, kita akan menjelajahi area menarik dari etika data - mulai dari konsep inti dan tantangan, hingga studi kasus dan konsep AI terapan seperti tata kelola - yang membantu membangun budaya etika dalam tim dan organisasi yang bekerja dengan data dan AI. + +## [Kuis Pra-Kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/2) 🎯 + +## Definisi Dasar + +Mari kita mulai dengan memahami terminologi dasar. + +Kata "etika" berasal dari [kata Yunani "ethikos"](https://en.wikipedia.org/wiki/Ethics) (dan akar katanya "ethos") yang berarti _karakter atau sifat moral_. + +**Etika** adalah tentang nilai-nilai bersama dan prinsip moral yang mengatur perilaku kita dalam masyarakat. Etika tidak didasarkan pada hukum tetapi pada norma yang diterima secara luas tentang apa yang "benar vs. salah". Namun, pertimbangan etis dapat memengaruhi inisiatif tata kelola perusahaan dan peraturan pemerintah yang menciptakan lebih banyak insentif untuk kepatuhan. + +**Etika Data** adalah [cabang baru dari etika](https://royalsocietypublishing.org/doi/full/10.1098/rsta.2016.0360#sec-1) yang "mempelajari dan mengevaluasi masalah moral yang terkait dengan _data, algoritma, dan praktik terkait_". Di sini, **"data"** berfokus pada tindakan yang terkait dengan pembuatan, pencatatan, kurasi, pemrosesan, penyebaran, berbagi, dan penggunaan, **"algoritma"** berfokus pada AI, agen, pembelajaran mesin, dan robot, dan **"praktik"** berfokus pada topik seperti inovasi yang bertanggung jawab, pemrograman, peretasan, dan kode etik. + +**Etika Terapan** adalah [penerapan praktis dari pertimbangan moral](https://en.wikipedia.org/wiki/Applied_ethics). Ini adalah proses menyelidiki secara aktif masalah etika dalam konteks _tindakan, produk, dan proses dunia nyata_, serta mengambil langkah korektif untuk memastikan bahwa hal-hal tersebut tetap selaras dengan nilai-nilai etika yang telah kita tetapkan. + +**Budaya Etika** adalah tentang [_mengoperasionalkan_ etika terapan](https://hbr.org/2019/05/how-to-design-an-ethical-organization) untuk memastikan bahwa prinsip dan praktik etika kita diadopsi secara konsisten dan dapat diskalakan di seluruh organisasi. Budaya etika yang sukses mendefinisikan prinsip etika di seluruh organisasi, memberikan insentif yang bermakna untuk kepatuhan, dan memperkuat norma etika dengan mendorong dan memperkuat perilaku yang diinginkan di setiap tingkat organisasi. + +## Konsep Etika + +Dalam bagian ini, kita akan membahas konsep seperti **nilai bersama** (prinsip) dan **tantangan etika** (masalah) untuk etika data - serta mengeksplorasi **studi kasus** yang membantu Anda memahami konsep-konsep ini dalam konteks dunia nyata. + +### 1. Prinsip Etika + +Setiap strategi etika data dimulai dengan mendefinisikan _prinsip etika_ - "nilai bersama" yang menggambarkan perilaku yang dapat diterima, dan memandu tindakan yang sesuai, dalam proyek data & AI kita. Anda dapat mendefinisikan ini di tingkat individu atau tim. Namun, sebagian besar organisasi besar menguraikannya dalam pernyataan misi atau kerangka kerja _AI etis_ yang didefinisikan di tingkat perusahaan dan ditegakkan secara konsisten di semua tim. + +**Contoh:** Pernyataan misi [AI yang Bertanggung Jawab](https://www.microsoft.com/en-us/ai/responsible-ai) Microsoft berbunyi: _"Kami berkomitmen untuk kemajuan AI yang didorong oleh prinsip-prinsip etika yang menempatkan manusia sebagai prioritas utama"_ - mengidentifikasi 6 prinsip etika dalam kerangka kerja berikut: + +![AI yang Bertanggung Jawab di Microsoft](https://docs.microsoft.com/en-gb/azure/cognitive-services/personalizer/media/ethics-and-responsible-use/ai-values-future-computed.png) + +Mari kita jelajahi prinsip-prinsip ini secara singkat. _Transparansi_ dan _akuntabilitas_ adalah nilai-nilai dasar yang menjadi fondasi prinsip lainnya - jadi mari kita mulai dari sana: + +* [**Akuntabilitas**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) membuat praktisi _bertanggung jawab_ atas operasi data & AI mereka, serta kepatuhan terhadap prinsip etika ini. +* [**Transparansi**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) memastikan bahwa tindakan data dan AI _dapat dipahami_ (dapat diinterpretasikan) oleh pengguna, menjelaskan apa dan mengapa di balik keputusan. +* [**Keadilan**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1%3aprimaryr6) - berfokus pada memastikan AI memperlakukan _semua orang_ secara adil, mengatasi bias sosial-teknis sistemik atau implisit dalam data dan sistem. +* [**Keandalan & Keamanan**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) - memastikan bahwa AI berperilaku _konsisten_ dengan nilai-nilai yang telah ditentukan, meminimalkan potensi bahaya atau konsekuensi yang tidak diinginkan. +* [**Privasi & Keamanan**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) - adalah tentang memahami asal-usul data, dan memberikan _privasi data serta perlindungan terkait_ kepada pengguna. +* [**Inklusivitas**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) - adalah tentang merancang solusi AI dengan niat, menyesuaikannya untuk memenuhi _beragam kebutuhan_ dan kemampuan manusia. + +> 🚨 Pikirkan tentang apa pernyataan misi etika data Anda. Jelajahi kerangka kerja AI etis dari organisasi lain - berikut adalah contoh dari [IBM](https://www.ibm.com/cloud/learn/ai-ethics), [Google](https://ai.google/principles), dan [Facebook](https://ai.facebook.com/blog/facebooks-five-pillars-of-responsible-ai/). Nilai bersama apa yang mereka miliki? Bagaimana prinsip-prinsip ini terkait dengan produk AI atau industri tempat mereka beroperasi? + +### 2. Tantangan Etika + +Setelah kita mendefinisikan prinsip etika, langkah berikutnya adalah mengevaluasi tindakan data dan AI kita untuk melihat apakah tindakan tersebut selaras dengan nilai bersama tersebut. Pikirkan tindakan Anda dalam dua kategori: _pengumpulan data_ dan _desain algoritma_. + +Dalam pengumpulan data, tindakan kemungkinan besar akan melibatkan **data pribadi** atau informasi yang dapat diidentifikasi secara pribadi (PII) untuk individu yang dapat diidentifikasi. Ini mencakup [berbagai item data non-pribadi](https://ec.europa.eu/info/law/law-topic/data-protection/reform/what-personal-data_en) yang _secara kolektif_ mengidentifikasi individu. Tantangan etika dapat berkaitan dengan _privasi data_, _kepemilikan data_, dan topik terkait seperti _persetujuan yang diinformasikan_ dan _hak kekayaan intelektual_ untuk pengguna. + +Dalam desain algoritma, tindakan akan melibatkan pengumpulan & kurasi **dataset**, lalu menggunakannya untuk melatih & menerapkan **model data** yang memprediksi hasil atau mengotomatisasi keputusan dalam konteks dunia nyata. Tantangan etika dapat muncul dari _bias dataset_, _masalah kualitas data_, _ketidakadilan_, dan _kesalahan representasi_ dalam algoritma - termasuk beberapa masalah yang bersifat sistemik. + +Dalam kedua kasus, tantangan etika menyoroti area di mana tindakan kita mungkin bertentangan dengan nilai bersama kita. Untuk mendeteksi, mengurangi, meminimalkan, atau menghilangkan kekhawatiran ini - kita perlu mengajukan pertanyaan moral "ya/tidak" terkait tindakan kita, lalu mengambil tindakan korektif sesuai kebutuhan. Mari kita lihat beberapa tantangan etika dan pertanyaan moral yang mereka timbulkan: + +#### 2.1 Kepemilikan Data + +Pengumpulan data sering kali melibatkan data pribadi yang dapat mengidentifikasi subjek data. [Kepemilikan data](https://permission.io/blog/data-ownership) adalah tentang _kontrol_ dan [_hak pengguna_](https://permission.io/blog/data-ownership) terkait pembuatan, pemrosesan, dan penyebaran data. + +Pertanyaan moral yang perlu kita ajukan adalah: + * Siapa yang memiliki data? (pengguna atau organisasi) + * Hak apa yang dimiliki subjek data? (misalnya: akses, penghapusan, portabilitas) + * Hak apa yang dimiliki organisasi? (misalnya: memperbaiki ulasan pengguna yang merugikan) + +#### 2.2 Persetujuan yang Diinformasikan + +[Persetujuan yang diinformasikan](https://legaldictionary.net/informed-consent/) mendefinisikan tindakan pengguna yang menyetujui suatu tindakan (seperti pengumpulan data) dengan _pemahaman penuh_ tentang fakta relevan termasuk tujuan, potensi risiko, dan alternatif. + +Pertanyaan yang perlu dieksplorasi di sini adalah: + * Apakah pengguna (subjek data) memberikan izin untuk pengambilan dan penggunaan data? + * Apakah pengguna memahami tujuan pengambilan data tersebut? + * Apakah pengguna memahami potensi risiko dari partisipasi mereka? + +#### 2.3 Kekayaan Intelektual + +[Kekayaan intelektual](https://en.wikipedia.org/wiki/Intellectual_property) mengacu pada kreasi tidak berwujud yang dihasilkan dari inisiatif manusia, yang mungkin _memiliki nilai ekonomi_ bagi individu atau bisnis. + +Pertanyaan yang perlu dieksplorasi di sini adalah: + * Apakah data yang dikumpulkan memiliki nilai ekonomi bagi pengguna atau bisnis? + * Apakah **pengguna** memiliki kekayaan intelektual di sini? + * Apakah **organisasi** memiliki kekayaan intelektual di sini? + * Jika hak ini ada, bagaimana kita melindunginya? + +#### 2.4 Privasi Data + +[Privasi data](https://www.northeastern.edu/graduate/blog/what-is-data-privacy/) atau privasi informasi mengacu pada pelestarian privasi pengguna dan perlindungan identitas pengguna sehubungan dengan informasi yang dapat diidentifikasi secara pribadi. + +Pertanyaan yang perlu dieksplorasi di sini adalah: + * Apakah data (pribadi) pengguna diamankan dari peretasan dan kebocoran? + * Apakah data pengguna hanya dapat diakses oleh pengguna dan konteks yang berwenang? + * Apakah anonimitas pengguna terjaga saat data dibagikan atau disebarluaskan? + * Bisakah pengguna diidentifikasi dari dataset yang dianonimkan? + +#### 2.5 Hak untuk Dilupakan + +[Hak untuk Dilupakan](https://en.wikipedia.org/wiki/Right_to_be_forgotten) atau [Hak untuk Penghapusan](https://www.gdpreu.org/right-to-be-forgotten/) memberikan perlindungan data pribadi tambahan kepada pengguna. Secara khusus, ini memberi pengguna hak untuk meminta penghapusan atau penghapusan data pribadi dari pencarian Internet dan lokasi lainnya, _dalam keadaan tertentu_ - memungkinkan mereka memulai kembali secara online tanpa tindakan masa lalu yang membebani mereka. + +Pertanyaan yang perlu dieksplorasi di sini adalah: + * Apakah sistem memungkinkan subjek data untuk meminta penghapusan? + * Haruskah penarikan persetujuan pengguna memicu penghapusan otomatis? + * Apakah data dikumpulkan tanpa persetujuan atau dengan cara yang melanggar hukum? + * Apakah kita mematuhi peraturan pemerintah tentang privasi data? + +#### 2.6 Bias Dataset + +Bias dataset atau [Bias Pengumpulan](http://researcharticles.com/index.php/bias-in-data-collection-in-research/) adalah tentang memilih subset data yang _tidak representatif_ untuk pengembangan algoritma, menciptakan potensi ketidakadilan dalam hasil untuk kelompok yang beragam. Jenis bias termasuk bias seleksi atau sampling, bias sukarelawan, dan bias instrumen. + +Pertanyaan yang perlu dieksplorasi di sini adalah: + * Apakah kita merekrut kumpulan subjek data yang representatif? + * Apakah kita menguji dataset yang dikumpulkan atau dikurasi untuk berbagai bias? + * Bisakah kita mengurangi atau menghilangkan bias yang ditemukan? + +#### 2.7 Kualitas Data + +[Kualitas Data](https://lakefs.io/data-quality-testing/) melihat validitas dataset yang dikurasi yang digunakan untuk mengembangkan algoritma kita, memeriksa apakah fitur dan catatan memenuhi persyaratan untuk tingkat akurasi dan konsistensi yang diperlukan untuk tujuan AI kita. + +Pertanyaan yang perlu dieksplorasi di sini adalah: + * Apakah kita menangkap _fitur_ yang valid untuk kasus penggunaan kita? + * Apakah data ditangkap _secara konsisten_ di berbagai sumber data? + * Apakah dataset _lengkap_ untuk berbagai kondisi atau skenario? + * Apakah informasi yang ditangkap _akurat_ dalam mencerminkan realitas? + +#### 2.8 Keadilan Algoritma +[Algorithm Fairness](https://towardsdatascience.com/what-is-algorithm-fairness-3182e161cf9f) memeriksa apakah desain algoritma secara sistematis mendiskriminasi kelompok tertentu dari subjek data, yang dapat menyebabkan [potensi kerugian](https://docs.microsoft.com/en-us/azure/machine-learning/concept-fairness-ml) dalam _alokasi_ (di mana sumber daya ditolak atau ditahan dari kelompok tersebut) dan _kualitas layanan_ (di mana AI tidak seakurat untuk beberapa kelompok dibandingkan dengan yang lain). + +Pertanyaan yang dapat dieksplorasi di sini adalah: + * Apakah kita mengevaluasi akurasi model untuk berbagai kelompok dan kondisi? + * Apakah kita memeriksa sistem untuk potensi kerugian (misalnya, stereotip)? + * Bisakah kita merevisi data atau melatih ulang model untuk mengurangi kerugian yang teridentifikasi? + +Jelajahi sumber daya seperti [AI Fairness checklists](https://query.prod.cms.rt.microsoft.com/cms/api/am/binary/RE4t6dA) untuk mempelajari lebih lanjut. + +#### 2.9 Representasi yang Salah + +[Representasi Data yang Salah](https://www.sciencedirect.com/topics/computer-science/misrepresentation) berkaitan dengan pertanyaan apakah kita menyampaikan wawasan dari data yang dilaporkan secara jujur dengan cara yang menyesatkan untuk mendukung narasi yang diinginkan. + +Pertanyaan yang dapat dieksplorasi di sini adalah: + * Apakah kita melaporkan data yang tidak lengkap atau tidak akurat? + * Apakah kita memvisualisasikan data dengan cara yang mendorong kesimpulan yang menyesatkan? + * Apakah kita menggunakan teknik statistik selektif untuk memanipulasi hasil? + * Apakah ada penjelasan alternatif yang mungkin menawarkan kesimpulan berbeda? + +#### 2.10 Pilihan Bebas +[Ilusi Pilihan Bebas](https://www.datasciencecentral.com/profiles/blogs/the-illusion-of-choice) terjadi ketika "arsitektur pilihan" sistem menggunakan algoritma pengambilan keputusan untuk mendorong orang mengambil hasil yang diinginkan sambil tampak memberikan mereka opsi dan kendali. Pola-pola gelap ini ([dark patterns](https://www.darkpatterns.org/)) dapat menyebabkan kerugian sosial dan ekonomi bagi pengguna. Karena keputusan pengguna memengaruhi profil perilaku, tindakan ini berpotensi mendorong pilihan di masa depan yang dapat memperbesar atau memperpanjang dampak kerugian tersebut. + +Pertanyaan yang dapat dieksplorasi di sini adalah: + * Apakah pengguna memahami implikasi dari pilihan yang dibuat? + * Apakah pengguna menyadari pilihan (alternatif) dan pro & kontra dari masing-masing? + * Bisakah pengguna membatalkan pilihan yang otomatis atau dipengaruhi di kemudian hari? + +### 3. Studi Kasus + +Untuk menempatkan tantangan etika ini dalam konteks dunia nyata, membantu untuk melihat studi kasus yang menyoroti potensi kerugian dan konsekuensi bagi individu dan masyarakat ketika pelanggaran etika seperti ini diabaikan. + +Berikut beberapa contohnya: + +| Tantangan Etika | Studi Kasus | +|--- |--- | +| **Persetujuan yang Diberikan dengan Informasi** | 1972 - [Studi Sifilis Tuskegee](https://en.wikipedia.org/wiki/Tuskegee_Syphilis_Study) - Pria Afrika-Amerika yang berpartisipasi dalam studi ini dijanjikan perawatan medis gratis _tetapi ditipu_ oleh peneliti yang gagal memberi tahu subjek tentang diagnosis mereka atau tentang ketersediaan pengobatan. Banyak subjek meninggal & pasangan atau anak-anak mereka terkena dampaknya; studi ini berlangsung selama 40 tahun. | +| **Privasi Data** | 2007 - [Hadiah data Netflix](https://www.wired.com/2007/12/why-anonymous-data-sometimes-isnt/) memberikan peneliti _10 juta peringkat film anonim dari 50 ribu pelanggan_ untuk membantu meningkatkan algoritma rekomendasi. Namun, peneliti dapat menghubungkan data anonim dengan data yang dapat diidentifikasi secara pribadi di _dataset eksternal_ (misalnya, komentar IMDb) - secara efektif "membuka anonimitas" beberapa pelanggan Netflix.| +| **Bias Pengumpulan Data** | 2013 - Kota Boston [mengembangkan Street Bump](https://www.boston.gov/transportation/street-bump), sebuah aplikasi yang memungkinkan warga melaporkan lubang jalan, memberikan data jalan yang lebih baik kepada kota untuk menemukan dan memperbaiki masalah. Namun, [orang-orang dari kelompok berpenghasilan rendah memiliki akses yang lebih sedikit ke mobil dan ponsel](https://hbr.org/2013/04/the-hidden-biases-in-big-data), membuat masalah jalan mereka tidak terlihat dalam aplikasi ini. Pengembang bekerja dengan akademisi untuk mengatasi masalah _akses yang adil dan kesenjangan digital_ demi keadilan. | +| **Keadilan Algoritmik** | 2018 - Studi MIT [Gender Shades](http://gendershades.org/overview.html) mengevaluasi akurasi produk AI klasifikasi gender, mengungkapkan kesenjangan akurasi untuk perempuan dan orang kulit berwarna. Sebuah [Kartu Kredit Apple 2019](https://www.wired.com/story/the-apple-card-didnt-see-genderand-thats-the-problem/) tampaknya menawarkan kredit lebih rendah kepada perempuan dibandingkan laki-laki. Keduanya menggambarkan masalah bias algoritmik yang menyebabkan kerugian sosial-ekonomi.| +| **Representasi Data yang Salah** | 2020 - [Departemen Kesehatan Publik Georgia merilis grafik COVID-19](https://www.vox.com/covid-19-coronavirus-us-response-trump/2020/5/18/21262265/georgia-covid-19-cases-declining-reopening) yang tampaknya menyesatkan warga tentang tren kasus yang dikonfirmasi dengan pengurutan non-kronologis pada sumbu x. Ini menggambarkan representasi yang salah melalui trik visualisasi. | +| **Ilusi Pilihan Bebas** | 2020 - Aplikasi pembelajaran [ABCmouse membayar $10 juta untuk menyelesaikan keluhan FTC](https://www.washingtonpost.com/business/2020/09/04/abcmouse-10-million-ftc-settlement/) di mana orang tua terjebak membayar langganan yang tidak dapat mereka batalkan. Ini menggambarkan pola gelap dalam arsitektur pilihan, di mana pengguna didorong ke arah pilihan yang berpotensi merugikan. | +| **Privasi Data & Hak Pengguna** | 2021 - [Kebocoran Data Facebook](https://www.npr.org/2021/04/09/986005820/after-data-breach-exposes-530-million-facebook-says-it-will-not-notify-users) mengekspos data dari 530 juta pengguna, menghasilkan penyelesaian $5 miliar dengan FTC. Namun, Facebook menolak memberi tahu pengguna tentang pelanggaran tersebut, melanggar hak pengguna terkait transparansi dan akses data. | + +Ingin menjelajahi lebih banyak studi kasus? Lihat sumber daya berikut: +* [Ethics Unwrapped](https://ethicsunwrapped.utexas.edu/case-studies) - dilema etika di berbagai industri. +* [Kursus Etika Data Science](https://www.coursera.org/learn/data-science-ethics#syllabus) - studi kasus penting yang dieksplorasi. +* [Di mana hal-hal menjadi salah](https://deon.drivendata.org/examples/) - daftar periksa deon dengan contoh. + +> 🚨 Pikirkan tentang studi kasus yang telah Anda lihat - apakah Anda pernah mengalami, atau terpengaruh oleh, tantangan etika serupa dalam hidup Anda? Bisakah Anda memikirkan setidaknya satu studi kasus lain yang menggambarkan salah satu tantangan etika yang telah kita bahas di bagian ini? + +## Etika Terapan + +Kita telah membahas konsep etika, tantangan, dan studi kasus dalam konteks dunia nyata. Tetapi bagaimana kita memulai _menerapkan_ prinsip dan praktik etika dalam proyek kita? Dan bagaimana kita _mengoperasionalkan_ praktik ini untuk tata kelola yang lebih baik? Mari kita jelajahi beberapa solusi dunia nyata: + +### 1. Kode Profesional + +Kode Profesional menawarkan salah satu opsi bagi organisasi untuk "mendorong" anggota mendukung prinsip etika dan pernyataan misi mereka. Kode ini adalah _panduan moral_ untuk perilaku profesional, membantu karyawan atau anggota membuat keputusan yang selaras dengan prinsip organisasi mereka. Kode ini hanya seefektif kepatuhan sukarela dari anggota; namun, banyak organisasi menawarkan penghargaan dan hukuman tambahan untuk memotivasi kepatuhan. + +Contoh termasuk: + + * [Oxford Munich](http://www.code-of-ethics.org/code-of-conduct/) Kode Etika + * [Data Science Association](http://datascienceassn.org/code-of-conduct.html) Kode Perilaku (dibuat 2013) + * [Kode Etika dan Perilaku Profesional ACM](https://www.acm.org/code-of-ethics) (sejak 1993) + +> 🚨 Apakah Anda tergabung dalam organisasi profesional teknik atau data science? Jelajahi situs mereka untuk melihat apakah mereka mendefinisikan kode etika profesional. Apa yang dikatakan ini tentang prinsip etika mereka? Bagaimana mereka "mendorong" anggota untuk mengikuti kode tersebut? + +### 2. Daftar Periksa Etika + +Sementara kode profesional mendefinisikan _perilaku etis_ yang diperlukan dari praktisi, mereka [memiliki keterbatasan yang diketahui](https://resources.oreilly.com/examples/0636920203964/blob/master/of_oaths_and_checklists.md) dalam penegakan, terutama dalam proyek skala besar. Sebagai gantinya, banyak ahli data science [menganjurkan daftar periksa](https://resources.oreilly.com/examples/0636920203964/blob/master/of_oaths_and_checklists.md), yang dapat **menghubungkan prinsip dengan praktik** dengan cara yang lebih deterministik dan dapat ditindaklanjuti. + +Daftar periksa mengubah pertanyaan menjadi tugas "ya/tidak" yang dapat dioperasionalkan, memungkinkan mereka dilacak sebagai bagian dari alur kerja rilis produk standar. + +Contoh termasuk: + * [Deon](https://deon.drivendata.org/) - daftar periksa etika data umum yang dibuat dari [rekomendasi industri](https://deon.drivendata.org/#checklist-citations) dengan alat baris perintah untuk integrasi yang mudah. + * [Daftar Periksa Audit Privasi](https://cyber.harvard.edu/ecommerce/privacyaudit.html) - memberikan panduan umum untuk praktik penanganan informasi dari perspektif eksposur hukum dan sosial. + * [Daftar Periksa Keadilan AI](https://www.microsoft.com/en-us/research/project/ai-fairness-checklist/) - dibuat oleh praktisi AI untuk mendukung adopsi dan integrasi pemeriksaan keadilan dalam siklus pengembangan AI. + * [22 pertanyaan untuk etika dalam data dan AI](https://medium.com/the-organization/22-questions-for-ethics-in-data-and-ai-efb68fd19429) - kerangka kerja yang lebih terbuka, terstruktur untuk eksplorasi awal masalah etika dalam desain, implementasi, dan konteks organisasi. + +### 3. Regulasi Etika + +Etika adalah tentang mendefinisikan nilai-nilai bersama dan melakukan hal yang benar _secara sukarela_. **Kepatuhan** adalah tentang _mematuhi hukum_ jika dan di mana didefinisikan. **Tata kelola** secara luas mencakup semua cara organisasi beroperasi untuk menegakkan prinsip etika dan mematuhi hukum yang telah ditetapkan. + +Saat ini, tata kelola mengambil dua bentuk dalam organisasi. Pertama, ini tentang mendefinisikan prinsip **AI etis** dan menetapkan praktik untuk mengoperasionalkan adopsi di semua proyek terkait AI dalam organisasi. Kedua, ini tentang mematuhi semua regulasi perlindungan data yang diwajibkan pemerintah untuk wilayah tempat organisasi beroperasi. + +Contoh regulasi perlindungan data dan privasi: + + * `1974`, [US Privacy Act](https://www.justice.gov/opcl/privacy-act-1974) - mengatur pengumpulan, penggunaan, dan pengungkapan informasi pribadi oleh _pemerintah federal_. + * `1996`, [US Health Insurance Portability & Accountability Act (HIPAA)](https://www.cdc.gov/phlp/publications/topic/hipaa.html) - melindungi data kesehatan pribadi. + * `1998`, [US Children's Online Privacy Protection Act (COPPA)](https://www.ftc.gov/enforcement/rules/rulemaking-regulatory-reform-proceedings/childrens-online-privacy-protection-rule) - melindungi privasi data anak-anak di bawah 13 tahun. + * `2018`, [General Data Protection Regulation (GDPR)](https://gdpr-info.eu/) - memberikan hak pengguna, perlindungan data, dan privasi. + * `2018`, [California Consumer Privacy Act (CCPA)](https://www.oag.ca.gov/privacy/ccpa) memberikan lebih banyak _hak_ kepada konsumen atas data (pribadi) mereka. + * `2021`, [Undang-Undang Perlindungan Informasi Pribadi China](https://www.reuters.com/world/china/china-passes-new-personal-data-privacy-law-take-effect-nov-1-2021-08-20/) baru saja disahkan, menciptakan salah satu regulasi privasi data online terkuat di dunia. + +> 🚨 Uni Eropa mendefinisikan GDPR (General Data Protection Regulation) yang tetap menjadi salah satu regulasi privasi data paling berpengaruh saat ini. Tahukah Anda bahwa GDPR juga mendefinisikan [8 hak pengguna](https://www.freeprivacypolicy.com/blog/8-user-rights-gdpr) untuk melindungi privasi digital dan data pribadi warga negara? Pelajari apa saja hak ini, dan mengapa itu penting. + +### 4. Budaya Etika + +Perlu dicatat bahwa masih ada kesenjangan tak berwujud antara _kepatuhan_ (melakukan cukup untuk memenuhi "huruf hukum") dan mengatasi [masalah sistemik](https://www.coursera.org/learn/data-science-ethics/home/week/4) (seperti ossifikasi, asimetri informasi, dan ketidakadilan distribusi) yang dapat mempercepat senjata AI. + +Yang terakhir membutuhkan [pendekatan kolaboratif untuk mendefinisikan budaya etika](https://towardsdatascience.com/why-ai-ethics-requires-a-culture-driven-approach-26f451afa29f) yang membangun koneksi emosional dan nilai-nilai bersama yang konsisten _di seluruh organisasi_ dalam industri. Ini menyerukan lebih banyak [budaya etika data yang diformalkan](https://www.codeforamerica.org/news/formalizing-an-ethical-data-culture/) dalam organisasi - memungkinkan _siapa pun_ untuk [menarik tali Andon](https://en.wikipedia.org/wiki/Andon_(manufacturing)) (untuk mengangkat kekhawatiran etika sejak awal proses) dan menjadikan _penilaian etika_ (misalnya, dalam perekrutan) sebagai kriteria inti pembentukan tim dalam proyek AI. + +--- +## [Kuis pasca-ceramah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/3) 🎯 +## Tinjauan & Studi Mandiri + +Kursus dan buku membantu memahami konsep dan tantangan etika inti, sementara studi kasus dan alat membantu praktik etika terapan dalam konteks dunia nyata. Berikut beberapa sumber daya untuk memulai. + +* [Machine Learning For Beginners](https://github.com/microsoft/ML-For-Beginners/blob/main/1-Introduction/3-fairness/README.md) - pelajaran tentang Keadilan, dari Microsoft. +* [Prinsip AI yang Bertanggung Jawab](https://docs.microsoft.com/en-us/learn/modules/responsible-ai-principles/) - jalur pembelajaran gratis dari Microsoft Learn. +* [Etika dan Ilmu Data](https://resources.oreilly.com/examples/0636920203964) - EBook O'Reilly (M. Loukides, H. Mason, dan lainnya) +* [Etika Ilmu Data](https://www.coursera.org/learn/data-science-ethics#syllabus) - kursus online dari Universitas Michigan. +* [Ethics Unwrapped](https://ethicsunwrapped.utexas.edu/case-studies) - studi kasus dari Universitas Texas. + +# Tugas + +[Tulis Studi Kasus Etika Data](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diketahui bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/1-Introduction/02-ethics/assignment.md b/translations/id/1-Introduction/02-ethics/assignment.md new file mode 100644 index 00000000..98ea7489 --- /dev/null +++ b/translations/id/1-Introduction/02-ethics/assignment.md @@ -0,0 +1,35 @@ + +## Menulis Studi Kasus Etika Data + +## Instruksi + +Anda telah mempelajari berbagai [Tantangan Etika Data](README.md#2-ethics-challenges) dan melihat beberapa contoh [Studi Kasus](README.md#3-case-studies) yang mencerminkan tantangan etika data dalam konteks dunia nyata. + +Dalam tugas ini, Anda akan menulis studi kasus Anda sendiri yang mencerminkan tantangan etika data dari pengalaman Anda sendiri, atau dari konteks dunia nyata yang relevan dan Anda kenal. Ikuti langkah-langkah berikut: + +1. `Pilih Tantangan Etika Data`. Lihat [contoh dalam pelajaran](README.md#2-ethics-challenges) atau jelajahi contoh daring seperti [Deon Checklist](https://deon.drivendata.org/examples/) untuk mendapatkan inspirasi. + +2. `Deskripsikan Contoh Dunia Nyata`. Pikirkan tentang situasi yang pernah Anda dengar (berita utama, studi penelitian, dll.) atau alami (komunitas lokal), di mana tantangan spesifik ini terjadi. Pikirkan tentang pertanyaan etika data yang terkait dengan tantangan tersebut - dan diskusikan potensi kerugian atau konsekuensi yang tidak diinginkan yang muncul karena masalah ini. Bonus poin: pikirkan tentang solusi atau proses potensial yang dapat diterapkan di sini untuk membantu menghilangkan atau mengurangi dampak buruk dari tantangan ini. + +3. `Sediakan Daftar Sumber Terkait`. Bagikan satu atau lebih sumber (tautan ke artikel, posting blog pribadi atau gambar, makalah penelitian daring, dll.) untuk membuktikan bahwa ini adalah kejadian dunia nyata. Bonus poin: bagikan sumber yang juga menunjukkan potensi kerugian & konsekuensi dari insiden tersebut, atau menyoroti langkah-langkah positif yang diambil untuk mencegah terulangnya kejadian ini. + + + +## Rubrik + +Unggul | Memadai | Perlu Peningkatan +--- | --- | -- | +Satu atau lebih tantangan etika data diidentifikasi.

Studi kasus dengan jelas mendeskripsikan insiden dunia nyata yang mencerminkan tantangan tersebut, dan menyoroti konsekuensi atau kerugian yang tidak diinginkan yang ditimbulkannya.

Terdapat setidaknya satu sumber yang ditautkan untuk membuktikan bahwa ini terjadi. | Satu tantangan etika data diidentifikasi.

Setidaknya satu kerugian atau konsekuensi yang relevan dibahas secara singkat.

Namun, diskusi terbatas atau kurang bukti tentang kejadian dunia nyata. | Sebuah tantangan data diidentifikasi.

Namun, deskripsi atau sumber tidak cukup mencerminkan tantangan tersebut atau membuktikan kejadian dunia nyata. | + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/1-Introduction/03-defining-data/README.md b/translations/id/1-Introduction/03-defining-data/README.md new file mode 100644 index 00000000..e8fd90c5 --- /dev/null +++ b/translations/id/1-Introduction/03-defining-data/README.md @@ -0,0 +1,84 @@ + +# Mendefinisikan Data + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/03-DefiningData.png)| +|:---:| +|Mendefinisikan Data - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +Data adalah fakta, informasi, pengamatan, dan pengukuran yang digunakan untuk membuat penemuan dan mendukung pengambilan keputusan yang terinformasi. Sebuah titik data adalah satu unit data dalam sebuah dataset, yang merupakan kumpulan dari titik-titik data. Dataset dapat memiliki format dan struktur yang berbeda, biasanya tergantung pada sumbernya atau dari mana data tersebut berasal. Sebagai contoh, pendapatan bulanan sebuah perusahaan mungkin disimpan dalam spreadsheet, sedangkan data detak jantung per jam dari smartwatch mungkin dalam format [JSON](https://stackoverflow.com/a/383699). Sangat umum bagi ilmuwan data untuk bekerja dengan berbagai jenis data dalam sebuah dataset. + +Pelajaran ini berfokus pada mengidentifikasi dan mengklasifikasikan data berdasarkan karakteristik dan sumbernya. + +## [Kuis Pra-Pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/4) +## Bagaimana Data Dijelaskan + +### Data Mentah +Data mentah adalah data yang berasal dari sumbernya dalam keadaan awal dan belum dianalisis atau diorganisasi. Agar dapat memahami apa yang terjadi dalam sebuah dataset, data perlu diorganisasi ke dalam format yang dapat dipahami oleh manusia maupun teknologi yang digunakan untuk menganalisisnya lebih lanjut. Struktur sebuah dataset menggambarkan bagaimana data tersebut diorganisasi dan dapat diklasifikasikan sebagai terstruktur, tidak terstruktur, dan semi-terstruktur. Jenis struktur ini akan bervariasi tergantung pada sumbernya, tetapi pada akhirnya akan masuk ke dalam salah satu dari tiga kategori ini. + +### Data Kuantitatif +Data kuantitatif adalah pengamatan numerik dalam sebuah dataset yang biasanya dapat dianalisis, diukur, dan digunakan secara matematis. Beberapa contoh data kuantitatif adalah: populasi suatu negara, tinggi badan seseorang, atau pendapatan triwulanan sebuah perusahaan. Dengan analisis tambahan, data kuantitatif dapat digunakan untuk menemukan tren musiman pada Indeks Kualitas Udara (AQI) atau memperkirakan kemungkinan kemacetan lalu lintas pada hari kerja biasa. + +### Data Kualitatif +Data kualitatif, juga dikenal sebagai data kategoris, adalah data yang tidak dapat diukur secara objektif seperti pengamatan pada data kuantitatif. Data ini umumnya berupa berbagai format data subjektif yang menangkap kualitas sesuatu, seperti produk atau proses. Kadang-kadang, data kualitatif berbentuk numerik tetapi tidak digunakan secara matematis, seperti nomor telepon atau stempel waktu. Beberapa contoh data kualitatif adalah: komentar video, merek dan model mobil, atau warna favorit teman terdekat Anda. Data kualitatif dapat digunakan untuk memahami produk mana yang paling disukai konsumen atau mengidentifikasi kata kunci populer dalam resume lamaran kerja. + +### Data Terstruktur +Data terstruktur adalah data yang diorganisasi dalam baris dan kolom, di mana setiap baris memiliki set kolom yang sama. Kolom mewakili nilai dari jenis tertentu dan akan diidentifikasi dengan nama yang menggambarkan apa yang diwakili oleh nilai tersebut, sementara baris berisi nilai-nilai aktual. Kolom sering kali memiliki serangkaian aturan atau batasan tertentu pada nilainya untuk memastikan bahwa nilai-nilai tersebut secara akurat mewakili kolom. Sebagai contoh, bayangkan sebuah spreadsheet pelanggan di mana setiap baris harus memiliki nomor telepon dan nomor telepon tersebut tidak boleh mengandung karakter alfabet. Mungkin ada aturan yang diterapkan pada kolom nomor telepon untuk memastikan kolom tersebut tidak pernah kosong dan hanya berisi angka. + +Keuntungan dari data terstruktur adalah data ini dapat diorganisasi sedemikian rupa sehingga dapat dihubungkan dengan data terstruktur lainnya. Namun, karena data ini dirancang untuk diorganisasi dengan cara tertentu, mengubah struktur keseluruhannya dapat memerlukan banyak usaha. Sebagai contoh, menambahkan kolom email pada spreadsheet pelanggan yang tidak boleh kosong berarti Anda harus mencari cara untuk menambahkan nilai-nilai ini pada baris pelanggan yang sudah ada dalam dataset. + +Contoh data terstruktur: spreadsheet, basis data relasional, nomor telepon, laporan bank. + +### Data Tidak Terstruktur +Data tidak terstruktur biasanya tidak dapat dikategorikan ke dalam baris atau kolom dan tidak memiliki format atau aturan tertentu untuk diikuti. Karena data tidak terstruktur memiliki lebih sedikit batasan pada strukturnya, lebih mudah untuk menambahkan informasi baru dibandingkan dengan dataset terstruktur. Jika sebuah sensor yang menangkap data tekanan barometrik setiap 2 menit menerima pembaruan yang sekarang memungkinkan sensor tersebut mengukur dan merekam suhu, tidak diperlukan perubahan pada data yang sudah ada jika data tersebut tidak terstruktur. Namun, ini mungkin membuat analisis atau investigasi data jenis ini memakan waktu lebih lama. Sebagai contoh, seorang ilmuwan yang ingin menemukan suhu rata-rata bulan sebelumnya dari data sensor, tetapi menemukan bahwa sensor mencatat "e" dalam beberapa datanya untuk menunjukkan bahwa sensor tersebut rusak, yang berarti data tersebut tidak lengkap. + +Contoh data tidak terstruktur: file teks, pesan teks, file video. + +### Data Semi-Terstruktur +Data semi-terstruktur memiliki fitur yang membuatnya menjadi kombinasi antara data terstruktur dan tidak terstruktur. Data ini biasanya tidak mengikuti format baris dan kolom, tetapi diorganisasi dengan cara yang dianggap terstruktur dan mungkin mengikuti format tetap atau serangkaian aturan. Struktur ini akan bervariasi antara sumber, seperti hierarki yang terdefinisi dengan baik hingga sesuatu yang lebih fleksibel yang memungkinkan integrasi informasi baru dengan mudah. Metadata adalah indikator yang membantu menentukan bagaimana data diorganisasi dan disimpan, dan akan memiliki berbagai nama tergantung pada jenis data. Beberapa nama umum untuk metadata adalah tag, elemen, entitas, dan atribut. Sebagai contoh, sebuah pesan email biasanya memiliki subjek, isi, dan daftar penerima, serta dapat diorganisasi berdasarkan siapa atau kapan pesan tersebut dikirim. + +Contoh data semi-terstruktur: HTML, file CSV, JavaScript Object Notation (JSON). + +## Sumber Data + +Sumber data adalah lokasi awal di mana data dihasilkan atau di mana data tersebut "hidup" dan akan bervariasi tergantung pada bagaimana dan kapan data tersebut dikumpulkan. Data yang dihasilkan oleh penggunanya dikenal sebagai data primer, sedangkan data sekunder berasal dari sumber yang telah mengumpulkan data untuk penggunaan umum. Sebagai contoh, sekelompok ilmuwan yang mengumpulkan pengamatan di hutan hujan akan dianggap sebagai data primer, dan jika mereka memutuskan untuk membagikannya dengan ilmuwan lain, data tersebut akan dianggap sebagai data sekunder bagi mereka yang menggunakannya. + +Basis data adalah sumber yang umum dan bergantung pada sistem manajemen basis data untuk menyimpan dan memelihara data, di mana pengguna menggunakan perintah yang disebut kueri untuk mengeksplorasi data. File sebagai sumber data dapat berupa file audio, gambar, dan video, serta spreadsheet seperti Excel. Sumber internet adalah lokasi umum untuk menyimpan data, di mana basis data serta file dapat ditemukan. Antarmuka pemrograman aplikasi, juga dikenal sebagai API, memungkinkan programmer membuat cara untuk berbagi data dengan pengguna eksternal melalui internet, sementara proses web scraping mengekstrak data dari halaman web. [Pelajaran dalam Bekerja dengan Data](../../../../../../../../../2-Working-With-Data) berfokus pada cara menggunakan berbagai sumber data. + +## Kesimpulan + +Dalam pelajaran ini kita telah mempelajari: + +- Apa itu data +- Bagaimana data dijelaskan +- Bagaimana data diklasifikasikan dan dikategorikan +- Di mana data dapat ditemukan + +## 🚀 Tantangan + +Kaggle adalah sumber yang sangat baik untuk dataset terbuka. Gunakan [alat pencarian dataset](https://www.kaggle.com/datasets) untuk menemukan beberapa dataset menarik dan klasifikasikan 3-5 dataset dengan kriteria berikut: + +- Apakah data tersebut kuantitatif atau kualitatif? +- Apakah data tersebut terstruktur, tidak terstruktur, atau semi-terstruktur? + +## [Kuis Pasca-Pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/5) + +## Tinjauan & Studi Mandiri + +- Unit Microsoft Learn ini, berjudul [Classify your Data](https://docs.microsoft.com/en-us/learn/modules/choose-storage-approach-in-azure/2-classify-data), memiliki penjelasan rinci tentang data terstruktur, semi-terstruktur, dan tidak terstruktur. + +## Tugas + +[Pengklasifikasian Dataset](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diingat bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/1-Introduction/03-defining-data/assignment.md b/translations/id/1-Introduction/03-defining-data/assignment.md new file mode 100644 index 00000000..1b9aad6b --- /dev/null +++ b/translations/id/1-Introduction/03-defining-data/assignment.md @@ -0,0 +1,79 @@ + +# Mengklasifikasikan Dataset + +## Instruksi + +Ikuti petunjuk dalam tugas ini untuk mengidentifikasi dan mengklasifikasikan data dengan salah satu dari setiap jenis data berikut: + +**Jenis Struktur**: Terstruktur, Semi-Terstruktur, atau Tidak Terstruktur + +**Jenis Nilai**: Kualitatif atau Kuantitatif + +**Jenis Sumber**: Primer atau Sekunder + +1. Sebuah perusahaan telah diakuisisi dan sekarang memiliki perusahaan induk. Para ilmuwan data menerima spreadsheet berisi nomor telepon pelanggan dari perusahaan induk. + +Jenis Struktur: + +Jenis Nilai: + +Jenis Sumber: + +--- + +2. Sebuah jam tangan pintar telah mengumpulkan data detak jantung dari penggunanya, dan data mentahnya dalam format JSON. + +Jenis Struktur: + +Jenis Nilai: + +Jenis Sumber: + +--- + +3. Sebuah survei tempat kerja tentang moral karyawan yang disimpan dalam file CSV. + +Jenis Struktur: + +Jenis Nilai: + +Jenis Sumber: + +--- + +4. Para astrofisikawan mengakses database galaksi yang telah dikumpulkan oleh sebuah wahana antariksa. Data tersebut berisi jumlah planet dalam setiap galaksi. + +Jenis Struktur: + +Jenis Nilai: + +Jenis Sumber: + +--- + +5. Sebuah aplikasi keuangan pribadi menggunakan API untuk terhubung ke akun keuangan pengguna guna menghitung kekayaan bersih mereka. Pengguna dapat melihat semua transaksi mereka dalam format baris dan kolom yang terlihat mirip dengan spreadsheet. + +Jenis Struktur: + +Jenis Nilai: + +Jenis Sumber: + +## Rubrik + +Unggul | Memadai | Perlu Peningkatan +--- | --- | -- | +Mengidentifikasi dengan benar semua struktur, nilai, dan sumber | Mengidentifikasi dengan benar 3 struktur, nilai, dan sumber | Mengidentifikasi dengan benar 2 atau kurang struktur, nilai, dan sumber | + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diketahui bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/1-Introduction/04-stats-and-probability/README.md b/translations/id/1-Introduction/04-stats-and-probability/README.md new file mode 100644 index 00000000..51e455c0 --- /dev/null +++ b/translations/id/1-Introduction/04-stats-and-probability/README.md @@ -0,0 +1,276 @@ + +# Pengantar Singkat tentang Statistik dan Probabilitas + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/04-Statistics-Probability.png)| +|:---:| +| Statistik dan Probabilitas - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +Teori Statistik dan Probabilitas adalah dua cabang Matematika yang sangat berkaitan dan sangat relevan dengan Ilmu Data. Meskipun memungkinkan untuk bekerja dengan data tanpa pengetahuan matematika yang mendalam, tetap lebih baik untuk memahami setidaknya beberapa konsep dasar. Di sini, kami akan memberikan pengantar singkat yang akan membantu Anda memulai. + +[![Video Pengantar](../../../../translated_images/video-prob-and-stats.e4282e5efa2f2543400843ed98b1057065c9600cebfc8a728e8931b5702b2ae4.id.png)](https://youtu.be/Z5Zy85g4Yjw) + +## [Kuis Pra-Kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/6) + +## Probabilitas dan Variabel Acak + +**Probabilitas** adalah angka antara 0 dan 1 yang menyatakan seberapa mungkin suatu **kejadian** terjadi. Probabilitas didefinisikan sebagai jumlah hasil positif (yang mengarah pada kejadian tersebut), dibagi dengan jumlah total hasil, dengan asumsi semua hasil memiliki kemungkinan yang sama. Sebagai contoh, ketika kita melempar dadu, probabilitas mendapatkan angka genap adalah 3/6 = 0,5. + +Ketika kita berbicara tentang kejadian, kita menggunakan **variabel acak**. Sebagai contoh, variabel acak yang mewakili angka yang diperoleh saat melempar dadu akan memiliki nilai dari 1 hingga 6. Kumpulan angka dari 1 hingga 6 disebut **ruang sampel**. Kita dapat berbicara tentang probabilitas variabel acak mengambil nilai tertentu, misalnya P(X=3)=1/6. + +Variabel acak dalam contoh sebelumnya disebut **diskrit**, karena memiliki ruang sampel yang dapat dihitung, yaitu terdapat nilai-nilai terpisah yang dapat dijumlahkan. Ada kasus di mana ruang sampel adalah rentang bilangan real, atau seluruh himpunan bilangan real. Variabel seperti ini disebut **kontinu**. Contoh yang baik adalah waktu kedatangan bus. + +## Distribusi Probabilitas + +Dalam kasus variabel acak diskrit, mudah untuk menggambarkan probabilitas setiap kejadian dengan fungsi P(X). Untuk setiap nilai *s* dari ruang sampel *S*, fungsi ini akan memberikan angka antara 0 dan 1, sehingga jumlah semua nilai P(X=s) untuk semua kejadian adalah 1. + +Distribusi diskrit yang paling dikenal adalah **distribusi uniform**, di mana terdapat ruang sampel dengan N elemen, dengan probabilitas yang sama sebesar 1/N untuk masing-masing elemen. + +Lebih sulit untuk menggambarkan distribusi probabilitas variabel kontinu, dengan nilai-nilai yang diambil dari interval [a,b], atau seluruh himpunan bilangan real ℝ. Pertimbangkan kasus waktu kedatangan bus. Faktanya, untuk setiap waktu kedatangan *t* yang tepat, probabilitas bus tiba tepat pada waktu tersebut adalah 0! + +> Sekarang Anda tahu bahwa kejadian dengan probabilitas 0 bisa terjadi, dan sering kali terjadi! Setidaknya setiap kali bus tiba! + +Kita hanya dapat berbicara tentang probabilitas variabel jatuh dalam interval nilai tertentu, misalnya P(t1≤X2). Dalam kasus ini, distribusi probabilitas dijelaskan oleh **fungsi kepadatan probabilitas** p(x), sehingga + +![P(t_1\le X1, x2, ..., xn. Kita dapat mendefinisikan nilai **rata-rata** (atau **rata-rata aritmatika**) dari urutan tersebut dengan cara tradisional sebagai (x1+x2+xn)/n. Ketika ukuran sampel bertambah besar (yaitu mengambil limit dengan n→∞), kita akan mendapatkan rata-rata (juga disebut **ekspektasi**) dari distribusi. Kita akan menyebut ekspektasi ini sebagai **E**(x). + +> Dapat ditunjukkan bahwa untuk distribusi diskrit apa pun dengan nilai {x1, x2, ..., xN} dan probabilitas yang sesuai p1, p2, ..., pN, ekspektasi akan sama dengan E(X)=x1p1+x2p2+...+xNpN. + +Untuk mengidentifikasi seberapa jauh nilai-nilai tersebar, kita dapat menghitung variansi σ2 = ∑(xi - μ)2/n, di mana μ adalah rata-rata dari urutan tersebut. Nilai σ disebut **simpangan baku**, dan σ2 disebut **variansi**. + +## Modus, Median, dan Kuartil + +Kadang-kadang, rata-rata tidak cukup mewakili nilai "tipikal" untuk data. Misalnya, ketika ada beberapa nilai ekstrem yang benar-benar di luar jangkauan, nilai-nilai tersebut dapat memengaruhi rata-rata. Indikator lain yang baik adalah **median**, yaitu nilai di mana separuh data berada di bawahnya, dan separuh lainnya di atasnya. + +Untuk membantu kita memahami distribusi data, berguna untuk berbicara tentang **kuartil**: + +* Kuartil pertama, atau Q1, adalah nilai di mana 25% data berada di bawahnya +* Kuartil ketiga, atau Q3, adalah nilai di mana 75% data berada di bawahnya + +Secara grafis, kita dapat merepresentasikan hubungan antara median dan kuartil dalam diagram yang disebut **box plot**: + + + +Di sini kita juga menghitung **rentang antar-kuartil** IQR=Q3-Q1, dan yang disebut **outlier** - nilai-nilai yang berada di luar batas [Q1-1.5*IQR,Q3+1.5*IQR]. + +Untuk distribusi terbatas yang mengandung sejumlah kecil nilai yang mungkin, nilai "tipikal" yang baik adalah nilai yang paling sering muncul, yang disebut **modus**. Modus sering diterapkan pada data kategorikal, seperti warna. Pertimbangkan situasi di mana kita memiliki dua kelompok orang - beberapa sangat menyukai warna merah, dan lainnya menyukai warna biru. Jika kita mengkodekan warna dengan angka, nilai rata-rata untuk warna favorit akan berada di spektrum oranye-hijau, yang tidak menunjukkan preferensi sebenarnya dari kedua kelompok. Namun, modus akan menjadi salah satu warna, atau kedua warna, jika jumlah orang yang memilihnya sama (dalam kasus ini kita menyebut sampel tersebut **multimodal**). + +## Data Dunia Nyata + +Ketika kita menganalisis data dari dunia nyata, data tersebut sering kali bukan variabel acak dalam arti bahwa kita tidak melakukan eksperimen dengan hasil yang tidak diketahui. Sebagai contoh, pertimbangkan tim pemain bisbol, dan data tubuh mereka, seperti tinggi, berat, dan usia. Angka-angka tersebut tidak sepenuhnya acak, tetapi kita masih dapat menerapkan konsep matematika yang sama. Sebagai contoh, urutan berat badan orang dapat dianggap sebagai urutan nilai yang diambil dari suatu variabel acak. Di bawah ini adalah urutan berat badan pemain bisbol sebenarnya dari [Major League Baseball](http://mlb.mlb.com/index.jsp), diambil dari [dataset ini](http://wiki.stat.ucla.edu/socr/index.php/SOCR_Data_MLB_HeightsWeights) (untuk kenyamanan Anda, hanya 20 nilai pertama yang ditampilkan): + +``` +[180.0, 215.0, 210.0, 210.0, 188.0, 176.0, 209.0, 200.0, 231.0, 180.0, 188.0, 180.0, 185.0, 160.0, 180.0, 185.0, 197.0, 189.0, 185.0, 219.0] +``` + +> **Catatan**: Untuk melihat contoh bekerja dengan dataset ini, lihat [notebook yang menyertainya](notebook.ipynb). Ada juga sejumlah tantangan sepanjang pelajaran ini, dan Anda dapat menyelesaikannya dengan menambahkan beberapa kode ke notebook tersebut. Jika Anda tidak yakin bagaimana mengoperasikan data, jangan khawatir - kita akan kembali ke cara bekerja dengan data menggunakan Python di waktu mendatang. Jika Anda tidak tahu cara menjalankan kode di Jupyter Notebook, lihat [artikel ini](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). + +Berikut adalah box plot yang menunjukkan rata-rata, median, dan kuartil untuk data kita: + +![Box Plot Berat Badan](../../../../translated_images/weight-boxplot.1dbab1c03af26f8a008fff4e17680082c8ab147d6df646cbac440bbf8f5b9c42.id.png) + +Karena data kita mengandung informasi tentang **peran** pemain yang berbeda, kita juga dapat membuat box plot berdasarkan peran - ini akan memungkinkan kita untuk mendapatkan gambaran tentang bagaimana nilai parameter berbeda di antara peran. Kali ini kita akan mempertimbangkan tinggi badan: + +![Box plot berdasarkan peran](../../../../translated_images/boxplot_byrole.036b27a1c3f52d42f66fba2324ec5cde0a1bca6a01a619eeb0ce7cd054b2527b.id.png) + +Diagram ini menunjukkan bahwa, rata-rata, tinggi pemain basemen pertama lebih tinggi daripada pemain basemen kedua. Nanti dalam pelajaran ini kita akan belajar bagaimana kita dapat menguji hipotesis ini secara lebih formal, dan bagaimana menunjukkan bahwa data kita secara statistik signifikan untuk mendukung hal tersebut. + +> Ketika bekerja dengan data dunia nyata, kita mengasumsikan bahwa semua titik data adalah sampel yang diambil dari suatu distribusi probabilitas. Asumsi ini memungkinkan kita untuk menerapkan teknik pembelajaran mesin dan membangun model prediktif yang berfungsi. + +Untuk melihat distribusi data kita, kita dapat membuat grafik yang disebut **histogram**. Sumbu X akan berisi sejumlah interval berat yang berbeda (disebut **bin**), dan sumbu vertikal akan menunjukkan jumlah sampel variabel acak kita yang berada dalam interval tertentu. + +![Histogram data dunia nyata](../../../../translated_images/weight-histogram.bfd00caf7fc30b145b21e862dba7def41c75635d5280de25d840dd7f0b00545e.id.png) + +Dari histogram ini, Anda dapat melihat bahwa semua nilai terpusat di sekitar berat rata-rata tertentu, dan semakin jauh kita dari berat tersebut - semakin sedikit berat dengan nilai tersebut yang ditemukan. Artinya, sangat tidak mungkin bahwa berat pemain bisbol akan sangat berbeda dari berat rata-rata. Variansi berat menunjukkan sejauh mana berat cenderung berbeda dari rata-rata. + +> Jika kita mengambil berat orang lain, bukan dari liga bisbol, distribusinya kemungkinan akan berbeda. Namun, bentuk distribusinya akan sama, tetapi rata-rata dan variansinya akan berubah. Jadi, jika kita melatih model kita pada pemain bisbol, kemungkinan besar model tersebut akan memberikan hasil yang salah ketika diterapkan pada mahasiswa universitas, karena distribusi dasarnya berbeda. + +## Distribusi Normal + +Distribusi berat yang kita lihat di atas sangat khas, dan banyak pengukuran dari dunia nyata mengikuti jenis distribusi yang sama, tetapi dengan rata-rata dan variansi yang berbeda. Distribusi ini disebut **distribusi normal**, dan memainkan peran yang sangat penting dalam statistik. + +Menggunakan distribusi normal adalah cara yang benar untuk menghasilkan berat acak dari calon pemain bisbol. Setelah kita mengetahui berat rata-rata `mean` dan simpangan baku `std`, kita dapat menghasilkan 1000 sampel berat dengan cara berikut: +```python +samples = np.random.normal(mean,std,1000) +``` + +Jika kita membuat histogram dari sampel yang dihasilkan, kita akan melihat gambar yang sangat mirip dengan yang ditunjukkan di atas. Dan jika kita meningkatkan jumlah sampel dan jumlah bin, kita dapat menghasilkan gambar distribusi normal yang lebih mendekati ideal: + +![Distribusi Normal dengan mean=0 dan std.dev=1](../../../../translated_images/normal-histogram.dfae0d67c202137d552d0015fb87581eca263925e512404f3c12d8885315432e.id.png) + +*Distribusi Normal dengan mean=0 dan std.dev=1* + +## Interval Kepercayaan + +Ketika kita berbicara tentang berat pemain bisbol, kita mengasumsikan bahwa ada **variabel acak W** tertentu yang sesuai dengan distribusi probabilitas ideal dari berat semua pemain bisbol (yang disebut **populasi**). Urutan berat kita sesuai dengan subset dari semua pemain bisbol yang kita sebut **sampel**. Pertanyaan menarik adalah, bisakah kita mengetahui parameter distribusi W, yaitu rata-rata dan variansi populasi? + +Jawaban termudah adalah menghitung rata-rata dan variansi dari sampel kita. Namun, bisa saja sampel acak kita tidak secara akurat mewakili populasi lengkap. Oleh karena itu, masuk akal untuk berbicara tentang **interval kepercayaan**. +> **Interval kepercayaan** adalah estimasi rata-rata sebenarnya dari populasi berdasarkan sampel kita, yang akurat dengan probabilitas tertentu (atau **tingkat kepercayaan**). +Misalkan kita memiliki sampel X1, ..., Xn dari distribusi kita. Setiap kali kita mengambil sampel dari distribusi tersebut, kita akan mendapatkan nilai rata-rata μ yang berbeda. Oleh karena itu, μ dapat dianggap sebagai variabel acak. **Interval kepercayaan** dengan tingkat kepercayaan p adalah sepasang nilai (Lp, Rp), sehingga **P**(Lp≤μ≤Rp) = p, yaitu probabilitas nilai rata-rata yang diukur berada dalam interval tersebut sama dengan p. + +Pembahasan rinci tentang bagaimana interval kepercayaan ini dihitung melampaui pengantar singkat ini. Beberapa detail lebih lanjut dapat ditemukan di [Wikipedia](https://en.wikipedia.org/wiki/Confidence_interval). Secara singkat, kita mendefinisikan distribusi rata-rata sampel yang dihitung relatif terhadap rata-rata sebenarnya dari populasi, yang disebut **distribusi student**. + +> **Fakta menarik**: Distribusi student dinamai dari matematikawan William Sealy Gosset, yang menerbitkan makalahnya dengan nama pena "Student". Ia bekerja di pabrik bir Guinness, dan, menurut salah satu versi, majikannya tidak ingin publik mengetahui bahwa mereka menggunakan uji statistik untuk menentukan kualitas bahan baku. + +Jika kita ingin memperkirakan rata-rata μ dari populasi kita dengan tingkat kepercayaan p, kita perlu mengambil *persentil (1-p)/2* dari distribusi student A, yang dapat diambil dari tabel, atau dihitung menggunakan beberapa fungsi bawaan perangkat lunak statistik (misalnya Python, R, dll.). Kemudian interval untuk μ akan diberikan oleh X±A*D/√n, di mana X adalah rata-rata sampel yang diperoleh, D adalah standar deviasi. + +> **Catatan**: Kami juga mengabaikan pembahasan tentang konsep penting [derajat kebebasan](https://en.wikipedia.org/wiki/Degrees_of_freedom_(statistics)), yang penting dalam kaitannya dengan distribusi student. Anda dapat merujuk pada buku statistik yang lebih lengkap untuk memahami konsep ini lebih dalam. + +Contoh perhitungan interval kepercayaan untuk berat dan tinggi badan diberikan di [notebook pendamping](notebook.ipynb). + +| p | Rata-rata Berat | +|------|-----------------| +| 0.85 | 201.73±0.94 | +| 0.90 | 201.73±1.08 | +| 0.95 | 201.73±1.28 | + +Perhatikan bahwa semakin tinggi probabilitas kepercayaan, semakin lebar interval kepercayaan. + +## Pengujian Hipotesis + +Dalam dataset pemain baseball kita, terdapat berbagai peran pemain, yang dapat dirangkum seperti di bawah ini (lihat [notebook pendamping](notebook.ipynb) untuk melihat bagaimana tabel ini dihitung): + +| Peran | Tinggi | Berat | Jumlah | +|-------------------|----------|----------|--------| +| Catcher | 72.723684| 204.328947| 76 | +| Designated_Hitter | 74.222222| 220.888889| 18 | +| First_Baseman | 74.000000| 213.109091| 55 | +| Outfielder | 73.010309| 199.113402| 194 | +| Relief_Pitcher | 74.374603| 203.517460| 315 | +| Second_Baseman | 71.362069| 184.344828| 58 | +| Shortstop | 71.903846| 182.923077| 52 | +| Starting_Pitcher | 74.719457| 205.163636| 221 | +| Third_Baseman | 73.044444| 200.955556| 45 | + +Kita dapat melihat bahwa rata-rata tinggi pemain first baseman lebih tinggi dibandingkan second baseman. Oleh karena itu, kita mungkin tergoda untuk menyimpulkan bahwa **first baseman lebih tinggi daripada second baseman**. + +> Pernyataan ini disebut **hipotesis**, karena kita tidak tahu apakah fakta tersebut benar atau tidak. + +Namun, tidak selalu jelas apakah kita dapat membuat kesimpulan ini. Dari pembahasan di atas, kita tahu bahwa setiap rata-rata memiliki interval kepercayaan yang terkait, sehingga perbedaan ini mungkin hanya kesalahan statistik. Kita memerlukan cara yang lebih formal untuk menguji hipotesis kita. + +Mari kita hitung interval kepercayaan secara terpisah untuk tinggi first baseman dan second baseman: + +| Kepercayaan | First Baseman | Second Baseman | +|-------------|---------------|----------------| +| 0.85 | 73.62..74.38 | 71.04..71.69 | +| 0.90 | 73.56..74.44 | 70.99..71.73 | +| 0.95 | 73.47..74.53 | 70.92..71.81 | + +Kita dapat melihat bahwa pada tingkat kepercayaan mana pun, interval tidak saling tumpang tindih. Hal ini membuktikan hipotesis kita bahwa first baseman lebih tinggi daripada second baseman. + +Secara lebih formal, masalah yang kita selesaikan adalah untuk melihat apakah **dua distribusi probabilitas sama**, atau setidaknya memiliki parameter yang sama. Bergantung pada distribusinya, kita perlu menggunakan uji yang berbeda untuk itu. Jika kita tahu bahwa distribusi kita normal, kita dapat menerapkan **[Student t-test](https://en.wikipedia.org/wiki/Student%27s_t-test)**. + +Dalam Student t-test, kita menghitung apa yang disebut **t-value**, yang menunjukkan perbedaan antara rata-rata, dengan mempertimbangkan varians. Telah ditunjukkan bahwa t-value mengikuti **distribusi student**, yang memungkinkan kita mendapatkan nilai ambang untuk tingkat kepercayaan tertentu **p** (ini dapat dihitung, atau dilihat di tabel numerik). Kita kemudian membandingkan t-value dengan ambang ini untuk menerima atau menolak hipotesis. + +Dalam Python, kita dapat menggunakan paket **SciPy**, yang mencakup fungsi `ttest_ind` (selain banyak fungsi statistik berguna lainnya!). Fungsi ini menghitung t-value untuk kita, dan juga melakukan pencarian balik nilai p kepercayaan, sehingga kita hanya perlu melihat kepercayaan untuk menarik kesimpulan. + +Sebagai contoh, perbandingan kita antara tinggi first baseman dan second baseman memberikan hasil berikut: +```python +from scipy.stats import ttest_ind + +tval, pval = ttest_ind(df.loc[df['Role']=='First_Baseman',['Height']], df.loc[df['Role']=='Designated_Hitter',['Height']],equal_var=False) +print(f"T-value = {tval[0]:.2f}\nP-value: {pval[0]}") +``` +``` +T-value = 7.65 +P-value: 9.137321189738925e-12 +``` +Dalam kasus kita, nilai p sangat rendah, yang berarti ada bukti kuat yang mendukung bahwa first baseman lebih tinggi. + +Ada juga berbagai jenis hipotesis lain yang mungkin ingin kita uji, misalnya: +* Membuktikan bahwa sampel tertentu mengikuti distribusi tertentu. Dalam kasus kita, kita mengasumsikan bahwa tinggi badan terdistribusi normal, tetapi itu memerlukan verifikasi statistik formal. +* Membuktikan bahwa nilai rata-rata sampel sesuai dengan nilai yang telah ditentukan sebelumnya. +* Membandingkan rata-rata dari sejumlah sampel (misalnya, perbedaan tingkat kebahagiaan di antara kelompok usia yang berbeda). + +## Hukum Bilangan Besar dan Teorema Limit Sentral + +Salah satu alasan mengapa distribusi normal sangat penting adalah **teorema limit sentral**. Misalkan kita memiliki sampel besar dari N nilai independen X1, ..., XN, yang diambil dari distribusi apa pun dengan rata-rata μ dan varians σ2. Kemudian, untuk N yang cukup besar (dengan kata lain, ketika N→∞), rata-rata ΣiXi akan terdistribusi normal, dengan rata-rata μ dan varians σ2/N. + +> Cara lain untuk menafsirkan teorema limit sentral adalah mengatakan bahwa terlepas dari distribusinya, ketika Anda menghitung rata-rata dari jumlah nilai variabel acak apa pun, Anda akan mendapatkan distribusi normal. + +Dari teorema limit sentral juga mengikuti bahwa, ketika N→∞, probabilitas rata-rata sampel sama dengan μ menjadi 1. Ini dikenal sebagai **hukum bilangan besar**. + +## Kovarians dan Korelasi + +Salah satu hal yang dilakukan Data Science adalah menemukan hubungan antara data. Kita mengatakan bahwa dua deret **berkorelasi** ketika mereka menunjukkan perilaku serupa pada waktu yang sama, yaitu mereka naik/turun secara bersamaan, atau satu deret naik ketika deret lainnya turun dan sebaliknya. Dengan kata lain, tampaknya ada hubungan antara dua deret. + +> Korelasi tidak selalu menunjukkan hubungan sebab-akibat antara dua deret; terkadang kedua variabel dapat bergantung pada penyebab eksternal, atau bisa jadi murni kebetulan bahwa dua deret berkorelasi. Namun, korelasi matematis yang kuat adalah indikasi baik bahwa dua variabel tersebut saling terkait. + +Secara matematis, konsep utama yang menunjukkan hubungan antara dua variabel acak adalah **kovarians**, yang dihitung seperti ini: Cov(X,Y) = **E**\[(X-**E**(X))(Y-**E**(Y))\]. Kita menghitung deviasi kedua variabel dari nilai rata-rata mereka, dan kemudian mengalikan deviasi tersebut. Jika kedua variabel menyimpang bersama, hasil perkalian akan selalu bernilai positif, yang akan menambah kovarians positif. Jika kedua variabel menyimpang tidak sinkron (yaitu satu turun di bawah rata-rata ketika yang lain naik di atas rata-rata), kita akan selalu mendapatkan angka negatif, yang akan menambah kovarians negatif. Jika deviasi tidak saling bergantung, mereka akan menambah sekitar nol. + +Nilai absolut kovarians tidak banyak memberi tahu kita tentang seberapa besar korelasi, karena itu bergantung pada besarnya nilai sebenarnya. Untuk menormalkannya, kita dapat membagi kovarians dengan standar deviasi kedua variabel, untuk mendapatkan **korelasi**. Hal baiknya adalah bahwa korelasi selalu berada dalam rentang [-1,1], di mana 1 menunjukkan korelasi positif yang kuat antara nilai, -1 menunjukkan korelasi negatif yang kuat, dan 0 menunjukkan tidak ada korelasi sama sekali (variabel independen). + +**Contoh**: Kita dapat menghitung korelasi antara berat dan tinggi pemain baseball dari dataset yang disebutkan di atas: +```python +print(np.corrcoef(weights,heights)) +``` +Hasilnya, kita mendapatkan **matriks korelasi** seperti ini: +``` +array([[1. , 0.52959196], + [0.52959196, 1. ]]) +``` + +> Matriks korelasi C dapat dihitung untuk sejumlah deret input S1, ..., Sn. Nilai Cij adalah korelasi antara Si dan Sj, dan elemen diagonal selalu 1 (yang juga merupakan korelasi diri dari Si). + +Dalam kasus kita, nilai 0.53 menunjukkan bahwa ada beberapa korelasi antara berat dan tinggi seseorang. Kita juga dapat membuat scatter plot dari satu nilai terhadap nilai lainnya untuk melihat hubungan secara visual: + +![Hubungan antara berat dan tinggi](../../../../translated_images/weight-height-relationship.3f06bde4ca2aba9974182c4ef037ed602acd0fbbbbe2ca91cefd838a9e66bcf9.id.png) + +> Lebih banyak contoh korelasi dan kovarians dapat ditemukan di [notebook pendamping](notebook.ipynb). + +## Kesimpulan + +Dalam bagian ini, kita telah mempelajari: + +* sifat statistik dasar data, seperti rata-rata, varians, modus, dan kuartil +* berbagai distribusi variabel acak, termasuk distribusi normal +* cara menemukan korelasi antara berbagai properti +* cara menggunakan perangkat matematika dan statistik untuk membuktikan beberapa hipotesis +* cara menghitung interval kepercayaan untuk variabel acak berdasarkan sampel data + +Meskipun ini jelas bukan daftar lengkap topik yang ada dalam probabilitas dan statistik, ini seharusnya cukup untuk memberi Anda awal yang baik dalam kursus ini. + +## 🚀 Tantangan + +Gunakan kode sampel di notebook untuk menguji hipotesis lain bahwa: +1. First baseman lebih tua daripada second baseman +2. First baseman lebih tinggi daripada third baseman +3. Shortstop lebih tinggi daripada second baseman + +## [Kuis setelah kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/7) + +## Tinjauan & Studi Mandiri + +Probabilitas dan statistik adalah topik yang sangat luas sehingga layak mendapatkan kursus tersendiri. Jika Anda tertarik untuk mendalami teori, Anda mungkin ingin melanjutkan membaca beberapa buku berikut: + +1. [Carlos Fernandez-Granda](https://cims.nyu.edu/~cfgranda/) dari New York University memiliki catatan kuliah yang bagus [Probability and Statistics for Data Science](https://cims.nyu.edu/~cfgranda/pages/stuff/probability_stats_for_DS.pdf) (tersedia online) +1. [Peter dan Andrew Bruce. Practical Statistics for Data Scientists.](https://www.oreilly.com/library/view/practical-statistics-for/9781491952955/) [[kode sampel dalam R](https://github.com/andrewgbruce/statistics-for-data-scientists)]. +1. [James D. Miller. Statistics for Data Science](https://www.packtpub.com/product/statistics-for-data-science/9781788290678) [[kode sampel dalam R](https://github.com/PacktPublishing/Statistics-for-Data-Science)] + +## Tugas + +[Studi Diabetes Kecil](assignment.md) + +## Kredit + +Pelajaran ini telah dibuat dengan ♥️ oleh [Dmitry Soshnikov](http://soshnikov.com) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diketahui bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/1-Introduction/04-stats-and-probability/assignment.md b/translations/id/1-Introduction/04-stats-and-probability/assignment.md new file mode 100644 index 00000000..d568a615 --- /dev/null +++ b/translations/id/1-Introduction/04-stats-and-probability/assignment.md @@ -0,0 +1,40 @@ + +# Studi Kecil tentang Diabetes + +Dalam tugas ini, kita akan bekerja dengan dataset kecil pasien diabetes yang diambil dari [sini](https://www4.stat.ncsu.edu/~boos/var.select/diabetes.html). + +| | USIA | JENIS KELAMIN | BMI | TEKANAN DARAH | S1 | S2 | S3 | S4 | S5 | S6 | Y | +|---|-----|---------------|-----|---------------|----|----|----|----|----|----|----| +| 0 | 59 | 2 | 32.1 | 101. | 157 | 93.2 | 38.0 | 4. | 4.8598 | 87 | 151 | +| 1 | 48 | 1 | 21.6 | 87.0 | 183 | 103.2 | 70. | 3. | 3.8918 | 69 | 75 | +| 2 | 72 | 2 | 30.5 | 93.0 | 156 | 93.6 | 41.0 | 4.0 | 4. | 85 | 141 | +| ... | ... | ... | ... | ...| ...| ...| ...| ...| ...| ...| ... | + +## Instruksi + +* Buka [notebook tugas](assignment.ipynb) di lingkungan jupyter notebook +* Selesaikan semua tugas yang tercantum di dalam notebook, yaitu: + * [ ] Hitung nilai rata-rata dan varians untuk semua nilai + * [ ] Buat boxplot untuk BMI, Tekanan Darah, dan Y berdasarkan jenis kelamin + * [ ] Bagaimana distribusi variabel Usia, Jenis Kelamin, BMI, dan Y? + * [ ] Uji korelasi antara berbagai variabel dan perkembangan penyakit (Y) + * [ ] Uji hipotesis bahwa tingkat perkembangan diabetes berbeda antara pria dan wanita + +## Rubrik + +Unggul | Memadai | Perlu Perbaikan +--- | --- | -- | +Semua tugas yang diminta selesai, diilustrasikan secara grafis, dan dijelaskan | Sebagian besar tugas selesai, penjelasan atau kesimpulan dari grafik dan/atau nilai yang diperoleh hilang | Hanya tugas dasar seperti perhitungan rata-rata/varians dan plot dasar yang selesai, tidak ada kesimpulan yang dibuat dari data + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diingat bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/1-Introduction/README.md b/translations/id/1-Introduction/README.md new file mode 100644 index 00000000..08534541 --- /dev/null +++ b/translations/id/1-Introduction/README.md @@ -0,0 +1,31 @@ + +# Pengantar Ilmu Data + +![data in action](../../../translated_images/data.48e22bb7617d8d92188afbc4c48effb920ba79f5cebdc0652cd9f34bbbd90c18.id.jpg) +> Foto oleh Stephen Dawson di Unsplash + +Dalam pelajaran ini, Anda akan mempelajari bagaimana Ilmu Data didefinisikan dan memahami pertimbangan etika yang harus diperhatikan oleh seorang ilmuwan data. Anda juga akan belajar bagaimana data didefinisikan serta sedikit tentang statistik dan probabilitas, yang merupakan bidang akademik inti dari Ilmu Data. + +### Topik + +1. [Mendefinisikan Ilmu Data](01-defining-data-science/README.md) +2. [Etika Ilmu Data](02-ethics/README.md) +3. [Mendefinisikan Data](03-defining-data/README.md) +4. [Pengantar Statistik dan Probabilitas](04-stats-and-probability/README.md) + +### Kredit + +Pelajaran ini ditulis dengan ❤️ oleh [Nitya Narasimhan](https://twitter.com/nitya) dan [Dmitry Soshnikov](https://twitter.com/shwars). + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diingat bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/2-Working-With-Data/05-relational-databases/README.md b/translations/id/2-Working-With-Data/05-relational-databases/README.md new file mode 100644 index 00000000..acd0d24e --- /dev/null +++ b/translations/id/2-Working-With-Data/05-relational-databases/README.md @@ -0,0 +1,195 @@ + +# Bekerja dengan Data: Basis Data Relasional + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/05-RelationalData.png)| +|:---:| +| Bekerja dengan Data: Basis Data Relasional - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +Kemungkinan besar Anda pernah menggunakan spreadsheet sebelumnya untuk menyimpan informasi. Anda memiliki kumpulan baris dan kolom, di mana baris berisi informasi (atau data), dan kolom menjelaskan informasi tersebut (kadang disebut metadata). Basis data relasional dibangun berdasarkan prinsip inti kolom dan baris dalam tabel, memungkinkan Anda memiliki informasi yang tersebar di beberapa tabel. Hal ini memungkinkan Anda bekerja dengan data yang lebih kompleks, menghindari duplikasi, dan memiliki fleksibilitas dalam mengeksplorasi data. Mari kita jelajahi konsep-konsep basis data relasional. + +## [Kuis sebelum kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/8) + +## Semuanya dimulai dengan tabel + +Basis data relasional memiliki inti berupa tabel. Sama seperti spreadsheet, tabel adalah kumpulan kolom dan baris. Baris berisi data atau informasi yang ingin kita gunakan, seperti nama kota atau jumlah curah hujan. Kolom menjelaskan data yang mereka simpan. + +Mari kita mulai eksplorasi dengan membuat tabel untuk menyimpan informasi tentang kota. Kita mungkin memulai dengan nama dan negara mereka. Anda dapat menyimpan ini dalam tabel seperti berikut: + +| Kota | Negara | +| -------- | ------------- | +| Tokyo | Jepang | +| Atlanta | Amerika Serikat | +| Auckland | Selandia Baru | + +Perhatikan nama kolom **kota**, **negara**, dan **populasi** yang menjelaskan data yang disimpan, dan setiap baris memiliki informasi tentang satu kota. + +## Kelemahan pendekatan tabel tunggal + +Kemungkinan besar, tabel di atas tampak cukup familiar bagi Anda. Mari kita mulai menambahkan beberapa data tambahan ke basis data kita yang sedang berkembang - curah hujan tahunan (dalam milimeter). Kita akan fokus pada tahun 2018, 2019, dan 2020. Jika kita menambahkannya untuk Tokyo, mungkin akan terlihat seperti ini: + +| Kota | Negara | Tahun | Jumlah | +| ----- | ------- | ---- | ------ | +| Tokyo | Jepang | 2020 | 1690 | +| Tokyo | Jepang | 2019 | 1874 | +| Tokyo | Jepang | 2018 | 1445 | + +Apa yang Anda perhatikan tentang tabel kita? Anda mungkin menyadari bahwa kita menduplikasi nama dan negara kota berulang kali. Hal ini dapat memakan cukup banyak ruang penyimpanan, dan sebagian besar tidak perlu memiliki banyak salinan. Bagaimanapun, Tokyo hanya memiliki satu nama yang kita minati. + +Baiklah, mari kita coba sesuatu yang lain. Mari kita tambahkan kolom baru untuk setiap tahun: + +| Kota | Negara | 2018 | 2019 | 2020 | +| -------- | ------------- | ---- | ---- | ---- | +| Tokyo | Jepang | 1445 | 1874 | 1690 | +| Atlanta | Amerika Serikat | 1779 | 1111 | 1683 | +| Auckland | Selandia Baru | 1386 | 942 | 1176 | + +Meskipun ini menghindari duplikasi baris, hal ini menambahkan beberapa tantangan lainnya. Kita perlu memodifikasi struktur tabel kita setiap kali ada tahun baru. Selain itu, saat data kita bertambah, memiliki tahun sebagai kolom akan membuatnya lebih sulit untuk mengambil dan menghitung nilai. + +Inilah mengapa kita membutuhkan beberapa tabel dan hubungan. Dengan memecah data kita, kita dapat menghindari duplikasi dan memiliki lebih banyak fleksibilitas dalam cara kita bekerja dengan data. + +## Konsep hubungan + +Mari kita kembali ke data kita dan tentukan bagaimana kita ingin memisahkannya. Kita tahu kita ingin menyimpan nama dan negara untuk kota-kota kita, jadi ini mungkin paling baik disimpan dalam satu tabel. + +| Kota | Negara | +| -------- | ------------- | +| Tokyo | Jepang | +| Atlanta | Amerika Serikat | +| Auckland | Selandia Baru | + +Namun sebelum kita membuat tabel berikutnya, kita perlu mencari cara untuk merujuk setiap kota. Kita membutuhkan semacam pengidentifikasi, ID atau (dalam istilah basis data teknis) kunci utama. Kunci utama adalah nilai yang digunakan untuk mengidentifikasi satu baris spesifik dalam tabel. Meskipun ini bisa didasarkan pada nilai itu sendiri (kita bisa menggunakan nama kota, misalnya), hampir selalu harus berupa angka atau pengidentifikasi lainnya. Kita tidak ingin ID pernah berubah karena akan merusak hubungan. Anda akan menemukan dalam banyak kasus kunci utama atau ID akan berupa angka yang dihasilkan secara otomatis. + +> ✅ Kunci utama sering disingkat sebagai PK + +### kota + +| kota_id | Kota | Negara | +| ------- | -------- | ------------- | +| 1 | Tokyo | Jepang | +| 2 | Atlanta | Amerika Serikat | +| 3 | Auckland | Selandia Baru | + +> ✅ Anda akan melihat bahwa kita menggunakan istilah "id" dan "kunci utama" secara bergantian selama pelajaran ini. Konsep-konsep ini berlaku untuk DataFrames, yang akan Anda eksplorasi nanti. DataFrames tidak menggunakan terminologi "kunci utama", namun Anda akan melihat bahwa mereka berperilaku hampir sama. + +Dengan tabel kota kita dibuat, mari kita simpan data curah hujan. Daripada menduplikasi informasi lengkap tentang kota, kita dapat menggunakan ID. Kita juga harus memastikan tabel yang baru dibuat memiliki kolom *id* juga, karena semua tabel harus memiliki ID atau kunci utama. + +### curah_hujan + +| curah_hujan_id | kota_id | Tahun | Jumlah | +| -------------- | ------- | ---- | ------ | +| 1 | 1 | 2018 | 1445 | +| 2 | 1 | 2019 | 1874 | +| 3 | 1 | 2020 | 1690 | +| 4 | 2 | 2018 | 1779 | +| 5 | 2 | 2019 | 1111 | +| 6 | 2 | 2020 | 1683 | +| 7 | 3 | 2018 | 1386 | +| 8 | 3 | 2019 | 942 | +| 9 | 3 | 2020 | 1176 | + +Perhatikan kolom **kota_id** di dalam tabel **curah_hujan** yang baru dibuat. Kolom ini berisi nilai-nilai yang merujuk pada ID di tabel **kota**. Dalam istilah data relasional teknis, ini disebut **kunci asing**; ini adalah kunci utama dari tabel lain. Anda dapat menganggapnya sebagai referensi atau penunjuk. **kota_id** 1 merujuk ke Tokyo. + +> [!NOTE] Kunci asing sering disingkat sebagai FK + +## Mengambil data + +Dengan data kita dipisahkan ke dalam dua tabel, Anda mungkin bertanya-tanya bagaimana cara mengambilnya. Jika kita menggunakan basis data relasional seperti MySQL, SQL Server, atau Oracle, kita dapat menggunakan bahasa yang disebut Structured Query Language atau SQL. SQL (kadang diucapkan "sequel") adalah bahasa standar yang digunakan untuk mengambil dan memodifikasi data dalam basis data relasional. + +Untuk mengambil data, Anda menggunakan perintah `SELECT`. Pada intinya, Anda **memilih** kolom yang ingin Anda lihat **dari** tabel tempat mereka berada. Jika Anda ingin menampilkan hanya nama-nama kota, Anda dapat menggunakan perintah berikut: + +```sql +SELECT city +FROM cities; + +-- Output: +-- Tokyo +-- Atlanta +-- Auckland +``` + +`SELECT` adalah tempat Anda mencantumkan kolom, dan `FROM` adalah tempat Anda mencantumkan tabel. + +> [NOTE] Sintaks SQL tidak peka huruf besar-kecil, artinya `select` dan `SELECT` memiliki arti yang sama. Namun, tergantung pada jenis basis data yang Anda gunakan, kolom dan tabel mungkin peka huruf besar-kecil. Akibatnya, praktik terbaik adalah selalu memperlakukan semuanya dalam pemrograman seolah-olah peka huruf besar-kecil. Saat menulis kueri SQL, konvensi umum adalah menulis kata kunci dalam huruf besar semua. + +Kueri di atas akan menampilkan semua kota. Bayangkan kita hanya ingin menampilkan kota-kota di Selandia Baru. Kita membutuhkan semacam filter. Kata kunci SQL untuk ini adalah `WHERE`, atau "di mana sesuatu benar". + +```sql +SELECT city +FROM cities +WHERE country = 'New Zealand'; + +-- Output: +-- Auckland +``` + +## Menggabungkan data + +Sampai sekarang kita telah mengambil data dari satu tabel. Sekarang kita ingin menggabungkan data dari **kota** dan **curah_hujan**. Ini dilakukan dengan *menggabungkan* mereka bersama. Anda pada dasarnya akan membuat sambungan antara dua tabel, dan mencocokkan nilai-nilai dari kolom dari masing-masing tabel. + +Dalam contoh kita, kita akan mencocokkan kolom **kota_id** di **curah_hujan** dengan kolom **kota_id** di **kota**. Ini akan mencocokkan nilai curah hujan dengan kota masing-masing. Jenis penggabungan yang akan kita lakukan disebut *inner join*, artinya jika ada baris yang tidak cocok dengan apa pun dari tabel lain, mereka tidak akan ditampilkan. Dalam kasus kita, setiap kota memiliki data curah hujan, jadi semuanya akan ditampilkan. + +Mari kita ambil data curah hujan untuk tahun 2019 untuk semua kota kita. + +Kita akan melakukannya secara bertahap. Langkah pertama adalah menggabungkan data bersama dengan menunjukkan kolom untuk sambungan - **kota_id** seperti yang disorot sebelumnya. + +```sql +SELECT cities.city + rainfall.amount +FROM cities + INNER JOIN rainfall ON cities.city_id = rainfall.city_id +``` + +Kita telah menyoroti dua kolom yang kita inginkan, dan fakta bahwa kita ingin menggabungkan tabel bersama dengan **kota_id**. Sekarang kita dapat menambahkan pernyataan `WHERE` untuk memfilter hanya tahun 2019. + +```sql +SELECT cities.city + rainfall.amount +FROM cities + INNER JOIN rainfall ON cities.city_id = rainfall.city_id +WHERE rainfall.year = 2019 + +-- Output + +-- city | amount +-- -------- | ------ +-- Tokyo | 1874 +-- Atlanta | 1111 +-- Auckland | 942 +``` + +## Ringkasan + +Basis data relasional berpusat pada pembagian informasi di antara beberapa tabel yang kemudian digabungkan kembali untuk ditampilkan dan dianalisis. Ini memberikan tingkat fleksibilitas yang tinggi untuk melakukan perhitungan dan memanipulasi data. Anda telah melihat konsep inti dari basis data relasional, dan bagaimana melakukan penggabungan antara dua tabel. + +## 🚀 Tantangan + +Ada banyak basis data relasional yang tersedia di internet. Anda dapat menjelajahi data dengan menggunakan keterampilan yang telah Anda pelajari di atas. + +## Kuis setelah kuliah + +## [Kuis setelah kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/9) + +## Tinjauan & Studi Mandiri + +Ada beberapa sumber daya yang tersedia di [Microsoft Learn](https://docs.microsoft.com/learn?WT.mc_id=academic-77958-bethanycheum) untuk melanjutkan eksplorasi Anda tentang konsep SQL dan basis data relasional + +- [Deskripsikan konsep data relasional](https://docs.microsoft.com//learn/modules/describe-concepts-of-relational-data?WT.mc_id=academic-77958-bethanycheum) +- [Mulai Query dengan Transact-SQL](https://docs.microsoft.com//learn/paths/get-started-querying-with-transact-sql?WT.mc_id=academic-77958-bethanycheum) (Transact-SQL adalah versi SQL) +- [Konten SQL di Microsoft Learn](https://docs.microsoft.com/learn/browse/?products=azure-sql-database%2Csql-server&expanded=azure&WT.mc_id=academic-77958-bethanycheum) + +## Tugas + +[Judul Tugas](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau interpretasi yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/2-Working-With-Data/05-relational-databases/assignment.md b/translations/id/2-Working-With-Data/05-relational-databases/assignment.md new file mode 100644 index 00000000..39159b23 --- /dev/null +++ b/translations/id/2-Working-With-Data/05-relational-databases/assignment.md @@ -0,0 +1,73 @@ + +# Menampilkan data bandara + +Anda telah diberikan sebuah [database](https://raw.githubusercontent.com/Microsoft/Data-Science-For-Beginners/main/2-Working-With-Data/05-relational-databases/airports.db) yang dibangun menggunakan [SQLite](https://sqlite.org/index.html) yang berisi informasi tentang bandara. Skema database ditampilkan di bawah ini. Anda akan menggunakan [ekstensi SQLite](https://marketplace.visualstudio.com/items?itemName=alexcvzz.vscode-sqlite&WT.mc_id=academic-77958-bethanycheum) di [Visual Studio Code](https://code.visualstudio.com?WT.mc_id=academic-77958-bethanycheum) untuk menampilkan informasi tentang bandara di berbagai kota. + +## Instruksi + +Untuk memulai tugas ini, Anda perlu melakukan beberapa langkah. Anda perlu menginstal beberapa alat dan mengunduh database contoh. + +### Siapkan sistem Anda + +Anda dapat menggunakan Visual Studio Code dan ekstensi SQLite untuk berinteraksi dengan database. + +1. Kunjungi [code.visualstudio.com](https://code.visualstudio.com?WT.mc_id=academic-77958-bethanycheum) dan ikuti instruksi untuk menginstal Visual Studio Code +1. Instal ekstensi [SQLite extension](https://marketplace.visualstudio.com/items?itemName=alexcvzz.vscode-sqlite&WT.mc_id=academic-77958-bethanycheum) seperti yang dijelaskan di halaman Marketplace + +### Unduh dan buka database + +Selanjutnya, Anda akan mengunduh dan membuka database. + +1. Unduh [file database dari GitHub](https://raw.githubusercontent.com/Microsoft/Data-Science-For-Beginners/main/2-Working-With-Data/05-relational-databases/airports.db) dan simpan ke direktori +1. Buka Visual Studio Code +1. Buka database di ekstensi SQLite dengan memilih **Ctl-Shift-P** (atau **Cmd-Shift-P** di Mac) dan mengetik `SQLite: Open database` +1. Pilih **Choose database from file** dan buka file **airports.db** yang telah Anda unduh sebelumnya +1. Setelah membuka database (tidak akan ada pembaruan yang terlihat di layar), buat jendela query baru dengan memilih **Ctl-Shift-P** (atau **Cmd-Shift-P** di Mac) dan mengetik `SQLite: New query` + +Setelah terbuka, jendela query baru dapat digunakan untuk menjalankan pernyataan SQL terhadap database. Anda dapat menggunakan perintah **Ctl-Shift-Q** (atau **Cmd-Shift-Q** di Mac) untuk menjalankan query terhadap database. + +> [!NOTE] Untuk informasi lebih lanjut tentang ekstensi SQLite, Anda dapat melihat [dokumentasi](https://marketplace.visualstudio.com/items?itemName=alexcvzz.vscode-sqlite&WT.mc_id=academic-77958-bethanycheum) + +## Skema database + +Skema database adalah desain dan struktur tabelnya. Database **airports** memiliki dua tabel, `cities`, yang berisi daftar kota di Inggris dan Irlandia, dan `airports`, yang berisi daftar semua bandara. Karena beberapa kota mungkin memiliki lebih dari satu bandara, dua tabel dibuat untuk menyimpan informasi tersebut. Dalam latihan ini, Anda akan menggunakan join untuk menampilkan informasi dari berbagai kota. + +| Cities | +| ---------------- | +| id (PK, integer) | +| city (text) | +| country (text) | + +| Airports | +| -------------------------------- | +| id (PK, integer) | +| name (text) | +| code (text) | +| city_id (FK to id in **Cities**) | + +## Tugas + +Buat query untuk mengembalikan informasi berikut: + +1. semua nama kota dalam tabel `Cities` +1. semua kota di Irlandia dalam tabel `Cities` +1. semua nama bandara beserta kota dan negaranya +1. semua bandara di London, Inggris + +## Rubrik + +| Unggul | Memadai | Perlu Perbaikan | +| ---------- | --------- | --------------- | + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/2-Working-With-Data/06-non-relational/README.md b/translations/id/2-Working-With-Data/06-non-relational/README.md new file mode 100644 index 00000000..86025118 --- /dev/null +++ b/translations/id/2-Working-With-Data/06-non-relational/README.md @@ -0,0 +1,158 @@ + +# Bekerja dengan Data: Data Non-Relasional + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/06-NoSQL.png)| +|:---:| +|Bekerja dengan Data NoSQL - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +## [Kuis Pra-Pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/10) + +Data tidak terbatas pada basis data relasional. Pelajaran ini berfokus pada data non-relasional dan akan mencakup dasar-dasar spreadsheet dan NoSQL. + +## Spreadsheet + +Spreadsheet adalah cara yang populer untuk menyimpan dan mengeksplorasi data karena memerlukan sedikit usaha untuk memulai. Dalam pelajaran ini, Anda akan mempelajari komponen dasar dari spreadsheet, serta rumus dan fungsi. Contoh akan diilustrasikan dengan Microsoft Excel, tetapi sebagian besar bagian dan topik akan memiliki nama dan langkah yang serupa dibandingkan dengan perangkat lunak spreadsheet lainnya. + +![Sebuah workbook Microsoft Excel kosong dengan dua lembar kerja](../../../../translated_images/parts-of-spreadsheet.120711c82aa18a45c3e62a491a15bba0a31ab0e9db407ec022702fed8ffd89bf.id.png) + +Spreadsheet adalah file yang dapat diakses di sistem file komputer, perangkat, atau sistem file berbasis cloud. Perangkat lunaknya sendiri mungkin berbasis browser atau aplikasi yang harus diinstal di komputer atau diunduh sebagai aplikasi. Di Excel, file ini juga disebut sebagai **workbook**, dan istilah ini akan digunakan sepanjang pelajaran ini. + +Workbook berisi satu atau lebih **worksheet**, di mana setiap worksheet diberi label dengan tab. Di dalam worksheet terdapat persegi panjang yang disebut **cell**, yang akan berisi data aktual. Cell adalah perpotongan antara baris dan kolom, di mana kolom diberi label dengan karakter alfabet dan baris diberi label numerik. Beberapa spreadsheet akan berisi header di beberapa baris pertama untuk menjelaskan data dalam cell. + +Dengan elemen dasar workbook Excel ini, kita akan menggunakan contoh dari [Microsoft Templates](https://templates.office.com/) yang berfokus pada inventaris untuk menjelajahi beberapa bagian tambahan dari spreadsheet. + +### Mengelola Inventaris + +File spreadsheet bernama "InventoryExample" adalah spreadsheet yang diformat berisi item dalam inventaris yang memiliki tiga worksheet, di mana tab diberi label "Inventory List", "Inventory Pick List", dan "Bin Lookup". Baris 4 dari worksheet Inventory List adalah header, yang menjelaskan nilai dari setiap cell di kolom header. + +![Formula yang disorot dari daftar inventaris contoh di Microsoft Excel](../../../../translated_images/formula-excel.ad1068c220892f5ead570d12f2394897961d31a5043a1dd4e6fc5d7690c7a14e.id.png) + +Ada kasus di mana sebuah cell bergantung pada nilai dari cell lain untuk menghasilkan nilainya. Spreadsheet Inventory List melacak biaya setiap item dalam inventarisnya, tetapi bagaimana jika kita perlu mengetahui nilai keseluruhan inventaris? [**Formula**](https://support.microsoft.com/en-us/office/overview-of-formulas-34519a4e-1e8d-4f4b-84d4-d642c4f63263) melakukan tindakan pada data cell dan digunakan untuk menghitung nilai inventaris dalam contoh ini. Spreadsheet ini menggunakan formula di kolom Inventory Value untuk menghitung nilai setiap item dengan mengalikan jumlah di bawah header QTY dan biayanya di bawah header COST. Dengan mengklik dua kali atau menyorot sebuah cell, Anda akan melihat formula. Anda akan melihat bahwa formula dimulai dengan tanda sama dengan, diikuti oleh perhitungan atau operasi. + +![Fungsi yang disorot dari daftar inventaris contoh di Microsoft Excel](../../../../translated_images/function-excel.be2ae4feddc10ca089f3d4363040d93b7fd046c8d4f83ba975ec46483ee99895.id.png) + +Kita dapat menggunakan formula lain untuk menambahkan semua nilai dari Inventory Value untuk mendapatkan totalnya. Ini dapat dihitung dengan menambahkan setiap cell untuk menghasilkan jumlah, tetapi itu bisa menjadi tugas yang membosankan. Excel memiliki [**fungsi**](https://support.microsoft.com/en-us/office/sum-function-043e1c7d-7726-4e80-8f32-07b23e057f89), atau formula yang telah ditentukan untuk melakukan perhitungan pada nilai cell. Fungsi memerlukan argumen, yaitu nilai yang diperlukan untuk melakukan perhitungan ini. Ketika fungsi memerlukan lebih dari satu argumen, mereka harus dicantumkan dalam urutan tertentu atau fungsi mungkin tidak menghitung nilai yang benar. Contoh ini menggunakan fungsi SUM, dan menggunakan nilai dari Inventory Value sebagai argumen untuk menghasilkan total yang tercantum di bawah baris 3, kolom B (juga disebut B3). + +## NoSQL + +NoSQL adalah istilah umum untuk berbagai cara menyimpan data non-relasional dan dapat diartikan sebagai "non-SQL", "non-relasional", atau "tidak hanya SQL". Sistem basis data jenis ini dapat dikategorikan menjadi 4 jenis. + +![Representasi grafis dari penyimpanan data key-value yang menunjukkan 4 kunci numerik unik yang terkait dengan 4 nilai yang berbeda](../../../../translated_images/kv-db.e8f2b75686bbdfcba0c827b9272c10ae0821611ea0fe98429b9d13194383afa6.id.png) +> Sumber dari [Blog Michał Białecki](https://www.michalbialecki.com/2018/03/18/azure-cosmos-db-key-value-database-cloud/) + +Basis data [Key-value](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data#keyvalue-data-stores) memasangkan kunci unik, yang merupakan pengidentifikasi unik yang terkait dengan nilai. Pasangan ini disimpan menggunakan [hash table](https://www.hackerearth.com/practice/data-structures/hash-tables/basics-of-hash-tables/tutorial/) dengan fungsi hashing yang sesuai. + +![Representasi grafis dari penyimpanan data graph yang menunjukkan hubungan antara orang, minat mereka, dan lokasi](../../../../translated_images/graph-db.d13629152f79a9dac895b20fa7d841d4d4d6f6008b1382227c3bbd200fd4cfa1.id.png) +> Sumber dari [Microsoft](https://docs.microsoft.com/en-us/azure/cosmos-db/graph/graph-introduction#graph-database-by-example) + +Basis data [Graph](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data#graph-data-stores) menggambarkan hubungan dalam data dan direpresentasikan sebagai kumpulan node dan edge. Node mewakili entitas, sesuatu yang ada di dunia nyata seperti siswa atau laporan bank. Edge mewakili hubungan antara dua entitas. Setiap node dan edge memiliki properti yang memberikan informasi tambahan tentang masing-masing node dan edge. + +![Representasi grafis dari penyimpanan data kolom yang menunjukkan basis data pelanggan dengan dua keluarga kolom bernama Identity dan Contact Info](../../../../translated_images/columnar-db.ffcfe73c3e9063a8c8f93f8ace85e1200863584b1e324eb5159d8ca10f62ec04.id.png) + +Basis data [Columnar](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data#columnar-data-stores) mengorganisasi data ke dalam kolom dan baris seperti struktur data relasional tetapi setiap kolom dibagi menjadi kelompok yang disebut keluarga kolom, di mana semua data di bawah satu kolom terkait dan dapat diambil serta diubah dalam satu unit. + +### Penyimpanan Data Dokumen dengan Azure Cosmos DB + +Basis data [Dokumen](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data#document-data-stores) membangun konsep penyimpanan data key-value dan terdiri dari serangkaian field dan objek. Bagian ini akan mengeksplorasi basis data dokumen dengan emulator Cosmos DB. + +Basis data Cosmos DB sesuai dengan definisi "Tidak Hanya SQL", di mana basis data dokumen Cosmos DB bergantung pada SQL untuk melakukan query data. [Pelajaran sebelumnya](../05-relational-databases/README.md) tentang SQL mencakup dasar-dasar bahasa tersebut, dan kita akan dapat menerapkan beberapa query yang sama ke basis data dokumen di sini. Kita akan menggunakan Emulator Cosmos DB, yang memungkinkan kita membuat dan mengeksplorasi basis data dokumen secara lokal di komputer. Baca lebih lanjut tentang Emulator [di sini](https://docs.microsoft.com/en-us/azure/cosmos-db/local-emulator?tabs=ssl-netstd21). + +Dokumen adalah kumpulan field dan nilai objek, di mana field menjelaskan apa yang diwakili oleh nilai objek. Di bawah ini adalah contoh dokumen. + +```json +{ + "firstname": "Eva", + "age": 44, + "id": "8c74a315-aebf-4a16-bb38-2430a9896ce5", + "_rid": "bHwDAPQz8s0BAAAAAAAAAA==", + "_self": "dbs/bHwDAA==/colls/bHwDAPQz8s0=/docs/bHwDAPQz8s0BAAAAAAAAAA==/", + "_etag": "\"00000000-0000-0000-9f95-010a691e01d7\"", + "_attachments": "attachments/", + "_ts": 1630544034 +} +``` + +Field yang menarik dalam dokumen ini adalah: `firstname`, `id`, dan `age`. Field lainnya dengan garis bawah dihasilkan oleh Cosmos DB. + +#### Mengeksplorasi Data dengan Emulator Cosmos DB + +Anda dapat mengunduh dan menginstal emulator [untuk Windows di sini](https://aka.ms/cosmosdb-emulator). Lihat [dokumentasi ini](https://docs.microsoft.com/en-us/azure/cosmos-db/local-emulator?tabs=ssl-netstd21#run-on-linux-macos) untuk opsi menjalankan Emulator di macOS dan Linux. + +Emulator meluncurkan jendela browser, di mana tampilan Explorer memungkinkan Anda mengeksplorasi dokumen. + +![Tampilan Explorer dari Emulator Cosmos DB](../../../../translated_images/cosmosdb-emulator-explorer.a1c80b1347206fe2f30f88fc123821636587d04fc5a56a9eb350c7da6b31f361.id.png) + +Jika Anda mengikuti, klik "Start with Sample" untuk menghasilkan basis data contoh bernama SampleDB. Jika Anda memperluas SampleDB dengan mengklik panah, Anda akan menemukan sebuah container bernama `Persons`. Container menyimpan kumpulan item, yang merupakan dokumen dalam container. Anda dapat mengeksplorasi empat dokumen individual di bawah `Items`. + +![Mengeksplorasi data contoh di Emulator Cosmos DB](../../../../translated_images/cosmosdb-emulator-persons.bf640586a7077c8985dfd3071946465c8e074c722c7c202d6d714de99a93b90a.id.png) + +#### Melakukan Query Data Dokumen dengan Emulator Cosmos DB + +Kita juga dapat melakukan query data contoh dengan mengklik tombol new SQL Query (tombol kedua dari kiri). + +`SELECT * FROM c` mengembalikan semua dokumen dalam container. Mari tambahkan klausa where dan temukan semua orang yang berusia di bawah 40 tahun. + +`SELECT * FROM c where c.age < 40` + +![Menjalankan query SELECT pada data contoh di Emulator Cosmos DB untuk menemukan dokumen yang memiliki nilai field age kurang dari 40](../../../../translated_images/cosmosdb-emulator-persons-query.6905ebb497e3cd047cd96e55a0a03f69ce1b91b2b3d8c147e617b746b22b7e33.id.png) + +Query mengembalikan dua dokumen, perhatikan nilai age untuk setiap dokumen kurang dari 40. + +#### JSON dan Dokumen + +Jika Anda familiar dengan JavaScript Object Notation (JSON), Anda akan melihat bahwa dokumen terlihat mirip dengan JSON. Ada file `PersonsData.json` di direktori ini dengan lebih banyak data yang dapat Anda unggah ke container Persons di Emulator melalui tombol `Upload Item`. + +Dalam banyak kasus, API yang mengembalikan data JSON dapat langsung ditransfer dan disimpan dalam basis data dokumen. Di bawah ini adalah dokumen lain, yang mewakili tweet dari akun Twitter Microsoft yang diambil menggunakan Twitter API, lalu dimasukkan ke Cosmos DB. + +```json +{ + "created_at": "2021-08-31T19:03:01.000Z", + "id": "1432780985872142341", + "text": "Blank slate. Like this tweet if you’ve ever painted in Microsoft Paint before. https://t.co/cFeEs8eOPK", + "_rid": "dhAmAIUsA4oHAAAAAAAAAA==", + "_self": "dbs/dhAmAA==/colls/dhAmAIUsA4o=/docs/dhAmAIUsA4oHAAAAAAAAAA==/", + "_etag": "\"00000000-0000-0000-9f84-a0958ad901d7\"", + "_attachments": "attachments/", + "_ts": 1630537000 +``` + +Field yang menarik dalam dokumen ini adalah: `created_at`, `id`, dan `text`. + +## 🚀 Tantangan + +Ada file `TwitterData.json` yang dapat Anda unggah ke basis data SampleDB. Disarankan agar Anda menambahkannya ke container terpisah. Ini dapat dilakukan dengan: + +1. Mengklik tombol new container di kanan atas +1. Memilih basis data yang ada (SampleDB) dan membuat id container untuk container +1. Menetapkan partition key ke `/id` +1. Mengklik OK (Anda dapat mengabaikan informasi lainnya di tampilan ini karena ini adalah dataset kecil yang berjalan secara lokal di komputer Anda) +1. Membuka container baru Anda dan mengunggah file Twitter Data dengan tombol `Upload Item` + +Cobalah menjalankan beberapa query SELECT untuk menemukan dokumen yang memiliki kata Microsoft di field text. Petunjuk: coba gunakan [kata kunci LIKE](https://docs.microsoft.com/en-us/azure/cosmos-db/sql/sql-query-keywords#using-like-with-the--wildcard-character). + +## [Kuis Pasca-Pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/11) + +## Tinjauan & Studi Mandiri + +- Ada beberapa format dan fitur tambahan yang ditambahkan ke spreadsheet ini yang tidak dibahas dalam pelajaran ini. Microsoft memiliki [perpustakaan besar dokumentasi dan video](https://support.microsoft.com/excel) tentang Excel jika Anda tertarik untuk mempelajari lebih lanjut. + +- Dokumentasi arsitektur ini merinci karakteristik dalam berbagai jenis data non-relasional: [Data Non-Relasional dan NoSQL](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data) + +- Cosmos DB adalah basis data non-relasional berbasis cloud yang juga dapat menyimpan berbagai jenis NoSQL yang disebutkan dalam pelajaran ini. Pelajari lebih lanjut tentang jenis-jenis ini dalam [Modul Microsoft Learn Cosmos DB](https://docs.microsoft.com/en-us/learn/paths/work-with-nosql-data-in-azure-cosmos-db/). + +## Tugas + +[Soda Profits](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa terjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/2-Working-With-Data/06-non-relational/assignment.md b/translations/id/2-Working-With-Data/06-non-relational/assignment.md new file mode 100644 index 00000000..67dc2c69 --- /dev/null +++ b/translations/id/2-Working-With-Data/06-non-relational/assignment.md @@ -0,0 +1,33 @@ + +# Keuntungan Soda + +## Instruksi + +Spreadsheet [Coca Cola Co](../../../../2-Working-With-Data/06-non-relational/CocaColaCo.xlsx) kehilangan beberapa perhitungan. Tugas Anda adalah: + +1. Hitung Laba Kotor untuk tahun fiskal '15, '16, '17, dan '18 + - Laba Kotor = Pendapatan Operasi Bersih - Biaya Barang Terjual +1. Hitung rata-rata dari semua laba kotor. Cobalah untuk melakukannya dengan fungsi. + - Rata-rata = Jumlah laba kotor dibagi dengan jumlah tahun fiskal (10) + - Dokumentasi tentang [fungsi AVERAGE](https://support.microsoft.com/en-us/office/average-function-047bac88-d466-426c-a32b-8f33eb960cf6) +1. Ini adalah file Excel, tetapi seharusnya dapat diedit di platform spreadsheet apa pun + +[Sumber data kredit kepada Yiyi Wang](https://www.kaggle.com/yiyiwang0826/cocacola-excel) + +## Rubrik + +Luar Biasa | Memadai | Perlu Perbaikan +--- | --- | -- | + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau interpretasi yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/2-Working-With-Data/07-python/README.md b/translations/id/2-Working-With-Data/07-python/README.md new file mode 100644 index 00000000..4a646e0b --- /dev/null +++ b/translations/id/2-Working-With-Data/07-python/README.md @@ -0,0 +1,290 @@ + +# Bekerja dengan Data: Python dan Pustaka Pandas + +| ![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png) | +| :-------------------------------------------------------------------------------------------------------: | +| Bekerja dengan Python - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +[![Video Pengantar](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.id.png)](https://youtu.be/dZjWOGbsN4Y) + +Meskipun basis data menawarkan cara yang sangat efisien untuk menyimpan data dan melakukan kueri menggunakan bahasa kueri, cara paling fleksibel untuk memproses data adalah dengan menulis program Anda sendiri untuk memanipulasi data. Dalam banyak kasus, melakukan kueri basis data akan lebih efektif. Namun, dalam beberapa kasus ketika pemrosesan data yang lebih kompleks diperlukan, hal tersebut tidak dapat dilakukan dengan mudah menggunakan SQL. +Pemrosesan data dapat diprogram dalam bahasa pemrograman apa pun, tetapi ada beberapa bahasa yang lebih tinggi tingkatannya dalam hal bekerja dengan data. Para ilmuwan data biasanya lebih memilih salah satu dari bahasa berikut: + +* **[Python](https://www.python.org/)**, bahasa pemrograman umum, yang sering dianggap sebagai salah satu pilihan terbaik untuk pemula karena kesederhanaannya. Python memiliki banyak pustaka tambahan yang dapat membantu Anda menyelesaikan banyak masalah praktis, seperti mengekstrak data dari arsip ZIP, atau mengonversi gambar menjadi skala abu-abu. Selain untuk ilmu data, Python juga sering digunakan untuk pengembangan web. +* **[R](https://www.r-project.org/)** adalah alat tradisional yang dikembangkan dengan pemrosesan data statistik dalam pikiran. R juga memiliki repositori pustaka yang besar (CRAN), menjadikannya pilihan yang baik untuk pemrosesan data. Namun, R bukanlah bahasa pemrograman umum, dan jarang digunakan di luar domain ilmu data. +* **[Julia](https://julialang.org/)** adalah bahasa lain yang dikembangkan khusus untuk ilmu data. Julia dirancang untuk memberikan kinerja yang lebih baik daripada Python, menjadikannya alat yang hebat untuk eksperimen ilmiah. + +Dalam pelajaran ini, kita akan fokus menggunakan Python untuk pemrosesan data sederhana. Kami mengasumsikan Anda sudah memiliki pemahaman dasar tentang bahasa ini. Jika Anda ingin mempelajari Python lebih dalam, Anda dapat merujuk ke salah satu sumber berikut: + +* [Belajar Python dengan Cara Menyenangkan menggunakan Turtle Graphics dan Fractals](https://github.com/shwars/pycourse) - Kursus pengantar Python berbasis GitHub +* [Langkah Pertama Anda dengan Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) di Microsoft Learn + +Data dapat hadir dalam berbagai bentuk. Dalam pelajaran ini, kita akan membahas tiga bentuk data - **data tabular**, **teks**, dan **gambar**. + +Kami akan fokus pada beberapa contoh pemrosesan data, daripada memberikan gambaran lengkap tentang semua pustaka terkait. Ini akan memungkinkan Anda memahami ide utama tentang apa yang mungkin dilakukan, dan memberi Anda pemahaman tentang di mana menemukan solusi untuk masalah Anda saat membutuhkannya. + +> **Saran paling berguna**. Ketika Anda perlu melakukan operasi tertentu pada data yang tidak Anda ketahui caranya, cobalah mencarinya di internet. [Stackoverflow](https://stackoverflow.com/) biasanya memiliki banyak contoh kode Python yang berguna untuk banyak tugas umum. + +## [Kuis Pra-Pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/12) + +## Data Tabular dan DataFrame + +Anda sudah mengenal data tabular ketika kita membahas tentang basis data relasional. Ketika Anda memiliki banyak data yang tersimpan dalam banyak tabel yang saling terhubung, menggunakan SQL jelas masuk akal. Namun, ada banyak kasus di mana kita memiliki tabel data, dan kita perlu mendapatkan **pemahaman** atau **wawasan** tentang data ini, seperti distribusi, korelasi antar nilai, dll. Dalam ilmu data, sering kali kita perlu melakukan beberapa transformasi pada data asli, diikuti dengan visualisasi. Kedua langkah tersebut dapat dengan mudah dilakukan menggunakan Python. + +Ada dua pustaka paling berguna di Python yang dapat membantu Anda menangani data tabular: +* **[Pandas](https://pandas.pydata.org/)** memungkinkan Anda memanipulasi **DataFrame**, yang mirip dengan tabel relasional. Anda dapat memiliki kolom bernama, dan melakukan berbagai operasi pada baris, kolom, dan DataFrame secara umum. +* **[Numpy](https://numpy.org/)** adalah pustaka untuk bekerja dengan **tensor**, yaitu **array** multi-dimensi. Array memiliki nilai dengan tipe dasar yang sama, dan lebih sederhana daripada DataFrame, tetapi menawarkan lebih banyak operasi matematika, serta menciptakan overhead yang lebih sedikit. + +Ada juga beberapa pustaka lain yang perlu Anda ketahui: +* **[Matplotlib](https://matplotlib.org/)** adalah pustaka yang digunakan untuk visualisasi data dan membuat grafik +* **[SciPy](https://www.scipy.org/)** adalah pustaka dengan beberapa fungsi ilmiah tambahan. Kita sudah pernah membahas pustaka ini saat berbicara tentang probabilitas dan statistik + +Berikut adalah potongan kode yang biasanya Anda gunakan untuk mengimpor pustaka-pustaka tersebut di awal program Python Anda: +```python +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt +from scipy import ... # you need to specify exact sub-packages that you need +``` + +Pandas berpusat pada beberapa konsep dasar. + +### Series + +**Series** adalah urutan nilai, mirip dengan daftar atau array numpy. Perbedaan utamanya adalah bahwa Series juga memiliki **index**, dan ketika kita melakukan operasi pada Series (misalnya, menambahkannya), index diperhitungkan. Index dapat sesederhana nomor baris integer (ini adalah index yang digunakan secara default saat membuat Series dari daftar atau array), atau dapat memiliki struktur yang kompleks, seperti interval tanggal. + +> **Catatan**: Ada beberapa kode pengantar Pandas di notebook pendamping [`notebook.ipynb`](notebook.ipynb). Kami hanya menguraikan beberapa contoh di sini, dan Anda sangat disarankan untuk memeriksa notebook lengkapnya. + +Misalkan kita ingin menganalisis penjualan di toko es krim kita. Mari kita buat Series angka penjualan (jumlah barang yang terjual setiap hari) untuk beberapa periode waktu: + +```python +start_date = "Jan 1, 2020" +end_date = "Mar 31, 2020" +idx = pd.date_range(start_date,end_date) +print(f"Length of index is {len(idx)}") +items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx) +items_sold.plot() +``` +![Plot Time Series](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.id.png) + +Sekarang misalkan setiap minggu kita mengadakan pesta untuk teman-teman, dan kita mengambil tambahan 10 bungkus es krim untuk pesta. Kita dapat membuat Series lain, diindeks berdasarkan minggu, untuk menunjukkan hal itu: +```python +additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W")) +``` +Ketika kita menambahkan dua Series bersama-sama, kita mendapatkan total jumlah: +```python +total_items = items_sold.add(additional_items,fill_value=0) +total_items.plot() +``` +![Plot Time Series](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.id.png) + +> **Catatan** bahwa kita tidak menggunakan sintaks sederhana `total_items+additional_items`. Jika kita melakukannya, kita akan mendapatkan banyak nilai `NaN` (*Not a Number*) dalam Series hasil. Hal ini karena ada nilai yang hilang untuk beberapa titik index dalam Series `additional_items`, dan menambahkan `NaN` ke apa pun menghasilkan `NaN`. Oleh karena itu, kita perlu menentukan parameter `fill_value` selama penjumlahan. + +Dengan time series, kita juga dapat **mengubah sampel ulang** Series dengan interval waktu yang berbeda. Misalnya, misalkan kita ingin menghitung rata-rata volume penjualan bulanan. Kita dapat menggunakan kode berikut: +```python +monthly = total_items.resample("1M").mean() +ax = monthly.plot(kind='bar') +``` +![Rata-rata Time Series Bulanan](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.id.png) + +### DataFrame + +DataFrame pada dasarnya adalah kumpulan Series dengan index yang sama. Kita dapat menggabungkan beberapa Series menjadi sebuah DataFrame: +```python +a = pd.Series(range(1,10)) +b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9)) +df = pd.DataFrame([a,b]) +``` +Ini akan membuat tabel horizontal seperti ini: +| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | +| --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- | +| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | +| 1 | I | like | to | use | Python | and | Pandas | very | much | + +Kita juga dapat menggunakan Series sebagai kolom, dan menentukan nama kolom menggunakan dictionary: +```python +df = pd.DataFrame({ 'A' : a, 'B' : b }) +``` +Ini akan menghasilkan tabel seperti ini: + +| | A | B | +| --- | --- | ------ | +| 0 | 1 | I | +| 1 | 2 | like | +| 2 | 3 | to | +| 3 | 4 | use | +| 4 | 5 | Python | +| 5 | 6 | and | +| 6 | 7 | Pandas | +| 7 | 8 | very | +| 8 | 9 | much | + +**Catatan** bahwa kita juga dapat mendapatkan tata letak tabel ini dengan mentranspos tabel sebelumnya, misalnya dengan menulis +```python +df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' }) +``` +Di sini `.T` berarti operasi mentranspos DataFrame, yaitu menukar baris dan kolom, dan operasi `rename` memungkinkan kita mengganti nama kolom agar sesuai dengan contoh sebelumnya. + +Berikut adalah beberapa operasi paling penting yang dapat kita lakukan pada DataFrame: + +**Pemilihan kolom**. Kita dapat memilih kolom individual dengan menulis `df['A']` - operasi ini mengembalikan Series. Kita juga dapat memilih subset kolom ke dalam DataFrame lain dengan menulis `df[['B','A']]` - ini mengembalikan DataFrame lain. + +**Menyaring** hanya baris tertentu berdasarkan kriteria. Misalnya, untuk hanya menyisakan baris dengan kolom `A` lebih besar dari 5, kita dapat menulis `df[df['A']>5]`. + +> **Catatan**: Cara kerja penyaringan adalah sebagai berikut. Ekspresi `df['A']<5` mengembalikan Series boolean, yang menunjukkan apakah ekspresi tersebut `True` atau `False` untuk setiap elemen dari Series asli `df['A']`. Ketika Series boolean digunakan sebagai index, ini mengembalikan subset baris dalam DataFrame. Oleh karena itu, tidak mungkin menggunakan ekspresi boolean Python sembarang, misalnya, menulis `df[df['A']>5 and df['A']<7]` akan salah. Sebagai gantinya, Anda harus menggunakan operasi khusus `&` pada Series boolean, menulis `df[(df['A']>5) & (df['A']<7)]` (*tanda kurung penting di sini*). + +**Membuat kolom baru yang dapat dihitung**. Kita dapat dengan mudah membuat kolom baru yang dapat dihitung untuk DataFrame kita dengan menggunakan ekspresi intuitif seperti ini: +```python +df['DivA'] = df['A']-df['A'].mean() +``` +Contoh ini menghitung deviasi A dari nilai rata-ratanya. Apa yang sebenarnya terjadi di sini adalah kita menghitung sebuah Series, lalu menetapkan Series ini ke sisi kiri, menciptakan kolom baru. Oleh karena itu, kita tidak dapat menggunakan operasi apa pun yang tidak kompatibel dengan Series, misalnya, kode di bawah ini salah: +```python +# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi" +df['LenB'] = len(df['B']) # <- Wrong result +``` +Contoh terakhir, meskipun secara sintaksis benar, memberikan hasil yang salah, karena menetapkan panjang Series `B` ke semua nilai dalam kolom, dan bukan panjang elemen individual seperti yang kita maksudkan. + +Jika kita perlu menghitung ekspresi kompleks seperti ini, kita dapat menggunakan fungsi `apply`. Contoh terakhir dapat ditulis sebagai berikut: +```python +df['LenB'] = df['B'].apply(lambda x : len(x)) +# or +df['LenB'] = df['B'].apply(len) +``` + +Setelah operasi di atas, kita akan mendapatkan DataFrame berikut: + +| | A | B | DivA | LenB | +| --- | --- | ------ | ---- | ---- | +| 0 | 1 | I | -4.0 | 1 | +| 1 | 2 | like | -3.0 | 4 | +| 2 | 3 | to | -2.0 | 2 | +| 3 | 4 | use | -1.0 | 3 | +| 4 | 5 | Python | 0.0 | 6 | +| 5 | 6 | and | 1.0 | 3 | +| 6 | 7 | Pandas | 2.0 | 6 | +| 7 | 8 | very | 3.0 | 4 | +| 8 | 9 | much | 4.0 | 4 | + +**Memilih baris berdasarkan nomor** dapat dilakukan menggunakan konstruk `iloc`. Misalnya, untuk memilih 5 baris pertama dari DataFrame: +```python +df.iloc[:5] +``` + +**Pengelompokan** sering digunakan untuk mendapatkan hasil yang mirip dengan *pivot table* di Excel. Misalkan kita ingin menghitung nilai rata-rata kolom `A` untuk setiap jumlah tertentu dari `LenB`. Maka kita dapat mengelompokkan DataFrame kita berdasarkan `LenB`, dan memanggil `mean`: +```python +df.groupby(by='LenB').mean() +``` +Jika kita perlu menghitung rata-rata dan jumlah elemen dalam grup, maka kita dapat menggunakan fungsi `aggregate` yang lebih kompleks: +```python +df.groupby(by='LenB') \ + .aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \ + .rename(columns={ 'DivA' : 'Count', 'A' : 'Mean'}) +``` +Ini memberikan kita tabel berikut: + +| LenB | Count | Mean | +| ---- | ----- | -------- | +| 1 | 1 | 1.000000 | +| 2 | 1 | 3.000000 | +| 3 | 2 | 5.000000 | +| 4 | 3 | 6.333333 | +| 6 | 2 | 6.000000 | + +### Mendapatkan Data +Kita telah melihat betapa mudahnya membangun Series dan DataFrames dari objek Python. Namun, data biasanya tersedia dalam bentuk file teks atau tabel Excel. Untungnya, Pandas menawarkan cara sederhana untuk memuat data dari disk. Sebagai contoh, membaca file CSV semudah ini: +```python +df = pd.read_csv('file.csv') +``` +Kita akan melihat lebih banyak contoh memuat data, termasuk mengambilnya dari situs web eksternal, di bagian "Tantangan". + +### Mencetak dan Memvisualisasikan + +Seorang Data Scientist sering kali harus mengeksplorasi data, sehingga penting untuk dapat memvisualisasikannya. Ketika DataFrame besar, sering kali kita hanya ingin memastikan bahwa kita melakukan segalanya dengan benar dengan mencetak beberapa baris pertama. Hal ini dapat dilakukan dengan memanggil `df.head()`. Jika Anda menjalankannya dari Jupyter Notebook, itu akan mencetak DataFrame dalam bentuk tabel yang rapi. + +Kita juga telah melihat penggunaan fungsi `plot` untuk memvisualisasikan beberapa kolom. Meskipun `plot` sangat berguna untuk banyak tugas, dan mendukung berbagai jenis grafik melalui parameter `kind=`, Anda selalu dapat menggunakan pustaka `matplotlib` mentah untuk memplot sesuatu yang lebih kompleks. Kita akan membahas visualisasi data secara mendetail dalam pelajaran kursus terpisah. + +Ikhtisar ini mencakup konsep-konsep terpenting dari Pandas, namun pustaka ini sangat kaya, dan tidak ada batasan untuk apa yang dapat Anda lakukan dengannya! Sekarang mari kita terapkan pengetahuan ini untuk menyelesaikan masalah tertentu. + +## 🚀 Tantangan 1: Menganalisis Penyebaran COVID + +Masalah pertama yang akan kita fokuskan adalah pemodelan penyebaran epidemi COVID-19. Untuk itu, kita akan menggunakan data tentang jumlah individu yang terinfeksi di berbagai negara, yang disediakan oleh [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) di [Johns Hopkins University](https://jhu.edu/). Dataset tersedia di [Repositori GitHub ini](https://github.com/CSSEGISandData/COVID-19). + +Karena kita ingin menunjukkan cara menangani data, kami mengundang Anda untuk membuka [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) dan membacanya dari atas ke bawah. Anda juga dapat mengeksekusi sel, dan melakukan beberapa tantangan yang telah kami siapkan di akhir. + +![COVID Spread](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.id.png) + +> Jika Anda tidak tahu cara menjalankan kode di Jupyter Notebook, lihat [artikel ini](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). + +## Bekerja dengan Data Tidak Terstruktur + +Meskipun data sering kali tersedia dalam bentuk tabel, dalam beberapa kasus kita perlu menangani data yang kurang terstruktur, misalnya teks atau gambar. Dalam kasus ini, untuk menerapkan teknik pemrosesan data yang telah kita lihat sebelumnya, kita perlu **mengekstrak** data terstruktur. Berikut beberapa contohnya: + +* Mengekstrak kata kunci dari teks, dan melihat seberapa sering kata kunci tersebut muncul +* Menggunakan jaringan saraf untuk mengekstrak informasi tentang objek dalam gambar +* Mendapatkan informasi tentang emosi orang dari umpan kamera video + +## 🚀 Tantangan 2: Menganalisis Makalah COVID + +Dalam tantangan ini, kita akan melanjutkan topik pandemi COVID, dan fokus pada pemrosesan makalah ilmiah tentang subjek ini. Ada [Dataset CORD-19](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) dengan lebih dari 7000 (pada saat penulisan) makalah tentang COVID, tersedia dengan metadata dan abstrak (dan untuk sekitar setengahnya juga tersedia teks lengkap). + +Contoh lengkap analisis dataset ini menggunakan layanan kognitif [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum) dijelaskan [dalam posting blog ini](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Kita akan membahas versi analisis yang disederhanakan. + +> **NOTE**: Kami tidak menyediakan salinan dataset sebagai bagian dari repositori ini. Anda mungkin perlu mengunduh file [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) dari [dataset ini di Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Pendaftaran dengan Kaggle mungkin diperlukan. Anda juga dapat mengunduh dataset tanpa pendaftaran [dari sini](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), tetapi akan mencakup semua teks lengkap selain file metadata. + +Buka [`notebook-papers.ipynb`](notebook-papers.ipynb) dan bacalah dari atas ke bawah. Anda juga dapat mengeksekusi sel, dan melakukan beberapa tantangan yang telah kami siapkan di akhir. + +![Covid Medical Treatment](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.id.png) + +## Pemrosesan Data Gambar + +Baru-baru ini, model AI yang sangat kuat telah dikembangkan yang memungkinkan kita memahami gambar. Ada banyak tugas yang dapat diselesaikan menggunakan jaringan saraf yang telah dilatih sebelumnya, atau layanan cloud. Beberapa contohnya termasuk: + +* **Klasifikasi Gambar**, yang dapat membantu Anda mengkategorikan gambar ke dalam salah satu kelas yang telah ditentukan. Anda dapat dengan mudah melatih pengklasifikasi gambar Anda sendiri menggunakan layanan seperti [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) +* **Deteksi Objek** untuk mendeteksi berbagai objek dalam gambar. Layanan seperti [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) dapat mendeteksi sejumlah objek umum, dan Anda dapat melatih model [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) untuk mendeteksi beberapa objek spesifik yang menarik. +* **Deteksi Wajah**, termasuk deteksi Usia, Jenis Kelamin, dan Emosi. Hal ini dapat dilakukan melalui [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum). + +Semua layanan cloud tersebut dapat dipanggil menggunakan [Python SDKs](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum), dan dengan demikian dapat dengan mudah dimasukkan ke dalam alur kerja eksplorasi data Anda. + +Berikut beberapa contoh eksplorasi data dari sumber data gambar: +* Dalam posting blog [Cara Belajar Data Science Tanpa Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) kita mengeksplorasi foto Instagram, mencoba memahami apa yang membuat orang memberikan lebih banyak suka pada sebuah foto. Kita pertama-tama mengekstrak sebanyak mungkin informasi dari gambar menggunakan [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), dan kemudian menggunakan [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) untuk membangun model yang dapat diinterpretasikan. +* Dalam [Workshop Studi Wajah](https://github.com/CloudAdvocacy/FaceStudies) kita menggunakan [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) untuk mengekstrak emosi orang dalam foto dari acara, untuk mencoba memahami apa yang membuat orang bahagia. + +## Kesimpulan + +Baik Anda sudah memiliki data terstruktur atau tidak terstruktur, menggunakan Python Anda dapat melakukan semua langkah terkait pemrosesan dan pemahaman data. Ini mungkin cara paling fleksibel untuk pemrosesan data, dan itulah alasan mengapa mayoritas data scientist menggunakan Python sebagai alat utama mereka. Mempelajari Python secara mendalam mungkin merupakan ide yang baik jika Anda serius dengan perjalanan data science Anda! + +## [Kuis setelah pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/13) + +## Tinjauan & Studi Mandiri + +**Buku** +* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662) + +**Sumber Daya Online** +* Tutorial resmi [10 menit untuk Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) +* [Dokumentasi tentang Visualisasi Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html) + +**Belajar Python** +* [Belajar Python dengan Cara Menyenangkan menggunakan Turtle Graphics dan Fraktal](https://github.com/shwars/pycourse) +* [Ambil Langkah Pertama Anda dengan Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Jalur Pembelajaran di [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) + +## Tugas + +[Lakukan studi data yang lebih mendetail untuk tantangan di atas](assignment.md) + +## Kredit + +Pelajaran ini telah ditulis dengan ♥️ oleh [Dmitry Soshnikov](http://soshnikov.com) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/2-Working-With-Data/07-python/assignment.md b/translations/id/2-Working-With-Data/07-python/assignment.md new file mode 100644 index 00000000..ae131aa3 --- /dev/null +++ b/translations/id/2-Working-With-Data/07-python/assignment.md @@ -0,0 +1,37 @@ + +# Tugas Pemrosesan Data dalam Python + +Dalam tugas ini, kami meminta Anda untuk mengembangkan lebih lanjut kode yang telah kita mulai dalam tantangan sebelumnya. Tugas ini terdiri dari dua bagian: + +## Pemodelan Penyebaran COVID-19 + + - [ ] Plot grafik *R* untuk 5-6 negara berbeda dalam satu grafik untuk perbandingan, atau menggunakan beberapa grafik berdampingan. + - [ ] Lihat bagaimana jumlah kematian dan kesembuhan berkorelasi dengan jumlah kasus terinfeksi. + - [ ] Cari tahu berapa lama rata-rata penyakit berlangsung dengan mengamati korelasi visual antara tingkat infeksi dan tingkat kematian serta mencari beberapa anomali. Anda mungkin perlu melihat data dari berbagai negara untuk mengetahuinya. + - [ ] Hitung tingkat fatalitas dan bagaimana tingkat tersebut berubah seiring waktu. *Anda mungkin perlu mempertimbangkan durasi penyakit dalam hitungan hari untuk menggeser satu deret waktu sebelum melakukan perhitungan.* + +## Analisis Makalah COVID-19 + +- [ ] Bangun matriks ko-occurence dari berbagai jenis obat, dan lihat obat mana yang sering muncul bersama (misalnya disebutkan dalam satu abstrak). Anda dapat memodifikasi kode untuk membangun matriks ko-occurence untuk obat-obatan dan diagnosis. +- [ ] Visualisasikan matriks ini menggunakan heatmap. +- [ ] Sebagai tantangan tambahan, visualisasikan ko-occurence obat-obatan menggunakan [chord diagram](https://en.wikipedia.org/wiki/Chord_diagram). [Pustaka ini](https://pypi.org/project/chord/) mungkin dapat membantu Anda menggambar chord diagram. +- [ ] Sebagai tantangan tambahan lainnya, ekstrak dosis dari berbagai obat (seperti **400mg** dalam *ambil 400mg chloroquine setiap hari*) menggunakan regular expressions, dan bangun dataframe yang menunjukkan berbagai dosis untuk berbagai obat. **Catatan**: pertimbangkan nilai numerik yang berada dalam jarak teks yang dekat dengan nama obat. + +## Rubrik + +Unggul | Memadai | Perlu Peningkatan +--- | --- | -- | +Semua tugas selesai, diilustrasikan secara grafis dan dijelaskan, termasuk setidaknya satu dari dua tantangan tambahan | Lebih dari 5 tugas selesai, tidak ada tantangan tambahan yang dicoba, atau hasilnya tidak jelas | Kurang dari 5 (tetapi lebih dari 3) tugas selesai, visualisasi tidak membantu menunjukkan poin + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/2-Working-With-Data/08-data-preparation/README.md b/translations/id/2-Working-With-Data/08-data-preparation/README.md new file mode 100644 index 00000000..62ddb4ff --- /dev/null +++ b/translations/id/2-Working-With-Data/08-data-preparation/README.md @@ -0,0 +1,346 @@ + +# Bekerja dengan Data: Persiapan Data + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/08-DataPreparation.png)| +|:---:| +|Persiapan Data - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +## [Kuis Pra-Pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/14) + +Bergantung pada sumbernya, data mentah mungkin mengandung beberapa ketidakkonsistenan yang dapat menyebabkan tantangan dalam analisis dan pemodelan. Dengan kata lain, data ini dapat dikategorikan sebagai "kotor" dan perlu dibersihkan. Pelajaran ini berfokus pada teknik untuk membersihkan dan mentransformasi data guna menangani tantangan seperti data yang hilang, tidak akurat, atau tidak lengkap. Topik yang dibahas dalam pelajaran ini akan menggunakan Python dan pustaka Pandas dan akan [didemonstrasikan dalam notebook](notebook.ipynb) di direktori ini. + +## Pentingnya Membersihkan Data + +- **Kemudahan penggunaan dan berbagi ulang**: Ketika data diorganisasi dan dinormalisasi dengan baik, data menjadi lebih mudah untuk dicari, digunakan, dan dibagikan dengan orang lain. + +- **Konsistensi**: Ilmu data sering kali membutuhkan pengolahan lebih dari satu dataset, di mana dataset dari berbagai sumber perlu digabungkan. Memastikan bahwa setiap dataset memiliki standar yang sama akan memastikan bahwa data tetap berguna ketika digabungkan menjadi satu dataset. + +- **Akurasi model**: Data yang telah dibersihkan meningkatkan akurasi model yang bergantung pada data tersebut. + +## Tujuan dan Strategi Pembersihan yang Umum + +- **Menjelajahi dataset**: Eksplorasi data, yang dibahas dalam [pelajaran berikutnya](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/4-Data-Science-Lifecycle/15-analyzing), dapat membantu Anda menemukan data yang perlu dibersihkan. Mengamati nilai-nilai dalam dataset secara visual dapat memberikan gambaran tentang seperti apa data lainnya, atau memberikan ide tentang masalah yang dapat diselesaikan. Eksplorasi dapat melibatkan kueri dasar, visualisasi, dan pengambilan sampel. + +- **Pemformatan**: Bergantung pada sumbernya, data dapat memiliki ketidakkonsistenan dalam cara penyajiannya. Hal ini dapat menyebabkan masalah dalam pencarian dan representasi nilai, di mana nilai tersebut terlihat dalam dataset tetapi tidak direpresentasikan dengan benar dalam visualisasi atau hasil kueri. Masalah pemformatan umum melibatkan penghapusan spasi kosong, tanggal, dan tipe data. Penyelesaian masalah pemformatan biasanya menjadi tanggung jawab pengguna data. Sebagai contoh, standar tentang bagaimana tanggal dan angka disajikan dapat berbeda di setiap negara. + +- **Duplikasi**: Data yang memiliki lebih dari satu kemunculan dapat menghasilkan hasil yang tidak akurat dan biasanya harus dihapus. Ini sering terjadi ketika menggabungkan dua atau lebih dataset. Namun, ada kasus di mana duplikasi dalam dataset gabungan mengandung informasi tambahan yang mungkin perlu dipertahankan. + +- **Data yang Hilang**: Data yang hilang dapat menyebabkan ketidakakuratan serta hasil yang lemah atau bias. Terkadang ini dapat diselesaikan dengan "memuat ulang" data, mengisi nilai yang hilang dengan perhitungan dan kode seperti Python, atau cukup menghapus nilai dan data terkait. Ada banyak alasan mengapa data mungkin hilang, dan tindakan yang diambil untuk menyelesaikan nilai yang hilang dapat bergantung pada bagaimana dan mengapa data tersebut hilang. + +## Menjelajahi Informasi DataFrame +> **Tujuan pembelajaran:** Pada akhir subbagian ini, Anda harus merasa nyaman menemukan informasi umum tentang data yang disimpan dalam DataFrame pandas. + +Setelah Anda memuat data ke dalam pandas, kemungkinan besar data tersebut akan berada dalam bentuk DataFrame (lihat [pelajaran sebelumnya](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/2-Working-With-Data/07-python#dataframe) untuk gambaran rinci). Namun, jika dataset dalam DataFrame Anda memiliki 60.000 baris dan 400 kolom, bagaimana Anda mulai memahami apa yang sedang Anda kerjakan? Untungnya, [pandas](https://pandas.pydata.org/) menyediakan beberapa alat yang nyaman untuk dengan cepat melihat informasi keseluruhan tentang DataFrame selain beberapa baris pertama dan terakhir. + +Untuk menjelajahi fungsionalitas ini, kita akan mengimpor pustaka Python scikit-learn dan menggunakan dataset ikonik: **Iris dataset**. + +```python +import pandas as pd +from sklearn.datasets import load_iris + +iris = load_iris() +iris_df = pd.DataFrame(data=iris['data'], columns=iris['feature_names']) +``` +| |sepal length (cm)|sepal width (cm)|petal length (cm)|petal width (cm)| +|----------------------------------------|-----------------|----------------|-----------------|----------------| +|0 |5.1 |3.5 |1.4 |0.2 | +|1 |4.9 |3.0 |1.4 |0.2 | +|2 |4.7 |3.2 |1.3 |0.2 | +|3 |4.6 |3.1 |1.5 |0.2 | +|4 |5.0 |3.6 |1.4 |0.2 | + +- **DataFrame.info**: Untuk memulai, metode `info()` digunakan untuk mencetak ringkasan konten yang ada dalam `DataFrame`. Mari kita lihat dataset ini untuk melihat apa yang kita miliki: +```python +iris_df.info() +``` +``` +RangeIndex: 150 entries, 0 to 149 +Data columns (total 4 columns): + # Column Non-Null Count Dtype +--- ------ -------------- ----- + 0 sepal length (cm) 150 non-null float64 + 1 sepal width (cm) 150 non-null float64 + 2 petal length (cm) 150 non-null float64 + 3 petal width (cm) 150 non-null float64 +dtypes: float64(4) +memory usage: 4.8 KB +``` +Dari sini, kita tahu bahwa dataset *Iris* memiliki 150 entri dalam empat kolom tanpa entri null. Semua data disimpan sebagai angka floating-point 64-bit. + +- **DataFrame.head()**: Selanjutnya, untuk memeriksa konten sebenarnya dari `DataFrame`, kita menggunakan metode `head()`. Mari kita lihat beberapa baris pertama dari `iris_df` kita: +```python +iris_df.head() +``` +``` + sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) +0 5.1 3.5 1.4 0.2 +1 4.9 3.0 1.4 0.2 +2 4.7 3.2 1.3 0.2 +3 4.6 3.1 1.5 0.2 +4 5.0 3.6 1.4 0.2 +``` +- **DataFrame.tail()**: Sebaliknya, untuk memeriksa beberapa baris terakhir dari `DataFrame`, kita menggunakan metode `tail()`: +```python +iris_df.tail() +``` +``` + sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) +145 6.7 3.0 5.2 2.3 +146 6.3 2.5 5.0 1.9 +147 6.5 3.0 5.2 2.0 +148 6.2 3.4 5.4 2.3 +149 5.9 3.0 5.1 1.8 +``` +> **Kesimpulan:** Bahkan hanya dengan melihat metadata tentang informasi dalam DataFrame atau beberapa nilai pertama dan terakhir di dalamnya, Anda dapat langsung mendapatkan gambaran tentang ukuran, bentuk, dan konten data yang sedang Anda kerjakan. + +## Menangani Data yang Hilang +> **Tujuan pembelajaran:** Pada akhir subbagian ini, Anda harus tahu cara mengganti atau menghapus nilai null dari DataFrame. + +Sebagian besar waktu, dataset yang ingin Anda gunakan (atau harus digunakan) memiliki nilai yang hilang di dalamnya. Cara menangani data yang hilang membawa kompromi halus yang dapat memengaruhi analisis akhir Anda dan hasil dunia nyata. + +Pandas menangani nilai yang hilang dengan dua cara. Yang pertama telah Anda lihat sebelumnya di bagian sebelumnya: `NaN`, atau Not a Number. Ini sebenarnya adalah nilai khusus yang merupakan bagian dari spesifikasi floating-point IEEE dan hanya digunakan untuk menunjukkan nilai floating-point yang hilang. + +Untuk nilai yang hilang selain float, pandas menggunakan objek Python `None`. Meskipun mungkin tampak membingungkan bahwa Anda akan menemui dua jenis nilai berbeda yang pada dasarnya mengatakan hal yang sama, ada alasan programatik yang masuk akal untuk pilihan desain ini dan, dalam praktiknya, pendekatan ini memungkinkan pandas memberikan kompromi yang baik untuk sebagian besar kasus. Meskipun demikian, baik `None` maupun `NaN` memiliki batasan yang perlu Anda perhatikan terkait cara penggunaannya. + +Pelajari lebih lanjut tentang `NaN` dan `None` dari [notebook](https://github.com/microsoft/Data-Science-For-Beginners/blob/main/4-Data-Science-Lifecycle/15-analyzing/notebook.ipynb)! + +- **Mendeteksi nilai null**: Dalam `pandas`, metode `isnull()` dan `notnull()` adalah metode utama Anda untuk mendeteksi data null. Keduanya mengembalikan Boolean mask atas data Anda. Kita akan menggunakan `numpy` untuk nilai `NaN`: +```python +import numpy as np + +example1 = pd.Series([0, np.nan, '', None]) +example1.isnull() +``` +``` +0 False +1 True +2 False +3 True +dtype: bool +``` +Perhatikan dengan saksama outputnya. Apakah ada yang mengejutkan Anda? Meskipun `0` adalah null aritmatika, itu tetap merupakan bilangan bulat yang valid dan pandas memperlakukannya seperti itu. `''` sedikit lebih halus. Meskipun kita menggunakannya di Bagian 1 untuk mewakili nilai string kosong, itu tetap merupakan objek string dan bukan representasi null menurut pandas. + +Sekarang, mari kita balikkan ini dan gunakan metode ini dengan cara yang lebih seperti yang akan Anda gunakan dalam praktik. Anda dapat menggunakan Boolean mask secara langsung sebagai indeks ``Series`` atau ``DataFrame``, yang dapat berguna saat mencoba bekerja dengan nilai yang hilang (atau ada) secara terisolasi. + +> **Kesimpulan**: Baik metode `isnull()` maupun `notnull()` menghasilkan hasil serupa saat Anda menggunakannya dalam `DataFrame`: mereka menunjukkan hasil dan indeks dari hasil tersebut, yang akan sangat membantu Anda saat Anda bergulat dengan data Anda. + +- **Menghapus nilai null**: Selain mengidentifikasi nilai yang hilang, pandas menyediakan cara yang nyaman untuk menghapus nilai null dari `Series` dan `DataFrame`. (Terutama pada dataset besar, sering kali lebih disarankan untuk menghapus nilai [NA] yang hilang dari analisis Anda daripada menanganinya dengan cara lain.) Untuk melihat ini dalam tindakan, mari kita kembali ke `example1`: +```python +example1 = example1.dropna() +example1 +``` +``` +0 0 +2 +dtype: object +``` +Perhatikan bahwa ini harus terlihat seperti output Anda dari `example3[example3.notnull()]`. Perbedaannya di sini adalah bahwa, alih-alih hanya mengindeks pada nilai yang dimask, `dropna` telah menghapus nilai yang hilang dari `Series` `example1`. + +Karena `DataFrame` memiliki dua dimensi, mereka memberikan lebih banyak opsi untuk menghapus data. + +```python +example2 = pd.DataFrame([[1, np.nan, 7], + [2, 5, 8], + [np.nan, 6, 9]]) +example2 +``` +| | 0 | 1 | 2 | +|------|---|---|---| +|0 |1.0|NaN|7 | +|1 |2.0|5.0|8 | +|2 |NaN|6.0|9 | + +(Apakah Anda memperhatikan bahwa pandas mengubah dua kolom menjadi float untuk mengakomodasi `NaN`?) + +Anda tidak dapat menghapus satu nilai dari `DataFrame`, jadi Anda harus menghapus seluruh baris atau kolom. Bergantung pada apa yang Anda lakukan, Anda mungkin ingin melakukan salah satu dari keduanya, dan pandas memberi Anda opsi untuk keduanya. Karena dalam ilmu data, kolom umumnya mewakili variabel dan baris mewakili observasi, Anda lebih mungkin menghapus baris data; pengaturan default untuk `dropna()` adalah menghapus semua baris yang mengandung nilai null apa pun: + +```python +example2.dropna() +``` +``` + 0 1 2 +1 2.0 5.0 8 +``` +Jika perlu, Anda dapat menghapus nilai NA dari kolom. Gunakan `axis=1` untuk melakukannya: +```python +example2.dropna(axis='columns') +``` +``` + 2 +0 7 +1 8 +2 9 +``` +Perhatikan bahwa ini dapat menghapus banyak data yang mungkin ingin Anda pertahankan, terutama dalam dataset yang lebih kecil. Bagaimana jika Anda hanya ingin menghapus baris atau kolom yang mengandung beberapa atau bahkan semua nilai null? Anda menentukan pengaturan tersebut di `dropna` dengan parameter `how` dan `thresh`. + +Secara default, `how='any'` (jika Anda ingin memeriksa sendiri atau melihat parameter lain yang dimiliki metode ini, jalankan `example4.dropna?` dalam sel kode). Anda dapat menentukan `how='all'` untuk hanya menghapus baris atau kolom yang mengandung semua nilai null. Mari kita perluas contoh `DataFrame` kita untuk melihat ini dalam tindakan. + +```python +example2[3] = np.nan +example2 +``` +| |0 |1 |2 |3 | +|------|---|---|---|---| +|0 |1.0|NaN|7 |NaN| +|1 |2.0|5.0|8 |NaN| +|2 |NaN|6.0|9 |NaN| + +Parameter `thresh` memberi Anda kontrol yang lebih halus: Anda menetapkan jumlah nilai *non-null* yang harus dimiliki baris atau kolom agar tetap dipertahankan: +```python +example2.dropna(axis='rows', thresh=3) +``` +``` + 0 1 2 3 +1 2.0 5.0 8 NaN +``` +Di sini, baris pertama dan terakhir telah dihapus, karena hanya mengandung dua nilai non-null. + +- **Mengisi nilai null**: Bergantung pada dataset Anda, terkadang lebih masuk akal untuk mengisi nilai null dengan nilai valid daripada menghapusnya. Anda dapat menggunakan `isnull` untuk melakukan ini secara langsung, tetapi itu bisa melelahkan, terutama jika Anda memiliki banyak nilai untuk diisi. Karena ini adalah tugas yang umum dalam ilmu data, pandas menyediakan `fillna`, yang mengembalikan salinan `Series` atau `DataFrame` dengan nilai yang hilang diganti dengan nilai pilihan Anda. Mari kita buat contoh `Series` lain untuk melihat cara kerja ini dalam praktik. +```python +example3 = pd.Series([1, np.nan, 2, None, 3], index=list('abcde')) +example3 +``` +``` +a 1.0 +b NaN +c 2.0 +d NaN +e 3.0 +dtype: float64 +``` +Anda dapat mengisi semua entri null dengan satu nilai, seperti `0`: +```python +example3.fillna(0) +``` +``` +a 1.0 +b 0.0 +c 2.0 +d 0.0 +e 3.0 +dtype: float64 +``` +Anda dapat **mengisi ke depan** nilai null, yaitu menggunakan nilai valid terakhir untuk mengisi null: +```python +example3.fillna(method='ffill') +``` +``` +a 1.0 +b 1.0 +c 2.0 +d 2.0 +e 3.0 +dtype: float64 +``` +Anda juga dapat **mengisi ke belakang** untuk menyebarkan nilai valid berikutnya ke belakang untuk mengisi null: +```python +example3.fillna(method='bfill') +``` +``` +a 1.0 +b 2.0 +c 2.0 +d 3.0 +e 3.0 +dtype: float64 +``` +Seperti yang mungkin Anda duga, ini bekerja sama dengan `DataFrame`, tetapi Anda juga dapat menentukan `axis` di sepanjang mana nilai null diisi. Menggunakan kembali `example2` yang sebelumnya: +```python +example2.fillna(method='ffill', axis=1) +``` +``` + 0 1 2 3 +0 1.0 1.0 7.0 7.0 +1 2.0 5.0 8.0 8.0 +2 NaN 6.0 9.0 9.0 +``` +Perhatikan bahwa ketika nilai sebelumnya tidak tersedia untuk pengisian ke depan, nilai null tetap ada. +> **Intisari:** Ada berbagai cara untuk menangani nilai yang hilang dalam dataset Anda. Strategi spesifik yang Anda gunakan (menghapusnya, menggantinya, atau bahkan bagaimana Anda menggantinya) harus ditentukan oleh karakteristik data tersebut. Anda akan semakin memahami cara menangani nilai yang hilang seiring dengan semakin seringnya Anda berinteraksi dengan dataset. + +## Menghapus Data Duplikat + +> **Tujuan pembelajaran:** Pada akhir subbagian ini, Anda seharusnya merasa nyaman mengidentifikasi dan menghapus nilai duplikat dari DataFrame. + +Selain data yang hilang, Anda juga sering menemukan data duplikat dalam dataset dunia nyata. Untungnya, `pandas` menyediakan cara mudah untuk mendeteksi dan menghapus entri duplikat. + +- **Mengidentifikasi duplikat: `duplicated`**: Anda dapat dengan mudah menemukan nilai duplikat menggunakan metode `duplicated` di pandas, yang mengembalikan mask Boolean yang menunjukkan apakah sebuah entri dalam `DataFrame` adalah duplikat dari entri sebelumnya. Mari kita buat contoh `DataFrame` lain untuk melihat cara kerjanya. +```python +example4 = pd.DataFrame({'letters': ['A','B'] * 2 + ['B'], + 'numbers': [1, 2, 1, 3, 3]}) +example4 +``` +| |letters|numbers| +|------|-------|-------| +|0 |A |1 | +|1 |B |2 | +|2 |A |1 | +|3 |B |3 | +|4 |B |3 | + +```python +example4.duplicated() +``` +``` +0 False +1 False +2 True +3 False +4 True +dtype: bool +``` +- **Menghapus duplikat: `drop_duplicates`:** hanya mengembalikan salinan data di mana semua nilai `duplicated` adalah `False`: +```python +example4.drop_duplicates() +``` +``` + letters numbers +0 A 1 +1 B 2 +3 B 3 +``` +Baik `duplicated` maupun `drop_duplicates` secara default mempertimbangkan semua kolom, tetapi Anda dapat menentukan agar mereka hanya memeriksa subset kolom tertentu dalam `DataFrame` Anda: +```python +example4.drop_duplicates(['letters']) +``` +``` +letters numbers +0 A 1 +1 B 2 +``` + +> **Intisari:** Menghapus data duplikat adalah bagian penting dari hampir setiap proyek data sains. Data duplikat dapat mengubah hasil analisis Anda dan memberikan hasil yang tidak akurat! + + +## 🚀 Tantangan + +Semua materi yang dibahas disediakan dalam bentuk [Jupyter Notebook](https://github.com/microsoft/Data-Science-For-Beginners/blob/main/2-Working-With-Data/08-data-preparation/notebook.ipynb). Selain itu, terdapat latihan setelah setiap bagian, cobalah untuk mengerjakannya! + +## [Kuis Setelah Kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/15) + + + +## Tinjauan & Belajar Mandiri + +Ada banyak cara untuk menemukan dan mendekati persiapan data Anda untuk analisis dan pemodelan, dan membersihkan data adalah langkah penting yang membutuhkan pengalaman "langsung". Cobalah tantangan-tantangan berikut dari Kaggle untuk mengeksplorasi teknik yang tidak dibahas dalam pelajaran ini. + +- [Tantangan Membersihkan Data: Parsing Tanggal](https://www.kaggle.com/rtatman/data-cleaning-challenge-parsing-dates/) + +- [Tantangan Membersihkan Data: Skala dan Normalisasi Data](https://www.kaggle.com/rtatman/data-cleaning-challenge-scale-and-normalize-data) + + +## Tugas + +[Evaluasi Data dari Formulir](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/2-Working-With-Data/08-data-preparation/assignment.md b/translations/id/2-Working-With-Data/08-data-preparation/assignment.md new file mode 100644 index 00000000..81cc6029 --- /dev/null +++ b/translations/id/2-Working-With-Data/08-data-preparation/assignment.md @@ -0,0 +1,28 @@ + +# Mengevaluasi Data dari Formulir + +Seorang klien telah menguji [formulir kecil](../../../../2-Working-With-Data/08-data-preparation/index.html) untuk mengumpulkan beberapa data dasar tentang basis klien mereka. Mereka telah membawa temuan mereka kepada Anda untuk memvalidasi data yang telah mereka kumpulkan. Anda dapat membuka halaman `index.html` di browser untuk melihat formulir tersebut. + +Anda telah diberikan [dataset berupa catatan csv](../../../../data/form.csv) yang berisi entri dari formulir tersebut serta beberapa visualisasi dasar. Klien menunjukkan bahwa beberapa visualisasi terlihat tidak benar, tetapi mereka tidak yakin bagaimana cara memperbaikinya. Anda dapat mengeksplorasinya di [notebook tugas](assignment.ipynb). + +## Instruksi + +Gunakan teknik-teknik dalam pelajaran ini untuk memberikan rekomendasi tentang formulir agar dapat menangkap informasi yang akurat dan konsisten. + +## Rubrik + +Unggul | Memadai | Perlu Perbaikan +--- | --- | --- + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/2-Working-With-Data/README.md b/translations/id/2-Working-With-Data/README.md new file mode 100644 index 00000000..984c6a3a --- /dev/null +++ b/translations/id/2-Working-With-Data/README.md @@ -0,0 +1,31 @@ + +# Bekerja dengan Data + +![data love](../../../translated_images/data-love.a22ef29e6742c852505ada062920956d3d7604870b281a8ca7c7ac6f37381d5a.id.jpg) +> Foto oleh Alexander Sinn di Unsplash + +Dalam pelajaran ini, Anda akan mempelajari beberapa cara untuk mengelola, memanipulasi, dan menggunakan data dalam aplikasi. Anda akan mempelajari tentang basis data relasional dan non-relasional serta bagaimana data dapat disimpan di dalamnya. Anda akan mempelajari dasar-dasar bekerja dengan Python untuk mengelola data, dan Anda akan menemukan berbagai cara untuk bekerja dengan Python dalam mengelola dan menambang data. + +### Topik + +1. [Basis data relasional](05-relational-databases/README.md) +2. [Basis data non-relasional](06-non-relational/README.md) +3. [Bekerja dengan Python](07-python/README.md) +4. [Mempersiapkan data](08-data-preparation/README.md) + +### Kredit + +Pelajaran ini ditulis dengan ❤️ oleh [Christopher Harrison](https://twitter.com/geektrainer), [Dmitry Soshnikov](https://twitter.com/shwars), dan [Jasmine Greenaway](https://twitter.com/paladique) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa terjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/3-Data-Visualization/09-visualization-quantities/README.md b/translations/id/3-Data-Visualization/09-visualization-quantities/README.md new file mode 100644 index 00000000..96554f04 --- /dev/null +++ b/translations/id/3-Data-Visualization/09-visualization-quantities/README.md @@ -0,0 +1,217 @@ + +# Memvisualisasikan Kuantitas + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/09-Visualizing-Quantities.png)| +|:---:| +| Memvisualisasikan Kuantitas - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +Dalam pelajaran ini, Anda akan mempelajari cara menggunakan salah satu dari banyak pustaka Python yang tersedia untuk membuat visualisasi menarik seputar konsep kuantitas. Dengan menggunakan dataset yang telah dibersihkan tentang burung-burung di Minnesota, Anda dapat mempelajari banyak fakta menarik tentang satwa liar lokal. +## [Kuis sebelum pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/16) + +## Mengamati rentang sayap dengan Matplotlib + +Pustaka yang sangat baik untuk membuat plot dan grafik sederhana maupun kompleks dari berbagai jenis adalah [Matplotlib](https://matplotlib.org/stable/index.html). Secara umum, proses memplot data menggunakan pustaka ini melibatkan identifikasi bagian dari dataframe yang ingin Anda targetkan, melakukan transformasi data yang diperlukan, menetapkan nilai sumbu x dan y, memutuskan jenis plot yang akan ditampilkan, dan kemudian menampilkan plot tersebut. Matplotlib menawarkan berbagai macam visualisasi, tetapi untuk pelajaran ini, mari fokus pada jenis yang paling sesuai untuk memvisualisasikan kuantitas: grafik garis, scatterplot, dan grafik batang. + +> ✅ Gunakan grafik terbaik yang sesuai dengan struktur data Anda dan cerita yang ingin Anda sampaikan. +> - Untuk menganalisis tren dari waktu ke waktu: garis +> - Untuk membandingkan nilai: batang, kolom, pie, scatterplot +> - Untuk menunjukkan bagaimana bagian-bagian berhubungan dengan keseluruhan: pie +> - Untuk menunjukkan distribusi data: scatterplot, batang +> - Untuk menunjukkan tren: garis, kolom +> - Untuk menunjukkan hubungan antar nilai: garis, scatterplot, bubble + +Jika Anda memiliki dataset dan perlu mengetahui seberapa banyak suatu item tertentu, salah satu tugas pertama yang harus Anda lakukan adalah memeriksa nilainya. + +✅ Ada banyak 'cheat sheet' yang sangat baik untuk Matplotlib [di sini](https://matplotlib.org/cheatsheets/cheatsheets.pdf). + +## Membuat grafik garis tentang nilai rentang sayap burung + +Buka file `notebook.ipynb` di root folder pelajaran ini dan tambahkan sel. + +> Catatan: data disimpan di root repositori ini dalam folder `/data`. + +```python +import pandas as pd +import matplotlib.pyplot as plt +birds = pd.read_csv('../../data/birds.csv') +birds.head() +``` +Data ini adalah campuran teks dan angka: + +| | Nama | NamaIlmiah | Kategori | Ordo | Famili | Genus | StatusKonservasi | PanjangMin | PanjangMax | MassaTubuhMin | MassaTubuhMax | RentangSayapMin | RentangSayapMax | +| ---: | :--------------------------- | :-------------------- | :-------------------- | :----------- | :------- | :---------- | :----------------- | ---------: | ---------: | ------------: | ------------: | --------------: | --------------: | +| 0 | Black-bellied whistling-duck | Dendrocygna autumnalis | Bebek/Angsa/BurungAir | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 | +| 1 | Fulvous whistling-duck | Dendrocygna bicolor | Bebek/Angsa/BurungAir | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 | +| 2 | Snow goose | Anser caerulescens | Bebek/Angsa/BurungAir | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 | +| 3 | Ross's goose | Anser rossii | Bebek/Angsa/BurungAir | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 | +| 4 | Greater white-fronted goose | Anser albifrons | Bebek/Angsa/BurungAir | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 | + +Mari mulai dengan memplot beberapa data numerik menggunakan grafik garis dasar. Misalnya, Anda ingin melihat rentang sayap maksimum dari burung-burung menarik ini. + +```python +wingspan = birds['MaxWingspan'] +wingspan.plot() +``` +![Rentang Sayap Maksimum](../../../../translated_images/max-wingspan-02.e79fd847b2640b89e21e340a3a9f4c5d4b224c4fcd65f54385e84f1c9ed26d52.id.png) + +Apa yang langsung Anda perhatikan? Tampaknya ada setidaknya satu outlier - itu rentang sayap yang luar biasa! Rentang sayap 2300 sentimeter sama dengan 23 meter - apakah ada Pterodactyl yang berkeliaran di Minnesota? Mari kita selidiki. + +Meskipun Anda dapat melakukan sort cepat di Excel untuk menemukan outlier tersebut, yang mungkin adalah kesalahan pengetikan, lanjutkan proses visualisasi dengan bekerja dari dalam plot. + +Tambahkan label ke sumbu x untuk menunjukkan jenis burung yang dimaksud: + +``` +plt.title('Max Wingspan in Centimeters') +plt.ylabel('Wingspan (CM)') +plt.xlabel('Birds') +plt.xticks(rotation=45) +x = birds['Name'] +y = birds['MaxWingspan'] + +plt.plot(x, y) + +plt.show() +``` +![Rentang sayap dengan label](../../../../translated_images/max-wingspan-labels-02.aa90e826ca49a9d1dde78075e9755c1849ef56a4e9ec60f7e9f3806daf9283e2.id.png) + +Meskipun label telah diputar 45 derajat, masih terlalu banyak untuk dibaca. Mari coba strategi yang berbeda: hanya beri label pada outlier dan letakkan label di dalam grafik. Anda dapat menggunakan scatter chart untuk memberikan lebih banyak ruang bagi pelabelan: + +```python +plt.title('Max Wingspan in Centimeters') +plt.ylabel('Wingspan (CM)') +plt.tick_params(axis='both',which='both',labelbottom=False,bottom=False) + +for i in range(len(birds)): + x = birds['Name'][i] + y = birds['MaxWingspan'][i] + plt.plot(x, y, 'bo') + if birds['MaxWingspan'][i] > 500: + plt.text(x, y * (1 - 0.05), birds['Name'][i], fontsize=12) + +plt.show() +``` +Apa yang terjadi di sini? Anda menggunakan `tick_params` untuk menyembunyikan label di bagian bawah dan kemudian membuat loop pada dataset burung Anda. Dengan memplot grafik menggunakan titik biru kecil dengan `bo`, Anda memeriksa setiap burung dengan rentang sayap maksimum lebih dari 500 dan menampilkan labelnya di sebelah titik tersebut jika memenuhi kriteria. Anda menggeser label sedikit pada sumbu y (`y * (1 - 0.05)`) dan menggunakan nama burung sebagai label. + +Apa yang Anda temukan? + +![Outlier](../../../../translated_images/labeled-wingspan-02.6110e2d2401cd5238ccc24dfb6d04a6c19436101f6cec151e3992e719f9f1e1f.id.png) +## Memfilter data Anda + +Baik Bald Eagle maupun Prairie Falcon, meskipun mungkin burung yang sangat besar, tampaknya salah label, dengan tambahan `0` pada rentang sayap maksimum mereka. Tidak mungkin Anda akan bertemu Bald Eagle dengan rentang sayap 25 meter, tetapi jika iya, beri tahu kami! Mari buat dataframe baru tanpa dua outlier tersebut: + +```python +plt.title('Max Wingspan in Centimeters') +plt.ylabel('Wingspan (CM)') +plt.xlabel('Birds') +plt.tick_params(axis='both',which='both',labelbottom=False,bottom=False) +for i in range(len(birds)): + x = birds['Name'][i] + y = birds['MaxWingspan'][i] + if birds['Name'][i] not in ['Bald eagle', 'Prairie falcon']: + plt.plot(x, y, 'bo') +plt.show() +``` + +Dengan memfilter outlier, data Anda sekarang lebih kohesif dan dapat dipahami. + +![Scatterplot rentang sayap](../../../../translated_images/scatterplot-wingspan-02.1c33790094ce36a75f5fb45b25ed2cf27f0356ea609e43c11e97a2cedd7011a4.id.png) + +Sekarang kita memiliki dataset yang lebih bersih setidaknya dalam hal rentang sayap, mari temukan lebih banyak tentang burung-burung ini. + +Meskipun grafik garis dan scatter plot dapat menampilkan informasi tentang nilai data dan distribusinya, kita ingin memikirkan nilai-nilai yang melekat dalam dataset ini. Anda dapat membuat visualisasi untuk menjawab pertanyaan berikut tentang kuantitas: + +> Berapa banyak kategori burung yang ada, dan berapa jumlahnya? +> Berapa banyak burung yang punah, terancam, langka, atau umum? +> Berapa banyak genus dan ordo dalam terminologi Linnaeus? +## Mengeksplorasi grafik batang + +Grafik batang praktis ketika Anda perlu menunjukkan pengelompokan data. Mari eksplorasi kategori burung yang ada dalam dataset ini untuk melihat mana yang paling umum berdasarkan jumlah. + +Dalam file notebook, buat grafik batang dasar. + +✅ Catatan, Anda dapat memfilter dua burung outlier yang kami identifikasi di bagian sebelumnya, mengedit kesalahan pada rentang sayap mereka, atau membiarkan mereka tetap ada untuk latihan ini yang tidak bergantung pada nilai rentang sayap. + +Jika Anda ingin membuat grafik batang, Anda dapat memilih data yang ingin Anda fokuskan. Grafik batang dapat dibuat dari data mentah: + +```python +birds.plot(x='Category', + kind='bar', + stacked=True, + title='Birds of Minnesota') + +``` +![Data penuh sebagai grafik batang](../../../../translated_images/full-data-bar-02.aaa3fda71c63ed564b917841a1886c177dd9a26424142e510c0c0498fd6ca160.id.png) + +Namun, grafik batang ini tidak dapat dibaca karena terlalu banyak data yang tidak dikelompokkan. Anda perlu memilih hanya data yang ingin Anda plot, jadi mari lihat panjang burung berdasarkan kategori mereka. + +Filter data Anda untuk hanya menyertakan kategori burung. + +✅ Perhatikan bahwa Anda menggunakan Pandas untuk mengelola data, dan kemudian membiarkan Matplotlib melakukan pemetaan grafik. + +Karena ada banyak kategori, Anda dapat menampilkan grafik ini secara vertikal dan menyesuaikan tingginya untuk mengakomodasi semua data: + +```python +category_count = birds.value_counts(birds['Category'].values, sort=True) +plt.rcParams['figure.figsize'] = [6, 12] +category_count.plot.barh() +``` +![Kategori dan panjang](../../../../translated_images/category-counts-02.0b9a0a4de42275ae5096d0f8da590d8bf520d9e7e40aad5cc4fc8d276480cc32.id.png) + +Grafik batang ini menunjukkan pandangan yang baik tentang jumlah burung dalam setiap kategori. Sekilas, Anda dapat melihat bahwa jumlah burung terbesar di wilayah ini berada dalam kategori Bebek/Angsa/BurungAir. Minnesota adalah 'tanah 10.000 danau', jadi ini tidak mengejutkan! + +✅ Coba beberapa hitungan lain pada dataset ini. Apakah ada yang mengejutkan Anda? + +## Membandingkan data + +Anda dapat mencoba perbandingan data yang dikelompokkan dengan membuat sumbu baru. Coba perbandingan Panjang Maksimum burung, berdasarkan kategorinya: + +```python +maxlength = birds['MaxLength'] +plt.barh(y=birds['Category'], width=maxlength) +plt.rcParams['figure.figsize'] = [6, 12] +plt.show() +``` +![Membandingkan data](../../../../translated_images/category-length-02.7304bf519375c9807d8165cc7ec60dd2a60f7b365b23098538e287d89adb7d76.id.png) + +Tidak ada yang mengejutkan di sini: burung kolibri memiliki Panjang Maksimum paling kecil dibandingkan dengan Pelikan atau Angsa. Bagus ketika data masuk akal secara logis! + +Anda dapat membuat visualisasi grafik batang yang lebih menarik dengan menumpangkan data. Mari tumpangkan Panjang Minimum dan Panjang Maksimum pada kategori burung tertentu: + +```python +minLength = birds['MinLength'] +maxLength = birds['MaxLength'] +category = birds['Category'] + +plt.barh(category, maxLength) +plt.barh(category, minLength) + +plt.show() +``` +Dalam plot ini, Anda dapat melihat rentang per kategori burung dari Panjang Minimum dan Panjang Maksimum. Anda dapat dengan aman mengatakan bahwa, berdasarkan data ini, semakin besar burung, semakin besar rentang panjangnya. Menarik! + +![Nilai yang ditumpangkan](../../../../translated_images/superimposed-02.f03058536baeb2ed7864f01102538464d4c2fd7ade881ddd7d5ba74dc5d2fdae.id.png) + +## 🚀 Tantangan + +Dataset burung ini menawarkan banyak informasi tentang berbagai jenis burung dalam ekosistem tertentu. Cari di internet dan lihat apakah Anda dapat menemukan dataset lain yang berorientasi pada burung. Latihlah membuat grafik dan diagram tentang burung-burung ini untuk menemukan fakta yang tidak Anda sadari. +## [Kuis setelah pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/17) + +## Tinjauan & Studi Mandiri + +Pelajaran pertama ini telah memberikan Anda beberapa informasi tentang cara menggunakan Matplotlib untuk memvisualisasikan kuantitas. Lakukan penelitian tentang cara lain untuk bekerja dengan dataset untuk visualisasi. [Plotly](https://github.com/plotly/plotly.py) adalah salah satu yang tidak akan kita bahas dalam pelajaran ini, jadi lihat apa yang dapat ditawarkan. +## Tugas + +[Lines, Scatters, and Bars](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diingat bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/3-Data-Visualization/09-visualization-quantities/assignment.md b/translations/id/3-Data-Visualization/09-visualization-quantities/assignment.md new file mode 100644 index 00000000..85ef58db --- /dev/null +++ b/translations/id/3-Data-Visualization/09-visualization-quantities/assignment.md @@ -0,0 +1,25 @@ + +# Garis, Scatter, dan Batang + +## Instruksi + +Dalam pelajaran ini, Anda telah bekerja dengan grafik garis, scatterplot, dan grafik batang untuk menunjukkan fakta menarik tentang dataset ini. Dalam tugas ini, selami lebih dalam dataset untuk menemukan fakta tentang jenis burung tertentu. Sebagai contoh, buat notebook yang memvisualisasikan semua data menarik yang dapat Anda temukan tentang Snow Geese. Gunakan tiga jenis plot yang disebutkan di atas untuk menceritakan sebuah cerita dalam notebook Anda. + +## Rubrik + +Unggul | Memadai | Perlu Perbaikan +--- | --- | -- | +Notebook disajikan dengan anotasi yang baik, alur cerita yang solid, dan grafik yang menarik | Notebook kehilangan salah satu elemen ini | Notebook kehilangan dua elemen ini + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diingat bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/3-Data-Visualization/10-visualization-distributions/README.md b/translations/id/3-Data-Visualization/10-visualization-distributions/README.md new file mode 100644 index 00000000..d8380eab --- /dev/null +++ b/translations/id/3-Data-Visualization/10-visualization-distributions/README.md @@ -0,0 +1,217 @@ + +# Memvisualisasikan Distribusi + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/10-Visualizing-Distributions.png)| +|:---:| +| Memvisualisasikan Distribusi - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +Pada pelajaran sebelumnya, Anda mempelajari beberapa fakta menarik tentang dataset burung di Minnesota. Anda menemukan data yang salah dengan memvisualisasikan outlier dan melihat perbedaan antara kategori burung berdasarkan panjang maksimum mereka. + +## [Kuis sebelum pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/18) +## Jelajahi dataset burung + +Cara lain untuk menggali data adalah dengan melihat distribusinya, atau bagaimana data diatur sepanjang sumbu. Misalnya, Anda mungkin ingin mengetahui distribusi umum, untuk dataset ini, dari lebar sayap maksimum atau massa tubuh maksimum burung di Minnesota. + +Mari kita temukan beberapa fakta tentang distribusi data dalam dataset ini. Dalam file _notebook.ipynb_ di folder pelajaran ini, impor Pandas, Matplotlib, dan data Anda: + +```python +import pandas as pd +import matplotlib.pyplot as plt +birds = pd.read_csv('../../data/birds.csv') +birds.head() +``` + +| | Nama | NamaIlmiah | Kategori | Ordo | Famili | Genus | StatusKonservasi | MinPanjang | MaxPanjang | MinMassaTubuh | MaxMassaTubuh | MinLebarSayap | MaxLebarSayap | +| ---: | :--------------------------- | :--------------------- | :-------------------- | :----------- | :------- | :---------- | :----------------- | ----------: | ----------: | ------------: | ------------: | ------------: | ------------: | +| 0 | Itik bersiul perut hitam | Dendrocygna autumnalis | Bebek/Angsa/Burung Air| Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 | +| 1 | Itik bersiul fulvous | Dendrocygna bicolor | Bebek/Angsa/Burung Air| Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 | +| 2 | Angsa salju | Anser caerulescens | Bebek/Angsa/Burung Air| Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 | +| 3 | Angsa Ross | Anser rossii | Bebek/Angsa/Burung Air| Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 | +| 4 | Angsa berwajah putih besar | Anser albifrons | Bebek/Angsa/Burung Air| Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 | + +Secara umum, Anda dapat dengan cepat melihat bagaimana data didistribusikan dengan menggunakan scatter plot seperti yang kita lakukan pada pelajaran sebelumnya: + +```python +birds.plot(kind='scatter',x='MaxLength',y='Order',figsize=(12,8)) + +plt.title('Max Length per Order') +plt.ylabel('Order') +plt.xlabel('Max Length') + +plt.show() +``` +![panjang maksimum per ordo](../../../../translated_images/scatter-wb.9d98b0ed7f0388af979441853361a11df5f518f5307938a503ca7913e986111b.id.png) + +Ini memberikan gambaran umum tentang distribusi panjang tubuh per Ordo burung, tetapi ini bukan cara optimal untuk menampilkan distribusi yang sebenarnya. Tugas ini biasanya dilakukan dengan membuat Histogram. + +## Bekerja dengan histogram + +Matplotlib menawarkan cara yang sangat baik untuk memvisualisasikan distribusi data menggunakan Histogram. Jenis grafik ini mirip dengan grafik batang di mana distribusi dapat dilihat melalui naik turunnya batang. Untuk membuat histogram, Anda memerlukan data numerik. Untuk membuat Histogram, Anda dapat membuat grafik dengan mendefinisikan jenisnya sebagai 'hist' untuk Histogram. Grafik ini menunjukkan distribusi MaxBodyMass untuk seluruh rentang data numerik dalam dataset. Dengan membagi array data yang diberikan menjadi beberapa bin yang lebih kecil, histogram dapat menampilkan distribusi nilai data: + +```python +birds['MaxBodyMass'].plot(kind = 'hist', bins = 10, figsize = (12,12)) +plt.show() +``` +![distribusi seluruh dataset](../../../../translated_images/dist1-wb.0d0cac82e2974fbbec635826fefead401af795f82e2279e2e2678bf2c117d827.id.png) + +Seperti yang Anda lihat, sebagian besar dari 400+ burung dalam dataset ini berada dalam rentang di bawah 2000 untuk Max Body Mass mereka. Dapatkan wawasan lebih lanjut tentang data dengan mengubah parameter `bins` ke angka yang lebih tinggi, misalnya 30: + +```python +birds['MaxBodyMass'].plot(kind = 'hist', bins = 30, figsize = (12,12)) +plt.show() +``` +![distribusi seluruh dataset dengan parameter bin lebih besar](../../../../translated_images/dist2-wb.2c0a7a3499b2fbf561e9f93b69f265dfc538dc78f6de15088ba84a88152e26ba.id.png) + +Grafik ini menunjukkan distribusi dengan cara yang sedikit lebih rinci. Grafik yang kurang condong ke kiri dapat dibuat dengan memastikan bahwa Anda hanya memilih data dalam rentang tertentu: + +Filter data Anda untuk mendapatkan hanya burung yang massa tubuhnya di bawah 60, dan tampilkan 40 `bins`: + +```python +filteredBirds = birds[(birds['MaxBodyMass'] > 1) & (birds['MaxBodyMass'] < 60)] +filteredBirds['MaxBodyMass'].plot(kind = 'hist',bins = 40,figsize = (12,12)) +plt.show() +``` +![histogram terfilter](../../../../translated_images/dist3-wb.64b88db7f9780200bd486a2c2a3252548dd439672dbd3f778193db7f654b100c.id.png) + +✅ Cobalah beberapa filter dan titik data lainnya. Untuk melihat distribusi penuh data, hapus filter `['MaxBodyMass']` untuk menampilkan distribusi yang diberi label. + +Histogram juga menawarkan beberapa peningkatan warna dan pelabelan yang menarik untuk dicoba: + +Buat histogram 2D untuk membandingkan hubungan antara dua distribusi. Mari bandingkan `MaxBodyMass` vs. `MaxLength`. Matplotlib menawarkan cara bawaan untuk menunjukkan konvergensi menggunakan warna yang lebih cerah: + +```python +x = filteredBirds['MaxBodyMass'] +y = filteredBirds['MaxLength'] + +fig, ax = plt.subplots(tight_layout=True) +hist = ax.hist2d(x, y) +``` +Tampaknya ada korelasi yang diharapkan antara kedua elemen ini di sepanjang sumbu yang diharapkan, dengan satu titik konvergensi yang sangat kuat: + +![plot 2D](../../../../translated_images/2D-wb.ae22fdd33936507a41e3af22e11e4903b04a9be973b23a4e05214efaccfd66c8.id.png) + +Histogram bekerja dengan baik secara default untuk data numerik. Bagaimana jika Anda perlu melihat distribusi berdasarkan data teks? +## Jelajahi dataset untuk distribusi menggunakan data teks + +Dataset ini juga mencakup informasi yang baik tentang kategori burung serta genus, spesies, dan famili mereka, serta status konservasi mereka. Mari kita gali informasi konservasi ini. Bagaimana distribusi burung berdasarkan status konservasi mereka? + +> ✅ Dalam dataset, beberapa akronim digunakan untuk menggambarkan status konservasi. Akronim ini berasal dari [Kategori Daftar Merah IUCN](https://www.iucnredlist.org/), sebuah organisasi yang mengkatalogkan status spesies. +> +> - CR: Kritis Terancam Punah +> - EN: Terancam Punah +> - EX: Punah +> - LC: Risiko Rendah +> - NT: Hampir Terancam +> - VU: Rentan + +Nilai-nilai ini berbasis teks sehingga Anda perlu melakukan transformasi untuk membuat histogram. Menggunakan dataframe filteredBirds, tampilkan status konservasi bersama dengan Lebar Sayap Minimum. Apa yang Anda lihat? + +```python +x1 = filteredBirds.loc[filteredBirds.ConservationStatus=='EX', 'MinWingspan'] +x2 = filteredBirds.loc[filteredBirds.ConservationStatus=='CR', 'MinWingspan'] +x3 = filteredBirds.loc[filteredBirds.ConservationStatus=='EN', 'MinWingspan'] +x4 = filteredBirds.loc[filteredBirds.ConservationStatus=='NT', 'MinWingspan'] +x5 = filteredBirds.loc[filteredBirds.ConservationStatus=='VU', 'MinWingspan'] +x6 = filteredBirds.loc[filteredBirds.ConservationStatus=='LC', 'MinWingspan'] + +kwargs = dict(alpha=0.5, bins=20) + +plt.hist(x1, **kwargs, color='red', label='Extinct') +plt.hist(x2, **kwargs, color='orange', label='Critically Endangered') +plt.hist(x3, **kwargs, color='yellow', label='Endangered') +plt.hist(x4, **kwargs, color='green', label='Near Threatened') +plt.hist(x5, **kwargs, color='blue', label='Vulnerable') +plt.hist(x6, **kwargs, color='gray', label='Least Concern') + +plt.gca().set(title='Conservation Status', ylabel='Min Wingspan') +plt.legend(); +``` + +![kolasi lebar sayap dan konservasi](../../../../translated_images/histogram-conservation-wb.3c40450eb072c14de7a1a3ec5c0fcba4995531024760741b392911b567fd8b70.id.png) + +Tampaknya tidak ada korelasi yang baik antara lebar sayap minimum dan status konservasi. Uji elemen lain dari dataset menggunakan metode ini. Anda juga dapat mencoba filter yang berbeda. Apakah Anda menemukan korelasi? + +## Plot kepadatan + +Anda mungkin telah memperhatikan bahwa histogram yang kita lihat sejauh ini 'bertingkat' dan tidak mengalir dengan mulus dalam bentuk lengkung. Untuk menunjukkan grafik kepadatan yang lebih halus, Anda dapat mencoba plot kepadatan. + +Untuk bekerja dengan plot kepadatan, kenali diri Anda dengan pustaka plotting baru, [Seaborn](https://seaborn.pydata.org/generated/seaborn.kdeplot.html). + +Memuat Seaborn, cobalah plot kepadatan dasar: + +```python +import seaborn as sns +import matplotlib.pyplot as plt +sns.kdeplot(filteredBirds['MinWingspan']) +plt.show() +``` +![Plot kepadatan](../../../../translated_images/density1.8801043bd4af2567b0f706332b5853c7614e5e4b81b457acc27eb4e092a65cbd.id.png) + +Anda dapat melihat bagaimana plot ini mencerminkan yang sebelumnya untuk data Lebar Sayap Minimum; hanya saja lebih halus. Menurut dokumentasi Seaborn, "Dibandingkan dengan histogram, KDE dapat menghasilkan plot yang lebih rapi dan lebih mudah diinterpretasikan, terutama saat menggambar beberapa distribusi. Namun, ini memiliki potensi untuk memperkenalkan distorsi jika distribusi dasarnya terbatas atau tidak mulus. Seperti histogram, kualitas representasi juga bergantung pada pemilihan parameter pemulusan yang baik." [sumber](https://seaborn.pydata.org/generated/seaborn.kdeplot.html) Dengan kata lain, outlier seperti biasa akan membuat grafik Anda berperilaku buruk. + +Jika Anda ingin mengunjungi kembali garis MaxBodyMass yang bergerigi pada grafik kedua yang Anda buat, Anda dapat menghaluskannya dengan sangat baik dengan membuat ulang menggunakan metode ini: + +```python +sns.kdeplot(filteredBirds['MaxBodyMass']) +plt.show() +``` +![garis massa tubuh halus](../../../../translated_images/density2.8e7647257060ff544a1aaded57e8dd1887586bfe340139e9b77ac1e5287f7977.id.png) + +Jika Anda menginginkan garis yang halus, tetapi tidak terlalu halus, edit parameter `bw_adjust`: + +```python +sns.kdeplot(filteredBirds['MaxBodyMass'], bw_adjust=.2) +plt.show() +``` +![garis massa tubuh kurang halus](../../../../translated_images/density3.84ae27da82f31e6b83ad977646f029a1d21186574d7581facd70123b3eb257ee.id.png) + +✅ Baca tentang parameter yang tersedia untuk jenis plot ini dan bereksperimenlah! + +Jenis grafik ini menawarkan visualisasi yang sangat informatif. Dengan beberapa baris kode, misalnya, Anda dapat menunjukkan kepadatan massa tubuh maksimum per Ordo burung: + +```python +sns.kdeplot( + data=filteredBirds, x="MaxBodyMass", hue="Order", + fill=True, common_norm=False, palette="crest", + alpha=.5, linewidth=0, +) +``` + +![massa tubuh per ordo](../../../../translated_images/density4.e9d6c033f15c500fd33df94cb592b9f5cf1ed2a3d213c448a3f9e97ba39573ce.id.png) + +Anda juga dapat memetakan kepadatan beberapa variabel dalam satu grafik. Uji MaxLength dan MinLength burung dibandingkan dengan status konservasi mereka: + +```python +sns.kdeplot(data=filteredBirds, x="MinLength", y="MaxLength", hue="ConservationStatus") +``` + +![beberapa kepadatan, ditumpangkan](../../../../translated_images/multi.56548caa9eae8d0fd9012a8586295538c7f4f426e2abc714ba070e2e4b1fc2c1.id.png) + +Mungkin ada baiknya meneliti apakah kumpulan burung 'Rentan' berdasarkan panjang mereka memiliki arti atau tidak. + +## 🚀 Tantangan + +Histogram adalah jenis grafik yang lebih canggih daripada scatterplot, grafik batang, atau grafik garis dasar. Lakukan pencarian di internet untuk menemukan contoh penggunaan histogram yang baik. Bagaimana mereka digunakan, apa yang mereka tunjukkan, dan di bidang atau area penyelidikan apa mereka cenderung digunakan? + +## [Kuis setelah pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/19) + +## Tinjauan & Studi Mandiri + +Dalam pelajaran ini, Anda menggunakan Matplotlib dan mulai bekerja dengan Seaborn untuk menunjukkan grafik yang lebih canggih. Lakukan penelitian tentang `kdeplot` di Seaborn, sebuah "kurva kepadatan probabilitas kontinu dalam satu atau lebih dimensi". Baca [dokumentasi](https://seaborn.pydata.org/generated/seaborn.kdeplot.html) untuk memahami cara kerjanya. + +## Tugas + +[Terapkan keterampilan Anda](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/3-Data-Visualization/10-visualization-distributions/assignment.md b/translations/id/3-Data-Visualization/10-visualization-distributions/assignment.md new file mode 100644 index 00000000..1b5b2129 --- /dev/null +++ b/translations/id/3-Data-Visualization/10-visualization-distributions/assignment.md @@ -0,0 +1,25 @@ + +# Terapkan Keahlian Anda + +## Instruksi + +Sejauh ini, Anda telah bekerja dengan dataset burung Minnesota untuk menemukan informasi tentang jumlah burung dan kepadatan populasi. Latih penerapan teknik-teknik ini dengan mencoba dataset yang berbeda, mungkin yang bersumber dari [Kaggle](https://www.kaggle.com/). Buat sebuah notebook untuk menceritakan sebuah cerita tentang dataset tersebut, dan pastikan untuk menggunakan histogram saat membahasnya. + +## Rubrik + +Unggul | Memadai | Perlu Perbaikan +--- | --- | -- | +Notebook disajikan dengan anotasi tentang dataset ini, termasuk sumbernya, dan menggunakan setidaknya 5 histogram untuk menemukan fakta tentang data. | Notebook disajikan dengan anotasi yang tidak lengkap atau terdapat bug. | Notebook disajikan tanpa anotasi dan terdapat bug. + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diingat bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/3-Data-Visualization/11-visualization-proportions/README.md b/translations/id/3-Data-Visualization/11-visualization-proportions/README.md new file mode 100644 index 00000000..8a053181 --- /dev/null +++ b/translations/id/3-Data-Visualization/11-visualization-proportions/README.md @@ -0,0 +1,204 @@ + +# Memvisualisasikan Proporsi + +|![Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev)](../../sketchnotes/11-Visualizing-Proportions.png)| +|:---:| +|Memvisualisasikan Proporsi - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +Dalam pelajaran ini, Anda akan menggunakan dataset bertema alam untuk memvisualisasikan proporsi, seperti berapa banyak jenis jamur yang terdapat dalam dataset tertentu tentang jamur. Mari kita eksplorasi jamur yang menarik ini menggunakan dataset dari Audubon yang mencantumkan detail tentang 23 spesies jamur berinsang dalam keluarga Agaricus dan Lepiota. Anda akan bereksperimen dengan visualisasi menarik seperti: + +- Diagram lingkaran 🥧 +- Diagram donat 🍩 +- Diagram waffle 🧇 + +> 💡 Sebuah proyek menarik bernama [Charticulator](https://charticulator.com) oleh Microsoft Research menawarkan antarmuka drag-and-drop gratis untuk visualisasi data. Dalam salah satu tutorialnya, mereka juga menggunakan dataset jamur ini! Jadi Anda bisa mengeksplorasi data sekaligus mempelajari pustaka tersebut: [Tutorial Charticulator](https://charticulator.com/tutorials/tutorial4.html). + +## [Kuis sebelum pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/20) + +## Mengenal Jamur Anda 🍄 + +Jamur sangat menarik. Mari kita impor dataset untuk mempelajarinya: + +```python +import pandas as pd +import matplotlib.pyplot as plt +mushrooms = pd.read_csv('../../data/mushrooms.csv') +mushrooms.head() +``` +Sebuah tabel dicetak dengan beberapa data yang bagus untuk dianalisis: + +| class | cap-shape | cap-surface | cap-color | bruises | odor | gill-attachment | gill-spacing | gill-size | gill-color | stalk-shape | stalk-root | stalk-surface-above-ring | stalk-surface-below-ring | stalk-color-above-ring | stalk-color-below-ring | veil-type | veil-color | ring-number | ring-type | spore-print-color | population | habitat | +| --------- | --------- | ----------- | --------- | ------- | ------- | --------------- | ------------ | --------- | ---------- | ----------- | ---------- | ------------------------ | ------------------------ | ---------------------- | ---------------------- | --------- | ---------- | ----------- | --------- | ----------------- | ---------- | ------- | +| Beracun | Cembung | Halus | Cokelat | Memar | Menyengat | Bebas | Rapat | Sempit | Hitam | Membesar | Sama | Halus | Halus | Putih | Putih | Parsial | Putih | Satu | Gantung | Hitam | Tersebar | Perkotaan | +| Dapat Dimakan | Cembung | Halus | Kuning | Memar | Almond | Bebas | Rapat | Lebar | Hitam | Membesar | Klub | Halus | Halus | Putih | Putih | Parsial | Putih | Satu | Gantung | Cokelat | Banyak | Rumput | +| Dapat Dimakan | Lonceng | Halus | Putih | Memar | Adas Manis | Bebas | Rapat | Lebar | Cokelat | Membesar | Klub | Halus | Halus | Putih | Putih | Parsial | Putih | Satu | Gantung | Cokelat | Banyak | Padang Rumput | +| Beracun | Cembung | Bersisik | Putih | Memar | Menyengat | Bebas | Rapat | Sempit | Cokelat | Membesar | Sama | Halus | Halus | Putih | Putih | Parsial | Putih | Satu | Gantung | Hitam | Tersebar | Perkotaan | + +Langsung terlihat bahwa semua data berbentuk teks. Anda harus mengonversi data ini agar dapat digunakan dalam diagram. Sebagian besar data, pada kenyataannya, direpresentasikan sebagai objek: + +```python +print(mushrooms.select_dtypes(["object"]).columns) +``` + +Hasilnya adalah: + +```output +Index(['class', 'cap-shape', 'cap-surface', 'cap-color', 'bruises', 'odor', + 'gill-attachment', 'gill-spacing', 'gill-size', 'gill-color', + 'stalk-shape', 'stalk-root', 'stalk-surface-above-ring', + 'stalk-surface-below-ring', 'stalk-color-above-ring', + 'stalk-color-below-ring', 'veil-type', 'veil-color', 'ring-number', + 'ring-type', 'spore-print-color', 'population', 'habitat'], + dtype='object') +``` +Ambil data ini dan ubah kolom 'class' menjadi kategori: + +```python +cols = mushrooms.select_dtypes(["object"]).columns +mushrooms[cols] = mushrooms[cols].astype('category') +``` + +```python +edibleclass=mushrooms.groupby(['class']).count() +edibleclass +``` + +Sekarang, jika Anda mencetak data jamur, Anda dapat melihat bahwa data tersebut telah dikelompokkan ke dalam kategori berdasarkan kelas beracun/dapat dimakan: + +| | cap-shape | cap-surface | cap-color | bruises | odor | gill-attachment | gill-spacing | gill-size | gill-color | stalk-shape | ... | stalk-surface-below-ring | stalk-color-above-ring | stalk-color-below-ring | veil-type | veil-color | ring-number | ring-type | spore-print-color | population | habitat | +| --------- | --------- | ----------- | --------- | ------- | ---- | --------------- | ------------ | --------- | ---------- | ----------- | --- | ------------------------ | ---------------------- | ---------------------- | --------- | ---------- | ----------- | --------- | ----------------- | ---------- | ------- | +| class | | | | | | | | | | | | | | | | | | | | | | +| Dapat Dimakan | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | ... | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | +| Beracun | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | ... | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | + +Jika Anda mengikuti urutan yang disajikan dalam tabel ini untuk membuat label kategori kelas Anda, Anda dapat membuat diagram lingkaran: + +## Lingkaran! + +```python +labels=['Edible','Poisonous'] +plt.pie(edibleclass['population'],labels=labels,autopct='%.1f %%') +plt.title('Edible?') +plt.show() +``` +Voila, sebuah diagram lingkaran yang menunjukkan proporsi data ini berdasarkan dua kelas jamur tersebut. Sangat penting untuk memastikan urutan label benar, terutama di sini, jadi pastikan untuk memverifikasi urutan saat membangun array label! + +![diagram lingkaran](../../../../translated_images/pie1-wb.e201f2fcc335413143ce37650fb7f5f0bb21358e7823a327ed8644dfb84be9db.id.png) + +## Donat! + +Diagram lingkaran yang sedikit lebih menarik secara visual adalah diagram donat, yaitu diagram lingkaran dengan lubang di tengah. Mari kita lihat data kita menggunakan metode ini. + +Lihat berbagai habitat tempat jamur tumbuh: + +```python +habitat=mushrooms.groupby(['habitat']).count() +habitat +``` +Di sini, Anda mengelompokkan data berdasarkan habitat. Ada 7 habitat yang terdaftar, jadi gunakan itu sebagai label untuk diagram donat Anda: + +```python +labels=['Grasses','Leaves','Meadows','Paths','Urban','Waste','Wood'] + +plt.pie(habitat['class'], labels=labels, + autopct='%1.1f%%', pctdistance=0.85) + +center_circle = plt.Circle((0, 0), 0.40, fc='white') +fig = plt.gcf() + +fig.gca().add_artist(center_circle) + +plt.title('Mushroom Habitats') + +plt.show() +``` + +![diagram donat](../../../../translated_images/donut-wb.be3c12a22712302b5d10c40014d5389d4a1ae4412fe1655b3cf4af57b64f799a.id.png) + +Kode ini menggambar diagram dan lingkaran tengah, lalu menambahkan lingkaran tengah tersebut ke dalam diagram. Ubah lebar lingkaran tengah dengan mengubah `0.40` ke nilai lain. + +Diagram donat dapat disesuaikan dalam berbagai cara untuk mengubah label. Label khususnya dapat disorot untuk meningkatkan keterbacaan. Pelajari lebih lanjut di [dokumentasi](https://matplotlib.org/stable/gallery/pie_and_polar_charts/pie_and_donut_labels.html?highlight=donut). + +Sekarang setelah Anda tahu cara mengelompokkan data dan kemudian menampilkannya sebagai lingkaran atau donat, Anda dapat mengeksplorasi jenis diagram lainnya. Cobalah diagram waffle, yang hanya cara berbeda untuk mengeksplorasi kuantitas. + +## Waffle! + +Diagram tipe 'waffle' adalah cara berbeda untuk memvisualisasikan kuantitas sebagai array 2D dari kotak-kotak. Cobalah memvisualisasikan berbagai jumlah warna topi jamur dalam dataset ini. Untuk melakukannya, Anda perlu menginstal pustaka pembantu bernama [PyWaffle](https://pypi.org/project/pywaffle/) dan menggunakan Matplotlib: + +```python +pip install pywaffle +``` + +Pilih segmen data Anda untuk dikelompokkan: + +```python +capcolor=mushrooms.groupby(['cap-color']).count() +capcolor +``` + +Buat diagram waffle dengan membuat label dan kemudian mengelompokkan data Anda: + +```python +import pandas as pd +import matplotlib.pyplot as plt +from pywaffle import Waffle + +data ={'color': ['brown', 'buff', 'cinnamon', 'green', 'pink', 'purple', 'red', 'white', 'yellow'], + 'amount': capcolor['class'] + } + +df = pd.DataFrame(data) + +fig = plt.figure( + FigureClass = Waffle, + rows = 100, + values = df.amount, + labels = list(df.color), + figsize = (30,30), + colors=["brown", "tan", "maroon", "green", "pink", "purple", "red", "whitesmoke", "yellow"], +) +``` + +Menggunakan diagram waffle, Anda dapat dengan jelas melihat proporsi warna topi dalam dataset jamur ini. Menariknya, ada banyak jamur dengan topi hijau! + +![diagram waffle](../../../../translated_images/waffle.5455dbae4ccf17d53bb40ff0a657ecef7b8aa967e27a19cc96325bd81598f65e.id.png) + +✅ Pywaffle mendukung ikon dalam diagram yang menggunakan ikon apa pun yang tersedia di [Font Awesome](https://fontawesome.com/). Lakukan beberapa eksperimen untuk membuat diagram waffle yang lebih menarik menggunakan ikon alih-alih kotak. + +Dalam pelajaran ini, Anda mempelajari tiga cara untuk memvisualisasikan proporsi. Pertama, Anda perlu mengelompokkan data Anda ke dalam kategori dan kemudian memutuskan cara terbaik untuk menampilkan data tersebut - lingkaran, donat, atau waffle. Semuanya menarik dan memberikan gambaran instan tentang dataset kepada pengguna. + +## 🚀 Tantangan + +Cobalah membuat ulang diagram menarik ini di [Charticulator](https://charticulator.com). +## [Kuis setelah pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/21) + +## Tinjauan & Studi Mandiri + +Terkadang tidak jelas kapan harus menggunakan diagram lingkaran, donat, atau waffle. Berikut beberapa artikel untuk dibaca tentang topik ini: + +https://www.beautiful.ai/blog/battle-of-the-charts-pie-chart-vs-donut-chart + +https://medium.com/@hypsypops/pie-chart-vs-donut-chart-showdown-in-the-ring-5d24fd86a9ce + +https://www.mit.edu/~mbarker/formula1/f1help/11-ch-c6.htm + +https://medium.datadriveninvestor.com/data-visualization-done-the-right-way-with-tableau-waffle-chart-fdf2a19be402 + +Lakukan penelitian untuk menemukan lebih banyak informasi tentang keputusan yang membingungkan ini. + +## Tugas + +[Cobalah di Excel](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diingat bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/3-Data-Visualization/11-visualization-proportions/assignment.md b/translations/id/3-Data-Visualization/11-visualization-proportions/assignment.md new file mode 100644 index 00000000..0acdbc71 --- /dev/null +++ b/translations/id/3-Data-Visualization/11-visualization-proportions/assignment.md @@ -0,0 +1,25 @@ + +# Coba di Excel + +## Petunjuk + +Tahukah Anda bahwa Anda dapat membuat grafik donat, pai, dan waffle di Excel? Gunakan dataset pilihan Anda untuk membuat ketiga grafik ini langsung di lembar kerja Excel. + +## Rubrik + +| Luar Biasa | Memadai | Perlu Peningkatan | +| ------------------------------------------------------- | ------------------------------------------------ | ----------------------------------------------------- | +| Lembar kerja Excel disajikan dengan ketiga grafik | Lembar kerja Excel disajikan dengan dua grafik | Lembar kerja Excel disajikan dengan hanya satu grafik | + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diingat bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/3-Data-Visualization/12-visualization-relationships/README.md b/translations/id/3-Data-Visualization/12-visualization-relationships/README.md new file mode 100644 index 00000000..a4d0846f --- /dev/null +++ b/translations/id/3-Data-Visualization/12-visualization-relationships/README.md @@ -0,0 +1,186 @@ + +# Visualisasi Hubungan: Semua Tentang Madu 🍯 + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/12-Visualizing-Relationships.png)| +|:---:| +|Visualisasi Hubungan - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +Melanjutkan fokus penelitian kita pada alam, mari kita temukan visualisasi menarik untuk menunjukkan hubungan antara berbagai jenis madu, berdasarkan dataset yang berasal dari [United States Department of Agriculture](https://www.nass.usda.gov/About_NASS/index.php). + +Dataset ini, yang terdiri dari sekitar 600 item, menampilkan produksi madu di banyak negara bagian AS. Sebagai contoh, Anda dapat melihat jumlah koloni, hasil per koloni, total produksi, stok, harga per pon, dan nilai madu yang diproduksi di negara bagian tertentu dari tahun 1998-2012, dengan satu baris per tahun untuk setiap negara bagian. + +Akan menarik untuk memvisualisasikan hubungan antara produksi tahunan suatu negara bagian dan, misalnya, harga madu di negara bagian tersebut. Alternatifnya, Anda dapat memvisualisasikan hubungan antara hasil madu per koloni di berbagai negara bagian. Rentang tahun ini mencakup 'CCD' atau 'Colony Collapse Disorder' yang pertama kali terlihat pada tahun 2006 (http://npic.orst.edu/envir/ccd.html), sehingga dataset ini menjadi bahan studi yang menyentuh. 🐝 + +## [Kuis Pra-Pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/22) + +Dalam pelajaran ini, Anda dapat menggunakan Seaborn, yang telah Anda gunakan sebelumnya, sebagai pustaka yang baik untuk memvisualisasikan hubungan antara variabel. Yang sangat menarik adalah penggunaan fungsi `relplot` dari Seaborn yang memungkinkan scatter plot dan line plot untuk dengan cepat memvisualisasikan '[hubungan statistik](https://seaborn.pydata.org/tutorial/relational.html?highlight=relationships)', yang memungkinkan data scientist memahami lebih baik bagaimana variabel saling berhubungan. + +## Scatterplot + +Gunakan scatterplot untuk menunjukkan bagaimana harga madu berkembang dari tahun ke tahun, per negara bagian. Seaborn, menggunakan `relplot`, dengan mudah mengelompokkan data negara bagian dan menampilkan titik data untuk data kategoris dan numerik. + +Mari kita mulai dengan mengimpor data dan Seaborn: + +```python +import pandas as pd +import matplotlib.pyplot as plt +import seaborn as sns +honey = pd.read_csv('../../data/honey.csv') +honey.head() +``` +Anda akan melihat bahwa data madu memiliki beberapa kolom menarik, termasuk tahun dan harga per pon. Mari kita eksplorasi data ini, dikelompokkan berdasarkan negara bagian AS: + +| state | numcol | yieldpercol | totalprod | stocks | priceperlb | prodvalue | year | +| ----- | ------ | ----------- | --------- | -------- | ---------- | --------- | ---- | +| AL | 16000 | 71 | 1136000 | 159000 | 0.72 | 818000 | 1998 | +| AZ | 55000 | 60 | 3300000 | 1485000 | 0.64 | 2112000 | 1998 | +| AR | 53000 | 65 | 3445000 | 1688000 | 0.59 | 2033000 | 1998 | +| CA | 450000 | 83 | 37350000 | 12326000 | 0.62 | 23157000 | 1998 | +| CO | 27000 | 72 | 1944000 | 1594000 | 0.7 | 1361000 | 1998 | + +Buat scatterplot dasar untuk menunjukkan hubungan antara harga per pon madu dan asal negara bagian AS. Buat sumbu `y` cukup tinggi untuk menampilkan semua negara bagian: + +```python +sns.relplot(x="priceperlb", y="state", data=honey, height=15, aspect=.5); +``` +![scatterplot 1](../../../../translated_images/scatter1.5e1aa5fd6706c5d12b5e503ccb77f8a930f8620f539f524ddf56a16c039a5d2f.id.png) + +Sekarang, tunjukkan data yang sama dengan skema warna madu untuk menunjukkan bagaimana harga berkembang dari tahun ke tahun. Anda dapat melakukannya dengan menambahkan parameter 'hue' untuk menunjukkan perubahan dari tahun ke tahun: + +> ✅ Pelajari lebih lanjut tentang [palet warna yang dapat Anda gunakan di Seaborn](https://seaborn.pydata.org/tutorial/color_palettes.html) - coba skema warna pelangi yang indah! + +```python +sns.relplot(x="priceperlb", y="state", hue="year", palette="YlOrBr", data=honey, height=15, aspect=.5); +``` +![scatterplot 2](../../../../translated_images/scatter2.c0041a58621ca702990b001aa0b20cd68c1e1814417139af8a7211a2bed51c5f.id.png) + +Dengan perubahan skema warna ini, Anda dapat melihat bahwa ada perkembangan yang jelas selama bertahun-tahun dalam hal harga madu per pon. Memang, jika Anda melihat sampel data untuk memverifikasi (pilih negara bagian tertentu, misalnya Arizona), Anda dapat melihat pola kenaikan harga dari tahun ke tahun, dengan beberapa pengecualian: + +| state | numcol | yieldpercol | totalprod | stocks | priceperlb | prodvalue | year | +| ----- | ------ | ----------- | --------- | ------- | ---------- | --------- | ---- | +| AZ | 55000 | 60 | 3300000 | 1485000 | 0.64 | 2112000 | 1998 | +| AZ | 52000 | 62 | 3224000 | 1548000 | 0.62 | 1999000 | 1999 | +| AZ | 40000 | 59 | 2360000 | 1322000 | 0.73 | 1723000 | 2000 | +| AZ | 43000 | 59 | 2537000 | 1142000 | 0.72 | 1827000 | 2001 | +| AZ | 38000 | 63 | 2394000 | 1197000 | 1.08 | 2586000 | 2002 | +| AZ | 35000 | 72 | 2520000 | 983000 | 1.34 | 3377000 | 2003 | +| AZ | 32000 | 55 | 1760000 | 774000 | 1.11 | 1954000 | 2004 | +| AZ | 36000 | 50 | 1800000 | 720000 | 1.04 | 1872000 | 2005 | +| AZ | 30000 | 65 | 1950000 | 839000 | 0.91 | 1775000 | 2006 | +| AZ | 30000 | 64 | 1920000 | 902000 | 1.26 | 2419000 | 2007 | +| AZ | 25000 | 64 | 1600000 | 336000 | 1.26 | 2016000 | 2008 | +| AZ | 20000 | 52 | 1040000 | 562000 | 1.45 | 1508000 | 2009 | +| AZ | 24000 | 77 | 1848000 | 665000 | 1.52 | 2809000 | 2010 | +| AZ | 23000 | 53 | 1219000 | 427000 | 1.55 | 1889000 | 2011 | +| AZ | 22000 | 46 | 1012000 | 253000 | 1.79 | 1811000 | 2012 | + +Cara lain untuk memvisualisasikan perkembangan ini adalah dengan menggunakan ukuran, bukan warna. Untuk pengguna yang buta warna, ini mungkin menjadi pilihan yang lebih baik. Edit visualisasi Anda untuk menunjukkan kenaikan harga dengan peningkatan lingkaran titik: + +```python +sns.relplot(x="priceperlb", y="state", size="year", data=honey, height=15, aspect=.5); +``` +Anda dapat melihat ukuran titik yang secara bertahap meningkat. + +![scatterplot 3](../../../../translated_images/scatter3.3c160a3d1dcb36b37900ebb4cf97f34036f28ae2b7b8e6062766c7c1dfc00853.id.png) + +Apakah ini hanya kasus sederhana dari penawaran dan permintaan? Karena faktor seperti perubahan iklim dan keruntuhan koloni, apakah madu yang tersedia untuk dibeli semakin sedikit dari tahun ke tahun, sehingga harga meningkat? + +Untuk menemukan korelasi antara beberapa variabel dalam dataset ini, mari kita eksplorasi beberapa grafik garis. + +## Grafik Garis + +Pertanyaan: Apakah ada kenaikan harga madu per pon yang jelas dari tahun ke tahun? Anda dapat dengan mudah menemukannya dengan membuat grafik garis tunggal: + +```python +sns.relplot(x="year", y="priceperlb", kind="line", data=honey); +``` +Jawaban: Ya, dengan beberapa pengecualian sekitar tahun 2003: + +![line chart 1](../../../../translated_images/line1.f36eb465229a3b1fe385cdc93861aab3939de987d504b05de0b6cd567ef79f43.id.png) + +✅ Karena Seaborn mengagregasi data di sekitar satu garis, ia menampilkan "pengukuran ganda pada setiap nilai x dengan memplot rata-rata dan interval kepercayaan 95% di sekitar rata-rata". [Sumber](https://seaborn.pydata.org/tutorial/relational.html). Perilaku yang memakan waktu ini dapat dinonaktifkan dengan menambahkan `ci=None`. + +Pertanyaan: Nah, pada tahun 2003 apakah kita juga melihat lonjakan pasokan madu? Bagaimana jika Anda melihat total produksi dari tahun ke tahun? + +```python +sns.relplot(x="year", y="totalprod", kind="line", data=honey); +``` + +![line chart 2](../../../../translated_images/line2.a5b3493dc01058af6402e657aaa9ae1125fafb5e7d6630c777aa60f900a544e4.id.png) + +Jawaban: Tidak benar-benar. Jika Anda melihat total produksi, sebenarnya tampaknya meningkat pada tahun tersebut, meskipun secara umum jumlah madu yang diproduksi menurun selama tahun-tahun ini. + +Pertanyaan: Dalam hal ini, apa yang bisa menyebabkan lonjakan harga madu sekitar tahun 2003? + +Untuk menemukan ini, Anda dapat mengeksplorasi facet grid. + +## Facet Grids + +Facet grid mengambil satu aspek dari dataset Anda (dalam kasus ini, Anda dapat memilih 'tahun' untuk menghindari terlalu banyak aspek yang dihasilkan). Seaborn kemudian dapat membuat plot untuk masing-masing aspek tersebut berdasarkan koordinat x dan y yang Anda pilih untuk perbandingan visual yang lebih mudah. Apakah tahun 2003 menonjol dalam jenis perbandingan ini? + +Buat facet grid dengan terus menggunakan `relplot` seperti yang direkomendasikan oleh [dokumentasi Seaborn](https://seaborn.pydata.org/generated/seaborn.FacetGrid.html?highlight=facetgrid#seaborn.FacetGrid). + +```python +sns.relplot( + data=honey, + x="yieldpercol", y="numcol", + col="year", + col_wrap=3, + kind="line" +``` +Dalam visualisasi ini, Anda dapat membandingkan hasil per koloni dan jumlah koloni dari tahun ke tahun, berdampingan dengan pengaturan wrap pada 3 untuk kolom: + +![facet grid](../../../../translated_images/facet.6a34851dcd540050dcc0ead741be35075d776741668dd0e42f482c89b114c217.id.png) + +Untuk dataset ini, tidak ada yang secara khusus menonjol terkait jumlah koloni dan hasilnya, dari tahun ke tahun dan negara bagian ke negara bagian. Apakah ada cara lain untuk menemukan korelasi antara kedua variabel ini? + +## Grafik Garis Ganda + +Cobalah grafik multiline dengan menumpangkan dua grafik garis di atas satu sama lain, menggunakan 'despine' dari Seaborn untuk menghapus tulang belakang atas dan kanan mereka, dan menggunakan `ax.twinx` [berasal dari Matplotlib](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.twinx.html). Twinx memungkinkan grafik untuk berbagi sumbu x dan menampilkan dua sumbu y. Jadi, tampilkan hasil per koloni dan jumlah koloni, ditumpangkan: + +```python +fig, ax = plt.subplots(figsize=(12,6)) +lineplot = sns.lineplot(x=honey['year'], y=honey['numcol'], data=honey, + label = 'Number of bee colonies', legend=False) +sns.despine() +plt.ylabel('# colonies') +plt.title('Honey Production Year over Year'); + +ax2 = ax.twinx() +lineplot2 = sns.lineplot(x=honey['year'], y=honey['yieldpercol'], ax=ax2, color="r", + label ='Yield per colony', legend=False) +sns.despine(right=False) +plt.ylabel('colony yield') +ax.figure.legend(); +``` +![superimposed plots](../../../../translated_images/dual-line.a4c28ce659603fab2c003f4df816733df2bf41d1facb7de27989ec9afbf01b33.id.png) + +Meskipun tidak ada yang mencolok di sekitar tahun 2003, ini memungkinkan kita mengakhiri pelajaran ini dengan catatan yang sedikit lebih bahagia: meskipun jumlah koloni secara keseluruhan menurun, jumlah koloni mulai stabil meskipun hasil per koloni menurun. + +Semangat, lebah, semangat! + +🐝❤️ +## 🚀 Tantangan + +Dalam pelajaran ini, Anda belajar lebih banyak tentang penggunaan scatterplot dan line grid lainnya, termasuk facet grid. Tantang diri Anda untuk membuat facet grid menggunakan dataset yang berbeda, mungkin yang telah Anda gunakan sebelumnya dalam pelajaran ini. Perhatikan berapa lama waktu yang dibutuhkan untuk membuatnya dan bagaimana Anda perlu berhati-hati tentang berapa banyak grid yang perlu Anda gambar menggunakan teknik ini. +## [Kuis Pasca-Pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/23) + +## Tinjauan & Studi Mandiri + +Grafik garis bisa sederhana atau cukup kompleks. Lakukan sedikit pembacaan di [dokumentasi Seaborn](https://seaborn.pydata.org/generated/seaborn.lineplot.html) tentang berbagai cara Anda dapat membangunnya. Cobalah untuk meningkatkan grafik garis yang Anda buat dalam pelajaran ini dengan metode lain yang tercantum dalam dokumen. +## Tugas + +[Masuk ke sarang lebah](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diketahui bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/3-Data-Visualization/12-visualization-relationships/assignment.md b/translations/id/3-Data-Visualization/12-visualization-relationships/assignment.md new file mode 100644 index 00000000..c03758fe --- /dev/null +++ b/translations/id/3-Data-Visualization/12-visualization-relationships/assignment.md @@ -0,0 +1,25 @@ + +# Menyelami Sarang Lebah + +## Instruksi + +Dalam pelajaran ini, Anda mulai melihat dataset tentang lebah dan produksi madunya selama periode waktu yang menunjukkan penurunan populasi koloni lebah secara keseluruhan. Selami lebih dalam dataset ini dan buat notebook yang dapat menceritakan kisah tentang kesehatan populasi lebah, negara bagian demi negara bagian dan tahun demi tahun. Apakah Anda menemukan sesuatu yang menarik dari dataset ini? + +## Rubrik + +| Luar Biasa | Memadai | Perlu Perbaikan | +| ------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------- | ---------------------------------------- | +| Sebuah notebook disajikan dengan cerita yang dilengkapi dengan setidaknya tiga grafik berbeda yang menunjukkan aspek-aspek dataset, negara bagian demi negara bagian dan tahun demi tahun | Notebook kurang salah satu elemen ini | Notebook kurang dua elemen ini | + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diingat bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/3-Data-Visualization/13-meaningful-visualizations/README.md b/translations/id/3-Data-Visualization/13-meaningful-visualizations/README.md new file mode 100644 index 00000000..6a9dc261 --- /dev/null +++ b/translations/id/3-Data-Visualization/13-meaningful-visualizations/README.md @@ -0,0 +1,182 @@ + +# Membuat Visualisasi yang Bermakna + +|![Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev)](../../sketchnotes/13-MeaningfulViz.png)| +|:---:| +| Visualisasi yang Bermakna - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +> "Jika Anda menyiksa data cukup lama, data akan mengaku apa saja" -- [Ronald Coase](https://en.wikiquote.org/wiki/Ronald_Coase) + +Salah satu keterampilan dasar seorang ilmuwan data adalah kemampuan untuk membuat visualisasi data yang bermakna yang membantu menjawab pertanyaan yang Anda miliki. Sebelum memvisualisasikan data Anda, pastikan data tersebut telah dibersihkan dan dipersiapkan, seperti yang telah Anda lakukan di pelajaran sebelumnya. Setelah itu, Anda dapat mulai memutuskan cara terbaik untuk menyajikan data tersebut. + +Dalam pelajaran ini, Anda akan mempelajari: + +1. Cara memilih jenis grafik yang tepat +2. Cara menghindari grafik yang menyesatkan +3. Cara bekerja dengan warna +4. Cara menata grafik agar mudah dibaca +5. Cara membuat solusi grafik animasi atau 3D +6. Cara membuat visualisasi yang kreatif + +## [Kuis Pra-Pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/24) + +## Memilih jenis grafik yang tepat + +Dalam pelajaran sebelumnya, Anda telah bereksperimen dengan membangun berbagai visualisasi data menarik menggunakan Matplotlib dan Seaborn. Secara umum, Anda dapat memilih [jenis grafik yang tepat](https://chartio.com/learn/charts/how-to-select-a-data-vizualization/) untuk pertanyaan yang Anda ajukan menggunakan tabel berikut: + +| Anda perlu: | Gunakan: | +| -------------------------- | ------------------------------ | +| Menunjukkan tren data dari waktu ke waktu | Garis | +| Membandingkan kategori | Batang, Pie | +| Membandingkan total | Pie, Batang Bertumpuk | +| Menunjukkan hubungan | Scatter, Garis, Facet, Dual Line | +| Menunjukkan distribusi | Scatter, Histogram, Box | +| Menunjukkan proporsi | Pie, Donut, Waffle | + +> ✅ Bergantung pada komposisi data Anda, Anda mungkin perlu mengonversinya dari teks ke numerik agar grafik tertentu dapat mendukungnya. + +## Menghindari penyesatan + +Meskipun seorang ilmuwan data berhati-hati memilih grafik yang tepat untuk data yang tepat, ada banyak cara data dapat ditampilkan untuk membuktikan suatu poin, sering kali dengan mengorbankan integritas data itu sendiri. Ada banyak contoh grafik dan infografis yang menyesatkan! + +[![How Charts Lie oleh Alberto Cairo](../../../../translated_images/tornado.9f42168791208f970d6faefc11d1226d7ca89518013b14aa66b1c9edcd7678d2.id.png)](https://www.youtube.com/watch?v=oX74Nge8Wkw "How charts lie") + +> 🎥 Klik gambar di atas untuk menonton konferensi tentang grafik yang menyesatkan + +Grafik ini membalik sumbu X untuk menunjukkan kebalikan dari kebenaran, berdasarkan tanggal: + +![grafik buruk 1](../../../../translated_images/bad-chart-1.93130f495b748bedfb3423d91b1e754d9026e17f94ad967aecdc9ca7203373bf.id.png) + +[Grafik ini](https://media.firstcoastnews.com/assets/WTLV/images/170ae16f-4643-438f-b689-50d66ca6a8d8/170ae16f-4643-438f-b689-50d66ca6a8d8_1140x641.jpg) bahkan lebih menyesatkan, karena mata tertarik ke kanan untuk menyimpulkan bahwa, seiring waktu, kasus COVID menurun di berbagai wilayah. Faktanya, jika Anda melihat lebih dekat pada tanggalnya, Anda akan menemukan bahwa tanggal-tanggal tersebut telah diatur ulang untuk memberikan tren menurun yang menyesatkan. + +![grafik buruk 2](../../../../translated_images/bad-chart-2.c20e36dd4e6f617c0c325878dd421a563885bbf30a394884c147438827254e0e.id.jpg) + +Contoh terkenal ini menggunakan warna DAN sumbu Y yang dibalik untuk menyesatkan: alih-alih menyimpulkan bahwa kematian akibat senjata meningkat setelah undang-undang yang mendukung senjata diberlakukan, mata justru tertipu untuk berpikir sebaliknya: + +![grafik buruk 3](../../../../translated_images/bad-chart-3.6865d0afac4108d737558d90a61547d23a8722896397ec792264ee51a1be4be5.id.jpg) + +Grafik aneh ini menunjukkan bagaimana proporsi dapat dimanipulasi, dengan efek yang menggelikan: + +![grafik buruk 4](../../../../translated_images/bad-chart-4.68cfdf4011b454471053ee1231172747e1fbec2403b4443567f1dc678134f4f2.id.jpg) + +Membandingkan hal-hal yang tidak sebanding adalah trik licik lainnya. Ada [situs web yang luar biasa](https://tylervigen.com/spurious-correlations) tentang 'korelasi palsu' yang menampilkan 'fakta' yang menghubungkan hal-hal seperti tingkat perceraian di Maine dan konsumsi margarin. Sebuah grup Reddit juga mengumpulkan [penggunaan data yang buruk](https://www.reddit.com/r/dataisugly/top/?t=all). + +Penting untuk memahami betapa mudahnya mata dapat tertipu oleh grafik yang menyesatkan. Bahkan jika niat ilmuwan data baik, memilih jenis grafik yang buruk, seperti grafik pie dengan terlalu banyak kategori, dapat menyesatkan. + +## Warna + +Anda telah melihat dalam grafik 'kekerasan senjata di Florida' di atas bagaimana warna dapat memberikan lapisan makna tambahan pada grafik, terutama grafik yang tidak dirancang menggunakan pustaka seperti Matplotlib dan Seaborn yang dilengkapi dengan berbagai pustaka warna dan palet yang telah diverifikasi. Jika Anda membuat grafik secara manual, pelajari sedikit tentang [teori warna](https://colormatters.com/color-and-design/basic-color-theory). + +> ✅ Perhatikan, saat merancang grafik, bahwa aksesibilitas adalah aspek penting dari visualisasi. Beberapa pengguna Anda mungkin buta warna - apakah grafik Anda dapat ditampilkan dengan baik untuk pengguna dengan gangguan penglihatan? + +Berhati-hatilah saat memilih warna untuk grafik Anda, karena warna dapat menyampaikan makna yang mungkin tidak Anda maksudkan. 'Wanita merah muda' dalam grafik 'tinggi badan' di atas menyampaikan makna 'feminin' yang menambah keanehan grafik itu sendiri. + +Meskipun [makna warna](https://colormatters.com/color-symbolism/the-meanings-of-colors) mungkin berbeda di berbagai belahan dunia, dan cenderung berubah makna sesuai dengan nuansanya, secara umum makna warna meliputi: + +| Warna | Makna | +| ------ | ------------------- | +| merah | kekuatan | +| biru | kepercayaan, loyalitas | +| kuning | kebahagiaan, kehati-hatian | +| hijau | ekologi, keberuntungan, iri | +| ungu | kebahagiaan | +| oranye | semangat | + +Jika Anda diminta untuk membuat grafik dengan warna khusus, pastikan grafik Anda dapat diakses dan warna yang Anda pilih sesuai dengan makna yang ingin Anda sampaikan. + +## Menata grafik agar mudah dibaca + +Grafik tidak akan bermakna jika tidak dapat dibaca! Luangkan waktu untuk mempertimbangkan penataan lebar dan tinggi grafik Anda agar sesuai dengan data Anda. Jika satu variabel (seperti semua 50 negara bagian) perlu ditampilkan, tampilkan secara vertikal pada sumbu Y jika memungkinkan untuk menghindari grafik yang harus digulir secara horizontal. + +Beri label pada sumbu Anda, sediakan legenda jika diperlukan, dan tawarkan tooltip untuk pemahaman data yang lebih baik. + +Jika data Anda berupa teks dan panjang pada sumbu X, Anda dapat memiringkan teks untuk meningkatkan keterbacaan. [Matplotlib](https://matplotlib.org/stable/tutorials/toolkits/mplot3d.html) menawarkan pemetaan 3D, jika data Anda mendukungnya. Visualisasi data yang canggih dapat dibuat menggunakan `mpl_toolkits.mplot3d`. + +![grafik 3D](../../../../translated_images/3d.0cec12bcc60f0ce7284c63baed1411a843e24716f7d7425de878715ebad54a15.id.png) + +## Tampilan grafik animasi dan 3D + +Beberapa visualisasi data terbaik saat ini bersifat animasi. Shirley Wu memiliki karya luar biasa yang dibuat dengan D3, seperti '[film flowers](http://bl.ocks.org/sxywu/raw/d612c6c653fb8b4d7ff3d422be164a5d/)', di mana setiap bunga adalah visualisasi dari sebuah film. Contoh lain untuk Guardian adalah 'bussed out', pengalaman interaktif yang menggabungkan visualisasi dengan Greensock dan D3 serta format artikel scrollytelling untuk menunjukkan bagaimana NYC menangani masalah tunawisma dengan mengirimkan orang keluar dari kota. + +![busing](../../../../translated_images/busing.7b9e3b41cd4b981c6d63922cd82004cc1cf18895155536c1d98fcc0999bdd23e.id.png) + +> "Bussed Out: How America Moves its Homeless" dari [the Guardian](https://www.theguardian.com/us-news/ng-interactive/2017/dec/20/bussed-out-america-moves-homeless-people-country-study). Visualisasi oleh Nadieh Bremer & Shirley Wu + +Meskipun pelajaran ini tidak cukup mendalam untuk mengajarkan pustaka visualisasi yang kuat ini, cobalah D3 dalam aplikasi Vue.js menggunakan pustaka untuk menampilkan visualisasi buku "Dangerous Liaisons" sebagai jaringan sosial animasi. + +> "Les Liaisons Dangereuses" adalah novel epistolari, atau novel yang disajikan sebagai serangkaian surat. Ditulis pada tahun 1782 oleh Choderlos de Laclos, novel ini menceritakan tentang manuver sosial yang kejam dan tidak bermoral dari dua protagonis yang bersaing dari aristokrasi Prancis pada akhir abad ke-18, Vicomte de Valmont dan Marquise de Merteuil. Keduanya akhirnya mengalami kehancuran, tetapi tidak tanpa menyebabkan kerusakan sosial yang besar. Novel ini berkembang sebagai serangkaian surat yang ditulis kepada berbagai orang di lingkaran mereka, merencanakan balas dendam atau sekadar membuat masalah. Buat visualisasi surat-surat ini untuk menemukan tokoh utama dalam narasi, secara visual. + +Anda akan menyelesaikan aplikasi web yang akan menampilkan tampilan animasi dari jaringan sosial ini. Aplikasi ini menggunakan pustaka yang dibuat untuk membuat [visualisasi jaringan](https://github.com/emiliorizzo/vue-d3-network) menggunakan Vue.js dan D3. Ketika aplikasi berjalan, Anda dapat menarik node di layar untuk mengacak data. + +![liaisons](../../../../translated_images/liaisons.7b440b28f6d07ea430244fdf1fc4c64ff48f473f143b8e921846eda1c302aeba.id.png) + +## Proyek: Membuat grafik untuk menunjukkan jaringan menggunakan D3.js + +> Folder pelajaran ini mencakup folder `solution` di mana Anda dapat menemukan proyek yang telah selesai, untuk referensi Anda. + +1. Ikuti instruksi dalam file README.md di root folder starter. Pastikan Anda memiliki NPM dan Node.js yang berjalan di komputer Anda sebelum menginstal dependensi proyek Anda. + +2. Buka folder `starter/src`. Anda akan menemukan folder `assets` di mana terdapat file .json dengan semua surat dari novel, diberi nomor, dengan anotasi 'to' dan 'from'. + +3. Lengkapi kode di `components/Nodes.vue` untuk mengaktifkan visualisasi. Cari metode bernama `createLinks()` dan tambahkan loop bersarang berikut. + +Loop melalui objek .json untuk menangkap data 'to' dan 'from' untuk surat-surat dan membangun objek `links` sehingga pustaka visualisasi dapat mengonsumsinya: + +```javascript +//loop through letters + let f = 0; + let t = 0; + for (var i = 0; i < letters.length; i++) { + for (var j = 0; j < characters.length; j++) { + + if (characters[j] == letters[i].from) { + f = j; + } + if (characters[j] == letters[i].to) { + t = j; + } + } + this.links.push({ sid: f, tid: t }); + } + ``` + +Jalankan aplikasi Anda dari terminal (npm run serve) dan nikmati visualisasinya! + +## 🚀 Tantangan + +Jelajahi internet untuk menemukan visualisasi yang menyesatkan. Bagaimana penulis menipu pengguna, dan apakah itu disengaja? Cobalah memperbaiki visualisasi tersebut untuk menunjukkan bagaimana seharusnya tampilannya. + +## [Kuis Pasca-Pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/25) + +## Tinjauan & Studi Mandiri + +Berikut beberapa artikel untuk dibaca tentang visualisasi data yang menyesatkan: + +https://gizmodo.com/how-to-lie-with-data-visualization-1563576606 + +http://ixd.prattsi.org/2017/12/visual-lies-usability-in-deceptive-data-visualizations/ + +Lihat visualisasi menarik ini untuk aset dan artefak sejarah: + +https://handbook.pubpub.org/ + +Baca artikel ini tentang bagaimana animasi dapat meningkatkan visualisasi Anda: + +https://medium.com/@EvanSinar/use-animation-to-supercharge-data-visualization-cd905a882ad4 + +## Tugas + +[Buat visualisasi kustom Anda sendiri](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diingat bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/3-Data-Visualization/13-meaningful-visualizations/assignment.md b/translations/id/3-Data-Visualization/13-meaningful-visualizations/assignment.md new file mode 100644 index 00000000..c7e3652d --- /dev/null +++ b/translations/id/3-Data-Visualization/13-meaningful-visualizations/assignment.md @@ -0,0 +1,25 @@ + +# Bangun Visualisasi Kustom Anda Sendiri + +## Instruksi + +Gunakan contoh kode dalam proyek ini untuk membuat sebuah jejaring sosial, dan buat data tiruan dari interaksi sosial Anda sendiri. Anda bisa memetakan penggunaan media sosial Anda atau membuat diagram anggota keluarga Anda. Buatlah aplikasi web yang menarik yang menampilkan visualisasi unik dari sebuah jejaring sosial. + +## Rubrik + +Luar Biasa | Memadai | Perlu Peningkatan +--- | --- | --- | +Sebuah repo GitHub disediakan dengan kode yang berjalan dengan baik (cobalah untuk menerapkannya sebagai aplikasi web statis) dan memiliki README yang diberi anotasi dengan penjelasan tentang proyek | Repo tidak berjalan dengan baik atau tidak terdokumentasi dengan baik | Repo tidak berjalan dengan baik dan tidak terdokumentasi dengan baik + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/3-Data-Visualization/13-meaningful-visualizations/solution/README.md b/translations/id/3-Data-Visualization/13-meaningful-visualizations/solution/README.md new file mode 100644 index 00000000..9f6e5165 --- /dev/null +++ b/translations/id/3-Data-Visualization/13-meaningful-visualizations/solution/README.md @@ -0,0 +1,40 @@ + +# Proyek visualisasi data Dangerous Liaisons + +Untuk memulai, pastikan Anda sudah memiliki NPM dan Node yang berjalan di mesin Anda. Instal dependensi (npm install) dan kemudian jalankan proyek secara lokal (npm run serve): + +## Pengaturan Proyek +``` +npm install +``` + +### Kompilasi dan pemuatan ulang otomatis untuk pengembangan +``` +npm run serve +``` + +### Kompilasi dan minifikasi untuk produksi +``` +npm run build +``` + +### Linting dan perbaikan file +``` +npm run lint +``` + +### Kustomisasi konfigurasi +Lihat [Referensi Konfigurasi](https://cli.vuejs.org/config/). + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diingat bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/3-Data-Visualization/13-meaningful-visualizations/starter/README.md b/translations/id/3-Data-Visualization/13-meaningful-visualizations/starter/README.md new file mode 100644 index 00000000..888387bb --- /dev/null +++ b/translations/id/3-Data-Visualization/13-meaningful-visualizations/starter/README.md @@ -0,0 +1,40 @@ + +# Proyek visualisasi data Dangerous Liaisons + +Untuk memulai, pastikan Anda memiliki NPM dan Node yang berjalan di mesin Anda. Instal dependensi (npm install) dan kemudian jalankan proyek secara lokal (npm run serve): + +## Pengaturan proyek +``` +npm install +``` + +### Kompilasi dan pemuatan ulang otomatis untuk pengembangan +``` +npm run serve +``` + +### Kompilasi dan minifikasi untuk produksi +``` +npm run build +``` + +### Linting dan perbaikan file +``` +npm run lint +``` + +### Sesuaikan konfigurasi +Lihat [Referensi Konfigurasi](https://cli.vuejs.org/config/). + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diingat bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/3-Data-Visualization/R/09-visualization-quantities/README.md b/translations/id/3-Data-Visualization/R/09-visualization-quantities/README.md new file mode 100644 index 00000000..b223863c --- /dev/null +++ b/translations/id/3-Data-Visualization/R/09-visualization-quantities/README.md @@ -0,0 +1,230 @@ + +# Visualisasi Kuantitas +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](https://github.com/microsoft/Data-Science-For-Beginners/blob/main/sketchnotes/09-Visualizing-Quantities.png)| +|:---:| +| Visualisasi Kuantitas - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +Dalam pelajaran ini, Anda akan mempelajari cara menggunakan beberapa pustaka paket R yang tersedia untuk membuat visualisasi menarik seputar konsep kuantitas. Dengan menggunakan dataset yang telah dibersihkan tentang burung-burung di Minnesota, Anda dapat mempelajari banyak fakta menarik tentang satwa liar lokal. +## [Kuis sebelum pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/16) + +## Mengamati lebar sayap dengan ggplot2 +Pustaka yang sangat baik untuk membuat plot dan grafik sederhana maupun kompleks dari berbagai jenis adalah [ggplot2](https://cran.r-project.org/web/packages/ggplot2/index.html). Secara umum, proses memplot data menggunakan pustaka ini melibatkan identifikasi bagian dari dataframe yang ingin Anda targetkan, melakukan transformasi data yang diperlukan, menetapkan nilai sumbu x dan y, memutuskan jenis plot yang akan ditampilkan, dan kemudian menampilkan plot tersebut. + +`ggplot2` adalah sistem untuk membuat grafik secara deklaratif, berdasarkan The Grammar of Graphics. [Grammar of Graphics](https://en.wikipedia.org/wiki/Ggplot2) adalah skema umum untuk visualisasi data yang memecah grafik menjadi komponen semantik seperti skala dan lapisan. Dengan kata lain, kemudahan membuat plot dan grafik untuk data univariat atau multivariat dengan sedikit kode menjadikan `ggplot2` paket paling populer yang digunakan untuk visualisasi di R. Pengguna memberi tahu `ggplot2` cara memetakan variabel ke estetika, primitif grafis yang akan digunakan, dan `ggplot2` mengurus sisanya. + +> ✅ Plot = Data + Estetika + Geometri +> - Data mengacu pada dataset +> - Estetika menunjukkan variabel yang akan dipelajari (variabel x dan y) +> - Geometri mengacu pada jenis plot (plot garis, plot batang, dll.) + +Pilih geometri terbaik (jenis plot) sesuai dengan data Anda dan cerita yang ingin Anda sampaikan melalui plot. + +> - Untuk menganalisis tren: garis, kolom +> - Untuk membandingkan nilai: batang, kolom, pie, scatterplot +> - Untuk menunjukkan bagaimana bagian-bagian berhubungan dengan keseluruhan: pie +> - Untuk menunjukkan distribusi data: scatterplot, batang +> - Untuk menunjukkan hubungan antar nilai: garis, scatterplot, bubble + +✅ Anda juga dapat melihat [cheatsheet](https://nyu-cdsc.github.io/learningr/assets/data-visualization-2.1.pdf) deskriptif ini untuk ggplot2. + +## Membuat plot garis tentang nilai lebar sayap burung + +Buka konsol R dan impor dataset. +> Catatan: Dataset disimpan di root repositori ini dalam folder `/data`. + +Mari kita impor dataset dan amati bagian atas (5 baris pertama) data. + +```r +birds <- read.csv("../../data/birds.csv",fileEncoding="UTF-8-BOM") +head(birds) +``` +Bagian atas data memiliki campuran teks dan angka: + +| | Nama | NamaIlmiah | Kategori | Ordo | Famili | Genus | StatusKonservasi | PanjangMin | PanjangMax | MassaTubuhMin | MassaTubuhMax | LebarSayapMin | LebarSayapMax | +| ---: | :--------------------------- | :--------------------- | :-------------------- | :----------- | :------- | :---------- | :----------------- | --------: | --------: | ----------: | ----------: | ----------: | ----------: | +| 0 | Black-bellied whistling-duck | Dendrocygna autumnalis | Bebek/Angsa/BurungAir | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 | +| 1 | Fulvous whistling-duck | Dendrocygna bicolor | Bebek/Angsa/BurungAir | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 | +| 2 | Snow goose | Anser caerulescens | Bebek/Angsa/BurungAir | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 | +| 3 | Ross's goose | Anser rossii | Bebek/Angsa/BurungAir | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 | +| 4 | Greater white-fronted goose | Anser albifrons | Bebek/Angsa/BurungAir | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 | + +Mari kita mulai dengan memplot beberapa data numerik menggunakan plot garis dasar. Misalnya, Anda ingin melihat lebar sayap maksimum untuk burung-burung menarik ini. + +```r +install.packages("ggplot2") +library("ggplot2") +ggplot(data=birds, aes(x=Name, y=MaxWingspan,group=1)) + + geom_line() +``` +Di sini, Anda menginstal paket `ggplot2` dan kemudian mengimpornya ke dalam workspace menggunakan perintah `library("ggplot2")`. Untuk memplot grafik apa pun di ggplot, fungsi `ggplot()` digunakan dan Anda menentukan dataset, variabel x dan y sebagai atribut. Dalam kasus ini, kita menggunakan fungsi `geom_line()` karena kita ingin memplot grafik garis. + +![MaxWingspan-lineplot](../../../../../translated_images/MaxWingspan-lineplot.b12169f99d26fdd263f291008dfd73c18a4ba8f3d32b1fda3d74af51a0a28616.id.png) + +Apa yang Anda perhatikan segera? Tampaknya ada setidaknya satu outlier - itu lebar sayap yang luar biasa! Lebar sayap lebih dari 2000+ sentimeter sama dengan lebih dari 20 meter - apakah ada Pterodactyl yang berkeliaran di Minnesota? Mari kita selidiki. + +Meskipun Anda dapat melakukan pengurutan cepat di Excel untuk menemukan outlier tersebut, yang mungkin adalah kesalahan pengetikan, lanjutkan proses visualisasi dengan bekerja dari dalam plot. + +Tambahkan label ke sumbu x untuk menunjukkan jenis burung yang dimaksud: + +```r +ggplot(data=birds, aes(x=Name, y=MaxWingspan,group=1)) + + geom_line() + + theme(axis.text.x = element_text(angle = 45, hjust=1))+ + xlab("Birds") + + ylab("Wingspan (CM)") + + ggtitle("Max Wingspan in Centimeters") +``` +Kami menentukan sudut dalam `theme` dan menentukan label sumbu x dan y dalam `xlab()` dan `ylab()` masing-masing. `ggtitle()` memberikan nama pada grafik/plot. + +![MaxWingspan-lineplot-improved](../../../../../translated_images/MaxWingspan-lineplot-improved.04b73b4d5a59552a6bc7590678899718e1f065abe9eada9ebb4148939b622fd4.id.png) + +Bahkan dengan rotasi label yang diatur ke 45 derajat, masih terlalu banyak untuk dibaca. Mari coba strategi yang berbeda: hanya beri label pada outlier dan atur label di dalam grafik. Anda dapat menggunakan grafik scatter untuk memberikan lebih banyak ruang untuk pelabelan: + +```r +ggplot(data=birds, aes(x=Name, y=MaxWingspan,group=1)) + + geom_point() + + geom_text(aes(label=ifelse(MaxWingspan>500,as.character(Name),'')),hjust=0,vjust=0) + + theme(axis.title.x=element_blank(), axis.text.x=element_blank(), axis.ticks.x=element_blank()) + ylab("Wingspan (CM)") + + ggtitle("Max Wingspan in Centimeters") + +``` +Apa yang terjadi di sini? Anda menggunakan fungsi `geom_point()` untuk memplot titik-titik scatter. Dengan ini, Anda menambahkan label untuk burung yang memiliki `MaxWingspan > 500` dan juga menyembunyikan label pada sumbu x untuk mengurangi kekacauan pada plot. + +Apa yang Anda temukan? + +![MaxWingspan-scatterplot](../../../../../translated_images/MaxWingspan-scatterplot.60dc9e0e19d32700283558f253841fdab5104abb62bc96f7d97f9c0ee857fa8b.id.png) + +## Memfilter data Anda + +Baik Bald Eagle maupun Prairie Falcon, meskipun mungkin burung yang sangat besar, tampaknya salah diberi label, dengan tambahan angka 0 pada lebar sayap maksimum mereka. Tidak mungkin Anda akan bertemu Bald Eagle dengan lebar sayap 25 meter, tetapi jika iya, beri tahu kami! Mari buat dataframe baru tanpa dua outlier tersebut: + +```r +birds_filtered <- subset(birds, MaxWingspan < 500) + +ggplot(data=birds_filtered, aes(x=Name, y=MaxWingspan,group=1)) + + geom_point() + + ylab("Wingspan (CM)") + + xlab("Birds") + + ggtitle("Max Wingspan in Centimeters") + + geom_text(aes(label=ifelse(MaxWingspan>500,as.character(Name),'')),hjust=0,vjust=0) + + theme(axis.text.x=element_blank(), axis.ticks.x=element_blank()) +``` +Kami membuat dataframe baru `birds_filtered` dan kemudian memplot grafik scatter. Dengan memfilter outlier, data Anda sekarang lebih kohesif dan dapat dipahami. + +![MaxWingspan-scatterplot-improved](../../../../../translated_images/MaxWingspan-scatterplot-improved.7d0af81658c65f3e75b8fedeb2335399e31108257e48db15d875ece608272051.id.png) + +Sekarang kita memiliki dataset yang lebih bersih setidaknya dalam hal lebar sayap, mari kita temukan lebih banyak tentang burung-burung ini. + +Meskipun grafik garis dan scatter dapat menampilkan informasi tentang nilai data dan distribusinya, kita ingin memikirkan nilai-nilai yang melekat dalam dataset ini. Anda dapat membuat visualisasi untuk menjawab pertanyaan berikut tentang kuantitas: + +> Berapa banyak kategori burung yang ada, dan berapa jumlahnya? +> Berapa banyak burung yang punah, terancam, langka, atau umum? +> Berapa banyak genus dan ordo yang ada dalam terminologi Linnaeus? +## Mengeksplorasi grafik batang + +Grafik batang praktis ketika Anda perlu menunjukkan pengelompokan data. Mari kita eksplorasi kategori burung yang ada dalam dataset ini untuk melihat mana yang paling umum berdasarkan jumlah. +Mari kita buat grafik batang pada data yang telah difilter. + +```r +install.packages("dplyr") +install.packages("tidyverse") + +library(lubridate) +library(scales) +library(dplyr) +library(ggplot2) +library(tidyverse) + +birds_filtered %>% group_by(Category) %>% + summarise(n=n(), + MinLength = mean(MinLength), + MaxLength = mean(MaxLength), + MinBodyMass = mean(MinBodyMass), + MaxBodyMass = mean(MaxBodyMass), + MinWingspan=mean(MinWingspan), + MaxWingspan=mean(MaxWingspan)) %>% + gather("key", "value", - c(Category, n)) %>% + ggplot(aes(x = Category, y = value, group = key, fill = key)) + + geom_bar(stat = "identity") + + scale_fill_manual(values = c("#D62728", "#FF7F0E", "#8C564B","#2CA02C", "#1F77B4", "#9467BD")) + + xlab("Category")+ggtitle("Birds of Minnesota") + +``` +Dalam cuplikan berikut, kami menginstal paket [dplyr](https://www.rdocumentation.org/packages/dplyr/versions/0.7.8) dan [lubridate](https://www.rdocumentation.org/packages/lubridate/versions/1.8.0) untuk membantu memanipulasi dan mengelompokkan data guna memplot grafik batang bertumpuk. Pertama, Anda mengelompokkan data berdasarkan `Category` burung dan kemudian merangkum kolom `MinLength`, `MaxLength`, `MinBodyMass`, `MaxBodyMass`, `MinWingspan`, `MaxWingspan`. Kemudian, plot grafik batang menggunakan paket `ggplot2` dan tentukan warna untuk kategori yang berbeda serta labelnya. + +![Stacked bar chart](../../../../../translated_images/stacked-bar-chart.0c92264e89da7b391a7490224d1e7059a020e8b74dcd354414aeac78871c02f1.id.png) + +Namun, grafik batang ini tidak dapat dibaca karena terlalu banyak data yang tidak dikelompokkan. Anda perlu memilih hanya data yang ingin Anda plot, jadi mari kita lihat panjang burung berdasarkan kategorinya. + +Filter data Anda untuk hanya menyertakan kategori burung. + +Karena ada banyak kategori, Anda dapat menampilkan grafik ini secara vertikal dan menyesuaikan tingginya untuk mengakomodasi semua data: + +```r +birds_count<-dplyr::count(birds_filtered, Category, sort = TRUE) +birds_count$Category <- factor(birds_count$Category, levels = birds_count$Category) +ggplot(birds_count,aes(Category,n))+geom_bar(stat="identity")+coord_flip() +``` +Anda pertama-tama menghitung nilai unik dalam kolom `Category` dan kemudian mengurutkannya ke dalam dataframe baru `birds_count`. Data yang diurutkan ini kemudian difaktorkan pada level yang sama sehingga dapat diplot dengan cara yang diurutkan. Menggunakan `ggplot2` Anda kemudian memplot data dalam grafik batang. `coord_flip()` memplot batang horizontal. + +![category-length](../../../../../translated_images/category-length.7e34c296690e85d64f7e4d25a56077442683eca96c4f5b4eae120a64c0755636.id.png) + +Grafik batang ini menunjukkan pandangan yang baik tentang jumlah burung dalam setiap kategori. Sekilas, Anda melihat bahwa jumlah burung terbesar di wilayah ini berada dalam kategori Bebek/Angsa/BurungAir. Minnesota adalah 'tanah 10.000 danau' jadi ini tidak mengejutkan! + +✅ Coba beberapa hitungan lain pada dataset ini. Apakah ada yang mengejutkan Anda? + +## Membandingkan data + +Anda dapat mencoba berbagai perbandingan data yang dikelompokkan dengan membuat sumbu baru. Coba perbandingan MaxLength burung, berdasarkan kategorinya: + +```r +birds_grouped <- birds_filtered %>% + group_by(Category) %>% + summarise( + MaxLength = max(MaxLength, na.rm = T), + MinLength = max(MinLength, na.rm = T) + ) %>% + arrange(Category) + +ggplot(birds_grouped,aes(Category,MaxLength))+geom_bar(stat="identity")+coord_flip() +``` +Kami mengelompokkan data `birds_filtered` berdasarkan `Category` dan kemudian memplot grafik batang. + +![comparing data](../../../../../translated_images/comparingdata.f486a450d61c7ca5416f27f3f55a6a4465d00df3be5e6d33936e9b07b95e2fdd.id.png) + +Tidak ada yang mengejutkan di sini: burung kolibri memiliki MaxLength paling kecil dibandingkan dengan Pelikan atau Angsa. Bagus ketika data masuk akal secara logis! + +Anda dapat membuat visualisasi grafik batang yang lebih menarik dengan menumpangkan data. Mari kita tumpangkan Panjang Minimum dan Maksimum pada kategori burung tertentu: + +```r +ggplot(data=birds_grouped, aes(x=Category)) + + geom_bar(aes(y=MaxLength), stat="identity", position ="identity", fill='blue') + + geom_bar(aes(y=MinLength), stat="identity", position="identity", fill='orange')+ + coord_flip() +``` +![super-imposed values](../../../../../translated_images/superimposed-values.5363f0705a1da4167625a373a1064331ea3cb7a06a297297d0734fcc9b3819a0.id.png) + +## 🚀 Tantangan + +Dataset burung ini menawarkan banyak informasi tentang berbagai jenis burung dalam ekosistem tertentu. Cari di internet dan lihat apakah Anda dapat menemukan dataset lain yang berorientasi pada burung. Latihlah membuat grafik dan diagram seputar burung-burung ini untuk menemukan fakta yang tidak Anda sadari. +## [Kuis setelah pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/17) + +## Tinjauan & Studi Mandiri + +Pelajaran pertama ini telah memberikan Anda beberapa informasi tentang cara menggunakan `ggplot2` untuk memvisualisasikan kuantitas. Lakukan penelitian tentang cara lain untuk bekerja dengan dataset untuk visualisasi. Cari dan temukan dataset yang dapat Anda visualisasikan menggunakan paket lain seperti [Lattice](https://stat.ethz.ch/R-manual/R-devel/library/lattice/html/Lattice.html) dan [Plotly](https://github.com/plotly/plotly.R#readme). + +## Tugas +[Lines, Scatters, and Bars](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/3-Data-Visualization/R/09-visualization-quantities/assignment.md b/translations/id/3-Data-Visualization/R/09-visualization-quantities/assignment.md new file mode 100644 index 00000000..3118faba --- /dev/null +++ b/translations/id/3-Data-Visualization/R/09-visualization-quantities/assignment.md @@ -0,0 +1,25 @@ + +# Garis, Scatter, dan Batang + +## Instruksi + +Dalam pelajaran ini, Anda telah bekerja dengan grafik garis, scatterplot, dan grafik batang untuk menunjukkan fakta menarik tentang dataset ini. Dalam tugas ini, selami lebih dalam dataset untuk menemukan fakta tentang jenis burung tertentu. Sebagai contoh, buatlah skrip yang memvisualisasikan semua data menarik yang dapat Anda temukan tentang Snow Geese. Gunakan tiga jenis plot yang disebutkan di atas untuk menceritakan sebuah cerita dalam notebook Anda. + +## Rubrik + +Unggul | Memadai | Perlu Perbaikan +--- | --- | -- | +Skrip disajikan dengan anotasi yang baik, alur cerita yang solid, dan grafik yang menarik | Skrip kehilangan salah satu elemen ini | Skrip kehilangan dua elemen ini + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/3-Data-Visualization/R/10-visualization-distributions/README.md b/translations/id/3-Data-Visualization/R/10-visualization-distributions/README.md new file mode 100644 index 00000000..aa7676ed --- /dev/null +++ b/translations/id/3-Data-Visualization/R/10-visualization-distributions/README.md @@ -0,0 +1,183 @@ + +# Visualisasi Distribusi + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](https://github.com/microsoft/Data-Science-For-Beginners/blob/main/sketchnotes/10-Visualizing-Distributions.png)| +|:---:| +| Visualisasi Distribusi - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +Pada pelajaran sebelumnya, Anda mempelajari beberapa fakta menarik tentang dataset burung di Minnesota. Anda menemukan data yang salah dengan memvisualisasikan outlier dan melihat perbedaan antara kategori burung berdasarkan panjang maksimum mereka. + +## [Kuis sebelum pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/18) +## Jelajahi dataset burung + +Cara lain untuk menggali data adalah dengan melihat distribusinya, atau bagaimana data diorganisasikan sepanjang sumbu. Misalnya, Anda mungkin ingin mengetahui distribusi umum, untuk dataset ini, dari rentang maksimum sayap atau massa tubuh maksimum burung di Minnesota. + +Mari kita temukan beberapa fakta tentang distribusi data dalam dataset ini. Di konsol R Anda, impor `ggplot2` dan database. Hapus outlier dari database seperti yang dilakukan pada topik sebelumnya. + +```r +library(ggplot2) + +birds <- read.csv("../../data/birds.csv",fileEncoding="UTF-8-BOM") + +birds_filtered <- subset(birds, MaxWingspan < 500) +head(birds_filtered) +``` +| | Nama | NamaIlmiah | Kategori | Ordo | Famili | Genus | StatusKonservasi | MinPanjang | MaxPanjang | MinMassaTubuh | MaxMassaTubuh | MinRentangSayap | MaxRentangSayap | +| ---: | :--------------------------- | :--------------------- | :-------------------- | :----------- | :------- | :---------- | :----------------- | --------: | --------: | ----------: | ----------: | ----------: | ----------: | +| 0 | Black-bellied whistling-duck | Dendrocygna autumnalis | Bebek/Angsa/BurungAir | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 | +| 1 | Fulvous whistling-duck | Dendrocygna bicolor | Bebek/Angsa/BurungAir | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 | +| 2 | Snow goose | Anser caerulescens | Bebek/Angsa/BurungAir | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 | +| 3 | Ross's goose | Anser rossii | Bebek/Angsa/BurungAir | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 | +| 4 | Greater white-fronted goose | Anser albifrons | Bebek/Angsa/BurungAir | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 | + +Secara umum, Anda dapat dengan cepat melihat cara data didistribusikan dengan menggunakan scatter plot seperti yang dilakukan pada pelajaran sebelumnya: + +```r +ggplot(data=birds_filtered, aes(x=Order, y=MaxLength,group=1)) + + geom_point() + + ggtitle("Max Length per order") + coord_flip() +``` +![panjang maksimum per ordo](../../../../../translated_images/max-length-per-order.e5b283d952c78c12b091307c5d3cf67132dad6fefe80a073353b9dc5c2bd3eb8.id.png) + +Ini memberikan gambaran umum tentang distribusi panjang tubuh per Ordo burung, tetapi ini bukan cara terbaik untuk menampilkan distribusi yang sebenarnya. Tugas ini biasanya dilakukan dengan membuat Histogram. +## Bekerja dengan histogram + +`ggplot2` menawarkan cara yang sangat baik untuk memvisualisasikan distribusi data menggunakan Histogram. Jenis grafik ini mirip dengan grafik batang di mana distribusi dapat dilihat melalui naik turunnya batang. Untuk membuat histogram, Anda memerlukan data numerik. Untuk membuat Histogram, Anda dapat membuat grafik dengan mendefinisikan jenisnya sebagai 'hist' untuk Histogram. Grafik ini menunjukkan distribusi MaxBodyMass untuk rentang data numerik seluruh dataset. Dengan membagi array data menjadi beberapa bin yang lebih kecil, histogram dapat menampilkan distribusi nilai data: + +```r +ggplot(data = birds_filtered, aes(x = MaxBodyMass)) + + geom_histogram(bins=10)+ylab('Frequency') +``` +![distribusi seluruh dataset](../../../../../translated_images/distribution-over-the-entire-dataset.d22afd3fa96be854e4c82213fedec9e3703cba753d07fad4606aadf58cf7e78e.id.png) + +Seperti yang Anda lihat, sebagian besar dari 400+ burung dalam dataset ini berada dalam rentang di bawah 2000 untuk Max Body Mass mereka. Dapatkan lebih banyak wawasan tentang data dengan mengubah parameter `bins` ke angka yang lebih tinggi, seperti 30: + +```r +ggplot(data = birds_filtered, aes(x = MaxBodyMass)) + geom_histogram(bins=30)+ylab('Frequency') +``` + +![distribusi-30bins](../../../../../translated_images/distribution-30bins.6a3921ea7a421bf71f06bf5231009e43d1146f1b8da8dc254e99b5779a4983e5.id.png) + +Grafik ini menunjukkan distribusi dengan cara yang sedikit lebih rinci. Grafik yang kurang condong ke kiri dapat dibuat dengan memastikan bahwa Anda hanya memilih data dalam rentang tertentu: + +Saring data Anda untuk mendapatkan hanya burung yang massa tubuhnya di bawah 60, dan tampilkan 30 `bins`: + +```r +birds_filtered_1 <- subset(birds_filtered, MaxBodyMass > 1 & MaxBodyMass < 60) +ggplot(data = birds_filtered_1, aes(x = MaxBodyMass)) + + geom_histogram(bins=30)+ylab('Frequency') +``` + +![histogram yang disaring](../../../../../translated_images/filtered-histogram.6bf5d2bfd82533220e1bd4bc4f7d14308f43746ed66721d9ec8f460732be6674.id.png) + +✅ Coba beberapa filter dan titik data lainnya. Untuk melihat distribusi penuh data, hapus filter `['MaxBodyMass']` untuk menampilkan distribusi yang diberi label. + +Histogram menawarkan beberapa peningkatan warna dan pelabelan yang menarik untuk dicoba juga: + +Buat histogram 2D untuk membandingkan hubungan antara dua distribusi. Mari bandingkan `MaxBodyMass` vs. `MaxLength`. `ggplot2` menawarkan cara bawaan untuk menunjukkan konvergensi menggunakan warna yang lebih cerah: + +```r +ggplot(data=birds_filtered_1, aes(x=MaxBodyMass, y=MaxLength) ) + + geom_bin2d() +scale_fill_continuous(type = "viridis") +``` +Tampaknya ada korelasi yang diharapkan antara kedua elemen ini sepanjang sumbu yang diharapkan, dengan satu titik konvergensi yang sangat kuat: + +![plot 2d](../../../../../translated_images/2d-plot.c504786f439bd7ebceebf2465c70ca3b124103e06c7ff7214bf24e26f7aec21e.id.png) + +Histogram bekerja dengan baik secara default untuk data numerik. Bagaimana jika Anda perlu melihat distribusi berdasarkan data teks? +## Jelajahi dataset untuk distribusi menggunakan data teks + +Dataset ini juga mencakup informasi yang baik tentang kategori burung serta genus, spesies, dan famili mereka, serta status konservasi mereka. Mari kita gali informasi konservasi ini. Bagaimana distribusi burung berdasarkan status konservasi mereka? + +> ✅ Dalam dataset, beberapa akronim digunakan untuk menggambarkan status konservasi. Akronim ini berasal dari [Kategori Daftar Merah IUCN](https://www.iucnredlist.org/), sebuah organisasi yang mengkatalogkan status spesies. +> +> - CR: Sangat Terancam Punah +> - EN: Terancam Punah +> - EX: Punah +> - LC: Risiko Rendah +> - NT: Hampir Terancam +> - VU: Rentan + +Nilai-nilai ini berbasis teks sehingga Anda perlu melakukan transformasi untuk membuat histogram. Menggunakan dataframe filteredBirds, tampilkan status konservasi bersama dengan Rentang Sayap Minimum. Apa yang Anda lihat? + +```r +birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'EX'] <- 'x1' +birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'CR'] <- 'x2' +birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'EN'] <- 'x3' +birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'NT'] <- 'x4' +birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'VU'] <- 'x5' +birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'LC'] <- 'x6' + +ggplot(data=birds_filtered_1, aes(x = MinWingspan, fill = ConservationStatus)) + + geom_histogram(position = "identity", alpha = 0.4, bins = 20) + + scale_fill_manual(name="Conservation Status",values=c("red","green","blue","pink"),labels=c("Endangered","Near Threathened","Vulnerable","Least Concern")) +``` + +![kolasi rentang sayap dan konservasi](../../../../../translated_images/wingspan-conservation-collation.4024e9aa6910866aa82f0c6cb6a6b4b925bd10079e6b0ef8f92eefa5a6792f76.id.png) + +Tampaknya tidak ada korelasi yang baik antara rentang sayap minimum dan status konservasi. Uji elemen lain dari dataset menggunakan metode ini. Anda juga dapat mencoba filter yang berbeda. Apakah Anda menemukan korelasi? + +## Plot Kepadatan + +Anda mungkin telah memperhatikan bahwa histogram yang kita lihat sejauh ini 'bertingkat' dan tidak mengalir dengan mulus dalam bentuk lengkung. Untuk menunjukkan grafik kepadatan yang lebih halus, Anda dapat mencoba plot kepadatan. + +Mari kita bekerja dengan plot kepadatan sekarang! + +```r +ggplot(data = birds_filtered_1, aes(x = MinWingspan)) + + geom_density() +``` +![plot kepadatan](../../../../../translated_images/density-plot.675ccf865b76c690487fb7f69420a8444a3515f03bad5482886232d4330f5c85.id.png) + +Anda dapat melihat bagaimana plot ini mencerminkan grafik sebelumnya untuk data Rentang Sayap Minimum; hanya saja sedikit lebih halus. Jika Anda ingin melihat garis MaxBodyMass yang bergerigi pada grafik kedua yang Anda buat, Anda dapat menghaluskannya dengan sangat baik dengan membuat ulang menggunakan metode ini: + +```r +ggplot(data = birds_filtered_1, aes(x = MaxBodyMass)) + + geom_density() +``` +![kepadatan massa tubuh](../../../../../translated_images/bodymass-smooth.d31ce526d82b0a1f19a073815dea28ecfbe58145ec5337e4ef7e8cdac81120b3.id.png) + +Jika Anda menginginkan garis yang halus, tetapi tidak terlalu halus, edit parameter `adjust`: + +```r +ggplot(data = birds_filtered_1, aes(x = MaxBodyMass)) + + geom_density(adjust = 1/5) +``` +![massa tubuh kurang halus](../../../../../translated_images/less-smooth-bodymass.10f4db8b683cc17d17b2d33f22405413142004467a1493d416608dafecfdee23.id.png) + +✅ Baca tentang parameter yang tersedia untuk jenis plot ini dan bereksperimenlah! + +Jenis grafik ini menawarkan visualisasi yang sangat informatif. Dengan beberapa baris kode, misalnya, Anda dapat menunjukkan kepadatan massa tubuh maksimum per Ordo burung: + +```r +ggplot(data=birds_filtered_1,aes(x = MaxBodyMass, fill = Order)) + + geom_density(alpha=0.5) +``` +![massa tubuh per ordo](../../../../../translated_images/bodymass-per-order.9d2b065dd931b928c839d8cdbee63067ab1ae52218a1b90717f4bc744354f485.id.png) + +## 🚀 Tantangan + +Histogram adalah jenis grafik yang lebih canggih dibandingkan scatterplot, grafik batang, atau grafik garis dasar. Lakukan pencarian di internet untuk menemukan contoh penggunaan histogram yang baik. Bagaimana mereka digunakan, apa yang mereka tunjukkan, dan di bidang atau area penyelidikan apa mereka cenderung digunakan? + +## [Kuis setelah pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/19) + +## Tinjauan & Studi Mandiri + +Dalam pelajaran ini, Anda menggunakan `ggplot2` dan mulai bekerja untuk menunjukkan grafik yang lebih canggih. Lakukan penelitian tentang `geom_density_2d()` sebuah "kurva kepadatan probabilitas kontinu dalam satu atau lebih dimensi". Baca [dokumentasi](https://ggplot2.tidyverse.org/reference/geom_density_2d.html) untuk memahami cara kerjanya. + +## Tugas + +[Terapkan keterampilan Anda](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau interpretasi yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/3-Data-Visualization/R/10-visualization-distributions/assignment.md b/translations/id/3-Data-Visualization/R/10-visualization-distributions/assignment.md new file mode 100644 index 00000000..6cc964a3 --- /dev/null +++ b/translations/id/3-Data-Visualization/R/10-visualization-distributions/assignment.md @@ -0,0 +1,25 @@ + +# Terapkan keterampilan Anda + +## Instruksi + +Sejauh ini, Anda telah bekerja dengan dataset burung Minnesota untuk menemukan informasi tentang jumlah burung dan kepadatan populasi. Latih penerapan teknik-teknik ini dengan mencoba dataset yang berbeda, mungkin berasal dari [Kaggle](https://www.kaggle.com/). Buatlah skrip R untuk menceritakan sebuah cerita tentang dataset ini, dan pastikan untuk menggunakan histogram saat membahasnya. + +## Rubrik + +Unggul | Memadai | Perlu Perbaikan +--- | --- | --- | +Skrip disajikan dengan anotasi tentang dataset ini, termasuk sumbernya, dan menggunakan setidaknya 5 histogram untuk menemukan fakta tentang data. | Skrip disajikan dengan anotasi yang tidak lengkap atau terdapat bug. | Skrip disajikan tanpa anotasi dan mengandung bug. + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/3-Data-Visualization/R/11-visualization-proportions/README.md b/translations/id/3-Data-Visualization/R/11-visualization-proportions/README.md new file mode 100644 index 00000000..57e5576e --- /dev/null +++ b/translations/id/3-Data-Visualization/R/11-visualization-proportions/README.md @@ -0,0 +1,201 @@ + +# Visualisasi Proporsi + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/11-Visualizing-Proportions.png)| +|:---:| +|Visualisasi Proporsi - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +Dalam pelajaran ini, Anda akan menggunakan dataset yang berfokus pada alam untuk memvisualisasikan proporsi, seperti berapa banyak jenis jamur yang ada dalam dataset tentang jamur. Mari kita eksplorasi jamur yang menarik ini menggunakan dataset dari Audubon yang mencantumkan detail tentang 23 spesies jamur berinsang dalam keluarga Agaricus dan Lepiota. Anda akan bereksperimen dengan visualisasi menarik seperti: + +- Diagram lingkaran 🥧 +- Diagram donat 🍩 +- Diagram waffle 🧇 + +> 💡 Proyek yang sangat menarik bernama [Charticulator](https://charticulator.com) oleh Microsoft Research menawarkan antarmuka drag and drop gratis untuk visualisasi data. Dalam salah satu tutorial mereka, mereka juga menggunakan dataset jamur ini! Jadi Anda dapat mengeksplorasi data dan mempelajari pustaka ini secara bersamaan: [Tutorial Charticulator](https://charticulator.com/tutorials/tutorial4.html). + +## [Kuis Pra-Pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/20) + +## Mengenal Jamur Anda 🍄 + +Jamur sangat menarik. Mari kita impor dataset untuk mempelajarinya: + +```r +mushrooms = read.csv('../../data/mushrooms.csv') +head(mushrooms) +``` +Sebuah tabel dicetak dengan beberapa data yang bagus untuk analisis: + + +| class | cap-shape | cap-surface | cap-color | bruises | odor | gill-attachment | gill-spacing | gill-size | gill-color | stalk-shape | stalk-root | stalk-surface-above-ring | stalk-surface-below-ring | stalk-color-above-ring | stalk-color-below-ring | veil-type | veil-color | ring-number | ring-type | spore-print-color | population | habitat | +| --------- | --------- | ----------- | --------- | ------- | ------- | --------------- | ------------ | --------- | ---------- | ----------- | ---------- | ------------------------ | ------------------------ | ---------------------- | ---------------------- | --------- | ---------- | ----------- | --------- | ----------------- | ---------- | ------- | +| Poisonous | Convex | Smooth | Brown | Bruises | Pungent | Free | Close | Narrow | Black | Enlarging | Equal | Smooth | Smooth | White | White | Partial | White | One | Pendant | Black | Scattered | Urban | +| Edible | Convex | Smooth | Yellow | Bruises | Almond | Free | Close | Broad | Black | Enlarging | Club | Smooth | Smooth | White | White | Partial | White | One | Pendant | Brown | Numerous | Grasses | +| Edible | Bell | Smooth | White | Bruises | Anise | Free | Close | Broad | Brown | Enlarging | Club | Smooth | Smooth | White | White | Partial | White | One | Pendant | Brown | Numerous | Meadows | +| Poisonous | Convex | Scaly | White | Bruises | Pungent | Free | Close | Narrow | Brown | Enlarging | Equal | Smooth | Smooth | White | White | Partial | White | One | Pendant | Black | Scattered | Urban +| Edible | Convex |Smooth | Green | No Bruises| None |Free | Crowded | Broad | Black | Tapering | Equal | Smooth | Smooth | White | White | Partial | White | One | Evanescent | Brown | Abundant | Grasses +|Edible | Convex | Scaly | Yellow | Bruises | Almond | Free | Close | Broad | Brown | Enlarging | Club | Smooth | Smooth | White | White | Partial | White | One | Pendant | Black | Numerous | Grasses + +Langsung saja, Anda akan melihat bahwa semua data berbentuk teks. Anda harus mengonversi data ini agar dapat digunakan dalam diagram. Sebagian besar data, sebenarnya, direpresentasikan sebagai objek: + +```r +names(mushrooms) +``` + +Outputnya adalah: + +```output +[1] "class" "cap.shape" + [3] "cap.surface" "cap.color" + [5] "bruises" "odor" + [7] "gill.attachment" "gill.spacing" + [9] "gill.size" "gill.color" +[11] "stalk.shape" "stalk.root" +[13] "stalk.surface.above.ring" "stalk.surface.below.ring" +[15] "stalk.color.above.ring" "stalk.color.below.ring" +[17] "veil.type" "veil.color" +[19] "ring.number" "ring.type" +[21] "spore.print.color" "population" +[23] "habitat" +``` +Ambil data ini dan ubah kolom 'class' menjadi kategori: + +```r +library(dplyr) +grouped=mushrooms %>% + group_by(class) %>% + summarise(count=n()) +``` + + +Sekarang, jika Anda mencetak data jamur, Anda dapat melihat bahwa data telah dikelompokkan ke dalam kategori berdasarkan kelas beracun/dapat dimakan: +```r +View(grouped) +``` + + +| class | count | +| --------- | --------- | +| Edible | 4208 | +| Poisonous| 3916 | + + + +Jika Anda mengikuti urutan yang disajikan dalam tabel ini untuk membuat label kategori kelas Anda, Anda dapat membuat diagram lingkaran. + +## Lingkaran! + +```r +pie(grouped$count,grouped$class, main="Edible?") +``` +Voila, diagram lingkaran yang menunjukkan proporsi data ini berdasarkan dua kelas jamur. Sangat penting untuk mendapatkan urutan label yang benar, terutama di sini, jadi pastikan untuk memverifikasi urutan pembuatan array label! + +![pie chart](../../../../../translated_images/pie1-wb.685df063673751f4b0b82127f7a52c7f9a920192f22ae61ad28412ba9ace97bf.id.png) + +## Donat! + +Diagram lingkaran yang sedikit lebih menarik secara visual adalah diagram donat, yaitu diagram lingkaran dengan lubang di tengah. Mari kita lihat data kita menggunakan metode ini. + +Lihatlah berbagai habitat tempat jamur tumbuh: + +```r +library(dplyr) +habitat=mushrooms %>% + group_by(habitat) %>% + summarise(count=n()) +View(habitat) +``` +Outputnya adalah: +| habitat| count | +| --------- | --------- | +| Grasses | 2148 | +| Leaves| 832 | +| Meadows | 292 | +| Paths| 1144 | +| Urban | 368 | +| Waste| 192 | +| Wood| 3148 | + + +Di sini, Anda mengelompokkan data berdasarkan habitat. Ada 7 habitat yang tercantum, jadi gunakan itu sebagai label untuk diagram donat Anda: + +```r +library(ggplot2) +library(webr) +PieDonut(habitat, aes(habitat, count=count)) +``` + +![donut chart](../../../../../translated_images/donut-wb.34e6fb275da9d834c2205145e39a3de9b6878191dcdba6f7a9e85f4b520449bc.id.png) + +Kode ini menggunakan dua pustaka - ggplot2 dan webr. Dengan menggunakan fungsi PieDonut dari pustaka webr, kita dapat membuat diagram donat dengan mudah! + +Diagram donat di R juga dapat dibuat hanya dengan pustaka ggplot2. Anda dapat mempelajari lebih lanjut tentangnya [di sini](https://www.r-graph-gallery.com/128-ring-or-donut-plot.html) dan mencobanya sendiri. + +Sekarang setelah Anda tahu cara mengelompokkan data Anda dan kemudian menampilkannya sebagai lingkaran atau donat, Anda dapat mengeksplorasi jenis diagram lainnya. Cobalah diagram waffle, yang merupakan cara berbeda untuk mengeksplorasi kuantitas. +## Waffle! + +Diagram tipe 'waffle' adalah cara berbeda untuk memvisualisasikan kuantitas sebagai array 2D dari kotak-kotak. Cobalah memvisualisasikan berbagai kuantitas warna tutup jamur dalam dataset ini. Untuk melakukan ini, Anda perlu menginstal pustaka pembantu bernama [waffle](https://cran.r-project.org/web/packages/waffle/waffle.pdf) dan menggunakannya untuk menghasilkan visualisasi Anda: + +```r +install.packages("waffle", repos = "https://cinc.rud.is") +``` + +Pilih segmen data Anda untuk dikelompokkan: + +```r +library(dplyr) +cap_color=mushrooms %>% + group_by(cap.color) %>% + summarise(count=n()) +View(cap_color) +``` + +Buat diagram waffle dengan membuat label dan kemudian mengelompokkan data Anda: + +```r +library(waffle) +names(cap_color$count) = paste0(cap_color$cap.color) +waffle((cap_color$count/10), rows = 7, title = "Waffle Chart")+scale_fill_manual(values=c("brown", "#F0DC82", "#D2691E", "green", + "pink", "purple", "red", "grey", + "yellow","white")) +``` + +Dengan menggunakan diagram waffle, Anda dapat dengan jelas melihat proporsi warna tutup dalam dataset jamur ini. Menariknya, ada banyak jamur dengan tutup hijau! + +![waffle chart](../../../../../translated_images/waffle.aaa75c5337735a6ef32ace0ffb6506ef49e5aefe870ffd72b1bb080f4843c217.id.png) + +Dalam pelajaran ini, Anda mempelajari tiga cara untuk memvisualisasikan proporsi. Pertama, Anda perlu mengelompokkan data Anda ke dalam kategori dan kemudian memutuskan cara terbaik untuk menampilkan data - lingkaran, donat, atau waffle. Semuanya menarik dan memberikan pengguna gambaran instan tentang dataset. + +## 🚀 Tantangan + +Cobalah membuat ulang diagram yang menarik ini di [Charticulator](https://charticulator.com). +## [Kuis Pasca-Pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/21) + +## Tinjauan & Studi Mandiri + +Kadang-kadang tidak jelas kapan harus menggunakan diagram lingkaran, donat, atau waffle. Berikut beberapa artikel untuk dibaca tentang topik ini: + +https://www.beautiful.ai/blog/battle-of-the-charts-pie-chart-vs-donut-chart + +https://medium.com/@hypsypops/pie-chart-vs-donut-chart-showdown-in-the-ring-5d24fd86a9ce + +https://www.mit.edu/~mbarker/formula1/f1help/11-ch-c6.htm + +https://medium.datadriveninvestor.com/data-visualization-done-the-right-way-with-tableau-waffle-chart-fdf2a19be402 + +Lakukan penelitian untuk menemukan lebih banyak informasi tentang keputusan yang sulit ini. +## Tugas + +[Cobalah di Excel](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/3-Data-Visualization/R/12-visualization-relationships/README.md b/translations/id/3-Data-Visualization/R/12-visualization-relationships/README.md new file mode 100644 index 00000000..faf52065 --- /dev/null +++ b/translations/id/3-Data-Visualization/R/12-visualization-relationships/README.md @@ -0,0 +1,177 @@ + +# Visualisasi Hubungan: Semua Tentang Madu 🍯 + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/12-Visualizing-Relationships.png)| +|:---:| +|Visualisasi Hubungan - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +Melanjutkan fokus penelitian kami tentang alam, mari kita temukan visualisasi menarik untuk menunjukkan hubungan antara berbagai jenis madu, berdasarkan dataset yang berasal dari [Departemen Pertanian Amerika Serikat](https://www.nass.usda.gov/About_NASS/index.php). + +Dataset ini, yang terdiri dari sekitar 600 item, menampilkan produksi madu di banyak negara bagian AS. Misalnya, Anda dapat melihat jumlah koloni, hasil per koloni, total produksi, stok, harga per pon, dan nilai madu yang diproduksi di negara bagian tertentu dari tahun 1998-2012, dengan satu baris per tahun untuk setiap negara bagian. + +Akan menarik untuk memvisualisasikan hubungan antara produksi tahunan suatu negara bagian dan, misalnya, harga madu di negara bagian tersebut. Alternatifnya, Anda dapat memvisualisasikan hubungan antara hasil madu per koloni di berbagai negara bagian. Rentang tahun ini mencakup 'CCD' atau 'Colony Collapse Disorder' yang pertama kali terlihat pada tahun 2006 (http://npic.orst.edu/envir/ccd.html), sehingga dataset ini menjadi bahan studi yang menyentuh. 🐝 + +## [Kuis Pra-Pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/22) + +Dalam pelajaran ini, Anda dapat menggunakan ggplot2, yang telah Anda gunakan sebelumnya, sebagai pustaka yang baik untuk memvisualisasikan hubungan antara variabel. Yang sangat menarik adalah penggunaan fungsi `geom_point` dan `qplot` dari ggplot2 yang memungkinkan pembuatan scatter plot dan line plot untuk dengan cepat memvisualisasikan '[hubungan statistik](https://ggplot2.tidyverse.org/)', yang memungkinkan data scientist memahami lebih baik bagaimana variabel saling berhubungan. + +## Scatterplot + +Gunakan scatterplot untuk menunjukkan bagaimana harga madu berkembang dari tahun ke tahun di setiap negara bagian. ggplot2, dengan menggunakan `ggplot` dan `geom_point`, secara praktis mengelompokkan data negara bagian dan menampilkan titik data untuk data kategoris dan numerik. + +Mari kita mulai dengan mengimpor data dan Seaborn: + +```r +honey=read.csv('../../data/honey.csv') +head(honey) +``` +Anda akan melihat bahwa data madu memiliki beberapa kolom menarik, termasuk tahun dan harga per pon. Mari kita eksplorasi data ini, dikelompokkan berdasarkan negara bagian AS: + +| state | numcol | yieldpercol | totalprod | stocks | priceperlb | prodvalue | year | +| ----- | ------ | ----------- | --------- | -------- | ---------- | --------- | ---- | +| AL | 16000 | 71 | 1136000 | 159000 | 0.72 | 818000 | 1998 | +| AZ | 55000 | 60 | 3300000 | 1485000 | 0.64 | 2112000 | 1998 | +| AR | 53000 | 65 | 3445000 | 1688000 | 0.59 | 2033000 | 1998 | +| CA | 450000 | 83 | 37350000 | 12326000 | 0.62 | 23157000 | 1998 | +| CO | 27000 | 72 | 1944000 | 1594000 | 0.7 | 1361000 | 1998 | +| FL | 230000 | 98 |22540000 | 4508000 | 0.64 | 14426000 | 1998 | + +Buat scatterplot dasar untuk menunjukkan hubungan antara harga per pon madu dan asal negara bagian AS. Buat sumbu `y` cukup tinggi untuk menampilkan semua negara bagian: + +```r +library(ggplot2) +ggplot(honey, aes(x = priceperlb, y = state)) + + geom_point(colour = "blue") +``` +![scatterplot 1](../../../../../translated_images/scatter1.86b8900674d88b26dd3353a83fe604e9ab3722c4680cc40ee9beb452ff02cdea.id.png) + +Sekarang, tunjukkan data yang sama dengan skema warna madu untuk menunjukkan bagaimana harga berkembang dari tahun ke tahun. Anda dapat melakukannya dengan menambahkan parameter 'scale_color_gradientn' untuk menunjukkan perubahan dari tahun ke tahun: + +> ✅ Pelajari lebih lanjut tentang [scale_color_gradientn](https://www.rdocumentation.org/packages/ggplot2/versions/0.9.1/topics/scale_colour_gradientn) - coba skema warna pelangi yang indah! + +```r +ggplot(honey, aes(x = priceperlb, y = state, color=year)) + + geom_point()+scale_color_gradientn(colours = colorspace::heat_hcl(7)) +``` +![scatterplot 2](../../../../../translated_images/scatter2.4d1cbc693bad20e2b563888747eb6bdf65b73ce449d903f7cd4068a78502dcff.id.png) + +Dengan perubahan skema warna ini, Anda dapat melihat bahwa ada perkembangan yang jelas selama bertahun-tahun dalam hal harga madu per pon. Memang, jika Anda melihat sampel data untuk memverifikasi (pilih negara bagian tertentu, misalnya Arizona), Anda dapat melihat pola kenaikan harga dari tahun ke tahun, dengan beberapa pengecualian: + +| state | numcol | yieldpercol | totalprod | stocks | priceperlb | prodvalue | year | +| ----- | ------ | ----------- | --------- | ------- | ---------- | --------- | ---- | +| AZ | 55000 | 60 | 3300000 | 1485000 | 0.64 | 2112000 | 1998 | +| AZ | 52000 | 62 | 3224000 | 1548000 | 0.62 | 1999000 | 1999 | +| AZ | 40000 | 59 | 2360000 | 1322000 | 0.73 | 1723000 | 2000 | +| AZ | 43000 | 59 | 2537000 | 1142000 | 0.72 | 1827000 | 2001 | +| AZ | 38000 | 63 | 2394000 | 1197000 | 1.08 | 2586000 | 2002 | +| AZ | 35000 | 72 | 2520000 | 983000 | 1.34 | 3377000 | 2003 | +| AZ | 32000 | 55 | 1760000 | 774000 | 1.11 | 1954000 | 2004 | +| AZ | 36000 | 50 | 1800000 | 720000 | 1.04 | 1872000 | 2005 | +| AZ | 30000 | 65 | 1950000 | 839000 | 0.91 | 1775000 | 2006 | +| AZ | 30000 | 64 | 1920000 | 902000 | 1.26 | 2419000 | 2007 | +| AZ | 25000 | 64 | 1600000 | 336000 | 1.26 | 2016000 | 2008 | +| AZ | 20000 | 52 | 1040000 | 562000 | 1.45 | 1508000 | 2009 | +| AZ | 24000 | 77 | 1848000 | 665000 | 1.52 | 2809000 | 2010 | +| AZ | 23000 | 53 | 1219000 | 427000 | 1.55 | 1889000 | 2011 | +| AZ | 22000 | 46 | 1012000 | 253000 | 1.79 | 1811000 | 2012 | + +Cara lain untuk memvisualisasikan perkembangan ini adalah dengan menggunakan ukuran, bukan warna. Untuk pengguna yang buta warna, ini mungkin menjadi pilihan yang lebih baik. Edit visualisasi Anda untuk menunjukkan kenaikan harga dengan peningkatan lingkaran titik: + +```r +ggplot(honey, aes(x = priceperlb, y = state)) + + geom_point(aes(size = year),colour = "blue") + + scale_size_continuous(range = c(0.25, 3)) +``` +Anda dapat melihat ukuran titik yang secara bertahap meningkat. + +![scatterplot 3](../../../../../translated_images/scatter3.722d21e6f20b3ea2e18339bb9b10d75906126715eb7d5fdc88fe74dcb6d7066a.id.png) + +Apakah ini kasus sederhana dari hukum penawaran dan permintaan? Karena faktor seperti perubahan iklim dan keruntuhan koloni, apakah madu yang tersedia untuk dibeli semakin sedikit dari tahun ke tahun, sehingga harga meningkat? + +Untuk menemukan korelasi antara beberapa variabel dalam dataset ini, mari kita eksplorasi beberapa grafik garis. + +## Grafik Garis + +Pertanyaan: Apakah ada kenaikan harga madu per pon yang jelas dari tahun ke tahun? Anda dapat dengan mudah menemukannya dengan membuat grafik garis tunggal: + +```r +qplot(honey$year,honey$priceperlb, geom='smooth', span =0.5, xlab = "year",ylab = "priceperlb") +``` +Jawaban: Ya, dengan beberapa pengecualian sekitar tahun 2003: + +![line chart 1](../../../../../translated_images/line1.299b576fbb2a59e60a59e7130030f59836891f90302be084e4e8d14da0562e2a.id.png) + +Pertanyaan: Nah, pada tahun 2003 apakah kita juga melihat lonjakan pasokan madu? Bagaimana jika Anda melihat total produksi dari tahun ke tahun? + +```python +qplot(honey$year,honey$totalprod, geom='smooth', span =0.5, xlab = "year",ylab = "totalprod") +``` + +![line chart 2](../../../../../translated_images/line2.3b18fcda7176ceba5b6689eaaabb817d49c965e986f11cac1ae3f424030c34d8.id.png) + +Jawaban: Tidak benar-benar. Jika Anda melihat total produksi, sebenarnya tampaknya meningkat pada tahun tersebut, meskipun secara umum jumlah madu yang diproduksi menurun selama tahun-tahun ini. + +Pertanyaan: Dalam hal ini, apa yang bisa menyebabkan lonjakan harga madu sekitar tahun 2003? + +Untuk menemukan ini, Anda dapat mengeksplorasi facet grid. + +## Facet Grids + +Facet grid mengambil satu aspek dari dataset Anda (dalam kasus kami, Anda dapat memilih 'tahun' untuk menghindari terlalu banyak aspek yang dihasilkan). Seaborn kemudian dapat membuat plot untuk masing-masing aspek tersebut berdasarkan koordinat x dan y yang Anda pilih untuk perbandingan visual yang lebih mudah. Apakah tahun 2003 menonjol dalam jenis perbandingan ini? + +Buat facet grid dengan menggunakan `facet_wrap` seperti yang direkomendasikan oleh [dokumentasi ggplot2](https://ggplot2.tidyverse.org/reference/facet_wrap.html). + +```r +ggplot(honey, aes(x=yieldpercol, y = numcol,group = 1)) + + geom_line() + facet_wrap(vars(year)) +``` +Dalam visualisasi ini, Anda dapat membandingkan hasil per koloni dan jumlah koloni dari tahun ke tahun, berdampingan dengan pengaturan wrap pada 3 untuk kolom: + +![facet grid](../../../../../translated_images/facet.491ad90d61c2a7cc69b50c929f80786c749e38217ccedbf1e22ed8909b65987c.id.png) + +Untuk dataset ini, tidak ada yang secara khusus menonjol terkait jumlah koloni dan hasilnya, dari tahun ke tahun dan negara bagian ke negara bagian. Apakah ada cara lain untuk menemukan korelasi antara kedua variabel ini? + +## Grafik Garis Ganda + +Cobalah plot multiline dengan menumpangkan dua grafik garis di atas satu sama lain, menggunakan fungsi `par` dan `plot` dari R. Kita akan memplot tahun pada sumbu x dan menampilkan dua sumbu y. Jadi, tampilkan hasil per koloni dan jumlah koloni, yang ditumpangkan: + +```r +par(mar = c(5, 4, 4, 4) + 0.3) +plot(honey$year, honey$numcol, pch = 16, col = 2,type="l") +par(new = TRUE) +plot(honey$year, honey$yieldpercol, pch = 17, col = 3, + axes = FALSE, xlab = "", ylab = "",type="l") +axis(side = 4, at = pretty(range(y2))) +mtext("colony yield", side = 4, line = 3) +``` +![superimposed plots](../../../../../translated_images/dual-line.fc4665f360a54018d7df9bc6abcc26460112e17dcbda18d3b9ae6109b32b36c3.id.png) + +Meskipun tidak ada yang mencolok di sekitar tahun 2003, ini memungkinkan kita mengakhiri pelajaran ini dengan catatan yang sedikit lebih bahagia: meskipun jumlah koloni secara keseluruhan menurun, jumlah koloni mulai stabil meskipun hasil per koloni menurun. + +Semangat, lebah, semangat! + +🐝❤️ +## 🚀 Tantangan + +Dalam pelajaran ini, Anda belajar lebih banyak tentang penggunaan scatterplot dan line grid lainnya, termasuk facet grid. Tantang diri Anda untuk membuat facet grid menggunakan dataset yang berbeda, mungkin yang telah Anda gunakan sebelumnya dalam pelajaran ini. Perhatikan berapa lama waktu yang dibutuhkan untuk membuatnya dan bagaimana Anda perlu berhati-hati tentang berapa banyak grid yang perlu Anda gambar menggunakan teknik ini. +## [Kuis Pasca-Pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/23) + +## Tinjauan & Studi Mandiri + +Grafik garis bisa sederhana atau cukup kompleks. Lakukan sedikit pembacaan di [dokumentasi ggplot2](https://ggplot2.tidyverse.org/reference/geom_path.html#:~:text=geom_line()%20connects%20them%20in,which%20cases%20are%20connected%20together) tentang berbagai cara Anda dapat membangunnya. Cobalah untuk meningkatkan grafik garis yang Anda buat dalam pelajaran ini dengan metode lain yang tercantum dalam dokumen. +## Tugas + +[Masuk ke sarang lebah](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/3-Data-Visualization/R/13-meaningful-vizualizations/README.md b/translations/id/3-Data-Visualization/R/13-meaningful-vizualizations/README.md new file mode 100644 index 00000000..e9da5f97 --- /dev/null +++ b/translations/id/3-Data-Visualization/R/13-meaningful-vizualizations/README.md @@ -0,0 +1,182 @@ + +# Membuat Visualisasi yang Bermakna + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/13-MeaningfulViz.png)| +|:---:| +| Visualisasi yang Bermakna - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +> "Jika Anda menyiksa data cukup lama, data akan mengaku apa saja" -- [Ronald Coase](https://en.wikiquote.org/wiki/Ronald_Coase) + +Salah satu keterampilan dasar seorang ilmuwan data adalah kemampuan untuk membuat visualisasi data yang bermakna yang membantu menjawab pertanyaan yang Anda miliki. Sebelum memvisualisasikan data Anda, Anda perlu memastikan bahwa data tersebut telah dibersihkan dan dipersiapkan, seperti yang telah Anda lakukan di pelajaran sebelumnya. Setelah itu, Anda dapat mulai memutuskan cara terbaik untuk menyajikan data tersebut. + +Dalam pelajaran ini, Anda akan mempelajari: + +1. Cara memilih jenis grafik yang tepat +2. Cara menghindari grafik yang menyesatkan +3. Cara bekerja dengan warna +4. Cara menata grafik agar mudah dibaca +5. Cara membuat solusi grafik animasi atau 3D +6. Cara membuat visualisasi yang kreatif + +## [Kuis Pra-Pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/24) + +## Memilih jenis grafik yang tepat + +Dalam pelajaran sebelumnya, Anda telah mencoba membuat berbagai visualisasi data menarik menggunakan Matplotlib dan Seaborn untuk grafik. Secara umum, Anda dapat memilih [jenis grafik yang tepat](https://chartio.com/learn/charts/how-to-select-a-data-vizualization/) untuk pertanyaan yang Anda ajukan menggunakan tabel berikut: + +| Anda ingin: | Gunakan: | +| -------------------------- | ------------------------------ | +| Menunjukkan tren data dari waktu ke waktu | Garis | +| Membandingkan kategori | Batang, Pie | +| Membandingkan total | Pie, Batang Bertumpuk | +| Menunjukkan hubungan | Scatter, Garis, Facet, Garis Ganda | +| Menunjukkan distribusi | Scatter, Histogram, Box | +| Menunjukkan proporsi | Pie, Donut, Waffle | + +> ✅ Bergantung pada komposisi data Anda, Anda mungkin perlu mengonversinya dari teks ke numerik agar grafik tertentu dapat mendukungnya. + +## Menghindari penyesatan + +Meskipun seorang ilmuwan data berhati-hati dalam memilih grafik yang tepat untuk data yang tepat, ada banyak cara data dapat ditampilkan untuk membuktikan suatu poin, sering kali dengan mengorbankan integritas data itu sendiri. Ada banyak contoh grafik dan infografis yang menyesatkan! + +[![How Charts Lie oleh Alberto Cairo](../../../../../translated_images/tornado.2880ffc7f135f82b5e5328624799010abefd1080ae4b7ecacbdc7d792f1d8849.id.png)](https://www.youtube.com/watch?v=oX74Nge8Wkw "How charts lie") + +> 🎥 Klik gambar di atas untuk melihat pembicaraan konferensi tentang grafik yang menyesatkan + +Grafik ini membalik sumbu X untuk menunjukkan kebalikan dari kebenaran, berdasarkan tanggal: + +![grafik buruk 1](../../../../../translated_images/bad-chart-1.596bc93425a8ac301a28b8361f59a970276e7b961658ce849886aa1fed427341.id.png) + +[Grafik ini](https://media.firstcoastnews.com/assets/WTLV/images/170ae16f-4643-438f-b689-50d66ca6a8d8/170ae16f-4643-438f-b689-50d66ca6a8d8_1140x641.jpg) bahkan lebih menyesatkan, karena mata tertarik ke kanan untuk menyimpulkan bahwa, seiring waktu, kasus COVID telah menurun di berbagai wilayah. Faktanya, jika Anda melihat lebih dekat pada tanggalnya, Anda akan menemukan bahwa tanggal-tanggal tersebut telah diatur ulang untuk memberikan tren penurunan yang menyesatkan. + +![grafik buruk 2](../../../../../translated_images/bad-chart-2.62edf4d2f30f4e519f5ef50c07ce686e27b0196a364febf9a4d98eecd21f9f60.id.jpg) + +Contoh terkenal ini menggunakan warna DAN sumbu Y yang dibalik untuk menyesatkan: alih-alih menyimpulkan bahwa kematian akibat senjata meningkat setelah pengesahan undang-undang yang mendukung senjata, mata justru tertipu untuk berpikir bahwa kebalikannya adalah benar: + +![grafik buruk 3](../../../../../translated_images/bad-chart-3.e201e2e915a230bc2cde289110604ec9abeb89be510bd82665bebc1228258972.id.jpg) + +Grafik aneh ini menunjukkan bagaimana proporsi dapat dimanipulasi, dengan efek yang menggelikan: + +![grafik buruk 4](../../../../../translated_images/bad-chart-4.8872b2b881ffa96c3e0db10eb6aed7793efae2cac382c53932794260f7bfff07.id.jpg) + +Membandingkan hal-hal yang tidak sebanding adalah trik licik lainnya. Ada [situs web yang luar biasa](https://tylervigen.com/spurious-correlations) tentang 'korelasi palsu' yang menampilkan 'fakta' yang menghubungkan hal-hal seperti tingkat perceraian di Maine dan konsumsi margarin. Grup Reddit juga mengumpulkan [penggunaan data yang buruk](https://www.reddit.com/r/dataisugly/top/?t=all). + +Penting untuk memahami betapa mudahnya mata dapat tertipu oleh grafik yang menyesatkan. Bahkan jika niat ilmuwan data baik, pilihan jenis grafik yang buruk, seperti grafik pie yang menunjukkan terlalu banyak kategori, dapat menjadi menyesatkan. + +## Warna + +Anda telah melihat dalam grafik 'kekerasan senjata di Florida' di atas bagaimana warna dapat memberikan lapisan tambahan makna pada grafik, terutama grafik yang tidak dirancang menggunakan pustaka seperti ggplot2 dan RColorBrewer yang dilengkapi dengan berbagai pustaka warna dan palet yang telah diverifikasi. Jika Anda membuat grafik secara manual, lakukan sedikit studi tentang [teori warna](https://colormatters.com/color-and-design/basic-color-theory). + +> ✅ Ketahuilah, saat merancang grafik, bahwa aksesibilitas adalah aspek penting dari visualisasi. Beberapa pengguna Anda mungkin buta warna - apakah grafik Anda dapat ditampilkan dengan baik untuk pengguna dengan gangguan penglihatan? + +Berhati-hatilah saat memilih warna untuk grafik Anda, karena warna dapat menyampaikan makna yang mungkin tidak Anda maksudkan. 'Pink ladies' dalam grafik 'tinggi badan' di atas menyampaikan makna 'feminin' yang jelas yang menambah keanehan grafik itu sendiri. + +Meskipun [makna warna](https://colormatters.com/color-symbolism/the-meanings-of-colors) mungkin berbeda di berbagai bagian dunia, dan cenderung berubah makna sesuai dengan nuansanya. Secara umum, makna warna meliputi: + +| Warna | Makna | +| ------ | ------------------- | +| merah | kekuatan | +| biru | kepercayaan, loyalitas | +| kuning | kebahagiaan, kehati-hatian | +| hijau | ekologi, keberuntungan, iri | +| ungu | kebahagiaan | +| oranye | semangat | + +Jika Anda ditugaskan untuk membuat grafik dengan warna khusus, pastikan bahwa grafik Anda dapat diakses dan warna yang Anda pilih sesuai dengan makna yang ingin Anda sampaikan. + +## Menata grafik agar mudah dibaca + +Grafik tidak akan bermakna jika tidak dapat dibaca! Luangkan waktu untuk mempertimbangkan penataan lebar dan tinggi grafik agar sesuai dengan data Anda. Jika satu variabel (seperti semua 50 negara bagian) perlu ditampilkan, tampilkan secara vertikal pada sumbu Y jika memungkinkan untuk menghindari grafik yang harus digulir secara horizontal. + +Label sumbu Anda, sediakan legenda jika diperlukan, dan tawarkan tooltip untuk pemahaman data yang lebih baik. + +Jika data Anda berupa teks yang panjang pada sumbu X, Anda dapat memiringkan teks untuk meningkatkan keterbacaan. [plot3D](https://cran.r-project.org/web/packages/plot3D/index.html) menawarkan pemetaan 3D, jika data Anda mendukungnya. Visualisasi data yang canggih dapat dihasilkan menggunakan ini. + +![grafik 3D](../../../../../translated_images/3d.db1734c151eee87d924989306a00e23f8cddac6a0aab122852ece220e9448def.id.png) + +## Animasi dan tampilan grafik 3D + +Beberapa visualisasi data terbaik saat ini bersifat animasi. Shirley Wu memiliki karya luar biasa yang dibuat dengan D3, seperti '[film flowers](http://bl.ocks.org/sxywu/raw/d612c6c653fb8b4d7ff3d422be164a5d/)', di mana setiap bunga adalah visualisasi dari sebuah film. Contoh lain untuk Guardian adalah 'bussed out', sebuah pengalaman interaktif yang menggabungkan visualisasi dengan Greensock dan D3 serta format artikel scrollytelling untuk menunjukkan bagaimana NYC menangani masalah tunawisma dengan mengirim orang keluar dari kota. + +![busing](../../../../../translated_images/busing.8157cf1bc89a3f65052d362a78c72f964982ceb9dcacbe44480e35909c3dce62.id.png) + +> "Bussed Out: How America Moves its Homeless" dari [the Guardian](https://www.theguardian.com/us-news/ng-interactive/2017/dec/20/bussed-out-america-moves-homeless-people-country-study). Visualisasi oleh Nadieh Bremer & Shirley Wu + +Meskipun pelajaran ini tidak cukup mendalam untuk mengajarkan pustaka visualisasi yang kuat ini, cobalah menggunakan D3 dalam aplikasi Vue.js menggunakan pustaka untuk menampilkan visualisasi buku "Dangerous Liaisons" sebagai jaringan sosial yang dianimasikan. + +> "Les Liaisons Dangereuses" adalah novel epistolari, atau novel yang disajikan sebagai serangkaian surat. Ditulis pada tahun 1782 oleh Choderlos de Laclos, novel ini menceritakan tentang manuver sosial yang kejam dan tidak bermoral dari dua protagonis yang saling bersaing dari aristokrasi Prancis pada akhir abad ke-18, Vicomte de Valmont dan Marquise de Merteuil. Keduanya akhirnya menemui kehancuran, tetapi tidak tanpa menyebabkan kerusakan sosial yang besar. Novel ini berkembang sebagai serangkaian surat yang ditulis kepada berbagai orang di lingkaran mereka, merencanakan balas dendam atau sekadar membuat masalah. Buat visualisasi surat-surat ini untuk menemukan tokoh utama dalam narasi, secara visual. + +Anda akan menyelesaikan aplikasi web yang akan menampilkan tampilan animasi dari jaringan sosial ini. Aplikasi ini menggunakan pustaka yang dibuat untuk membuat [visual jaringan](https://github.com/emiliorizzo/vue-d3-network) menggunakan Vue.js dan D3. Saat aplikasi berjalan, Anda dapat menarik node di layar untuk mengacak data. + +![liaisons](../../../../../translated_images/liaisons.90ce7360bcf8476558f700bbbaf198ad697d5b5cb2829ba141a89c0add7c6ecd.id.png) + +## Proyek: Buat grafik untuk menunjukkan jaringan menggunakan D3.js + +> Folder pelajaran ini mencakup folder `solution` di mana Anda dapat menemukan proyek yang telah selesai, untuk referensi Anda. + +1. Ikuti instruksi dalam file README.md di root folder starter. Pastikan Anda memiliki NPM dan Node.js yang berjalan di mesin Anda sebelum menginstal dependensi proyek Anda. + +2. Buka folder `starter/src`. Anda akan menemukan folder `assets` di mana terdapat file .json dengan semua surat dari novel, diberi nomor, dengan anotasi 'to' dan 'from'. + +3. Lengkapi kode di `components/Nodes.vue` untuk mengaktifkan visualisasi. Cari metode bernama `createLinks()` dan tambahkan loop bersarang berikut. + +Loop melalui objek .json untuk menangkap data 'to' dan 'from' untuk surat-surat tersebut dan membangun objek `links` sehingga pustaka visualisasi dapat mengonsumsinya: + +```javascript +//loop through letters + let f = 0; + let t = 0; + for (var i = 0; i < letters.length; i++) { + for (var j = 0; j < characters.length; j++) { + + if (characters[j] == letters[i].from) { + f = j; + } + if (characters[j] == letters[i].to) { + t = j; + } + } + this.links.push({ sid: f, tid: t }); + } + ``` + +Jalankan aplikasi Anda dari terminal (npm run serve) dan nikmati visualisasi! + +## 🚀 Tantangan + +Jelajahi internet untuk menemukan visualisasi yang menyesatkan. Bagaimana penulis menipu pengguna, dan apakah itu disengaja? Cobalah memperbaiki visualisasi untuk menunjukkan bagaimana seharusnya tampilannya. + +## [Kuis Pasca-Pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/25) + +## Tinjauan & Studi Mandiri + +Berikut adalah beberapa artikel untuk dibaca tentang visualisasi data yang menyesatkan: + +https://gizmodo.com/how-to-lie-with-data-visualization-1563576606 + +http://ixd.prattsi.org/2017/12/visual-lies-usability-in-deceptive-data-visualizations/ + +Lihatlah visualisasi menarik ini untuk aset dan artefak sejarah: + +https://handbook.pubpub.org/ + +Baca artikel ini tentang bagaimana animasi dapat meningkatkan visualisasi Anda: + +https://medium.com/@EvanSinar/use-animation-to-supercharge-data-visualization-cd905a882ad4 + +## Tugas + +[Buat visualisasi kustom Anda sendiri](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa terjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau interpretasi yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/3-Data-Visualization/README.md b/translations/id/3-Data-Visualization/README.md new file mode 100644 index 00000000..53e82594 --- /dev/null +++ b/translations/id/3-Data-Visualization/README.md @@ -0,0 +1,42 @@ + +# Visualisasi + +![seekor lebah di bunga lavender](../../../translated_images/bee.0aa1d91132b12e3a8994b9ca12816d05ce1642010d9b8be37f8d37365ba845cf.id.jpg) +> Foto oleh Jenna Lee di Unsplash + +Memvisualisasikan data adalah salah satu tugas terpenting seorang data scientist. Gambar bernilai 1000 kata, dan sebuah visualisasi dapat membantu Anda mengidentifikasi berbagai aspek menarik dari data Anda seperti lonjakan, pencilan, pengelompokan, kecenderungan, dan lainnya, yang dapat membantu Anda memahami cerita yang ingin disampaikan oleh data Anda. + +Dalam lima pelajaran ini, Anda akan mengeksplorasi data yang bersumber dari alam dan membuat visualisasi yang menarik dan indah menggunakan berbagai teknik. + +| Nomor Topik | Topik | Pelajaran Terkait | Penulis | +| :-----------: | :--: | :-----------: | :----: | +| 1. | Memvisualisasikan kuantitas | | | +| 2. | Memvisualisasikan distribusi | | | +| 3. | Memvisualisasikan proporsi | | | +| 4. | Memvisualisasikan hubungan | | | +| 5. | Membuat Visualisasi yang Bermakna | | | + +### Kredit + +Pelajaran visualisasi ini ditulis dengan 🌸 oleh [Jen Looper](https://twitter.com/jenlooper), [Jasleen Sondhi](https://github.com/jasleen101010), dan [Vidushi Gupta](https://github.com/Vidushi-Gupta). + +🍯 Data untuk Produksi Madu di AS bersumber dari proyek Jessica Li di [Kaggle](https://www.kaggle.com/jessicali9530/honey-production). [Data](https://usda.library.cornell.edu/concern/publications/rn301137d) ini berasal dari [United States Department of Agriculture](https://www.nass.usda.gov/About_NASS/index.php). + +🍄 Data untuk jamur juga bersumber dari [Kaggle](https://www.kaggle.com/hatterasdunton/mushroom-classification-updated-dataset) yang direvisi oleh Hatteras Dunton. Dataset ini mencakup deskripsi sampel hipotetis yang sesuai dengan 23 spesies jamur berinsang dalam keluarga Agaricus dan Lepiota. Jamur diambil dari The Audubon Society Field Guide to North American Mushrooms (1981). Dataset ini disumbangkan ke UCI ML 27 pada tahun 1987. + +🦆 Data untuk Burung Minnesota berasal dari [Kaggle](https://www.kaggle.com/hannahcollins/minnesota-birds) yang diambil dari [Wikipedia](https://en.wikipedia.org/wiki/List_of_birds_of_Minnesota) oleh Hannah Collins. + +Semua dataset ini dilisensikan sebagai [CC0: Creative Commons](https://creativecommons.org/publicdomain/zero/1.0/). + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/4-Data-Science-Lifecycle/14-Introduction/README.md b/translations/id/4-Data-Science-Lifecycle/14-Introduction/README.md new file mode 100644 index 00000000..98aa5f19 --- /dev/null +++ b/translations/id/4-Data-Science-Lifecycle/14-Introduction/README.md @@ -0,0 +1,123 @@ + +# Pengantar Siklus Hidup Data Science + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/14-DataScience-Lifecycle.png)| +|:---:| +| Pengantar Siklus Hidup Data Science - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +## [Kuis Pra-Pelajaran](https://red-water-0103e7a0f.azurestaticapps.net/quiz/26) + +Pada titik ini, Anda mungkin sudah menyadari bahwa data science adalah sebuah proses. Proses ini dapat dibagi menjadi 5 tahap: + +- Pengumpulan +- Pemrosesan +- Analisis +- Komunikasi +- Pemeliharaan + +Pelajaran ini berfokus pada 3 bagian dari siklus hidup: pengumpulan, pemrosesan, dan pemeliharaan. + +![Diagram siklus hidup data science](../../../../translated_images/data-science-lifecycle.a1e362637503c4fb0cd5e859d7552edcdb4aa629a279727008baa121f2d33f32.id.jpg) +> Foto oleh [Berkeley School of Information](https://ischoolonline.berkeley.edu/data-science/what-is-data-science/) + +## Pengumpulan + +Tahap pertama dari siklus hidup sangat penting karena tahap-tahap berikutnya bergantung padanya. Tahap ini pada dasarnya adalah gabungan dari dua tahap: memperoleh data dan mendefinisikan tujuan serta masalah yang perlu diselesaikan. +Mendefinisikan tujuan proyek membutuhkan pemahaman yang lebih mendalam tentang masalah atau pertanyaan yang ada. Pertama, kita perlu mengidentifikasi dan memperoleh pihak-pihak yang membutuhkan solusi atas masalah mereka. Pihak-pihak ini bisa berupa pemangku kepentingan dalam bisnis atau sponsor proyek, yang dapat membantu mengidentifikasi siapa atau apa yang akan mendapatkan manfaat dari proyek ini serta apa dan mengapa mereka membutuhkannya. Tujuan yang terdefinisi dengan baik harus dapat diukur dan dihitung untuk menentukan hasil yang dapat diterima. + +Pertanyaan yang mungkin diajukan oleh seorang data scientist: +- Apakah masalah ini pernah didekati sebelumnya? Apa yang ditemukan? +- Apakah tujuan dan maksud proyek dipahami oleh semua pihak yang terlibat? +- Apakah ada ambiguitas dan bagaimana cara menguranginya? +- Apa saja batasannya? +- Seperti apa hasil akhirnya nanti? +- Berapa banyak sumber daya (waktu, tenaga, komputasi) yang tersedia? + +Selanjutnya adalah mengidentifikasi, mengumpulkan, dan akhirnya mengeksplorasi data yang diperlukan untuk mencapai tujuan yang telah ditentukan. Pada langkah akuisisi ini, data scientist juga harus mengevaluasi kuantitas dan kualitas data. Hal ini membutuhkan eksplorasi data untuk memastikan bahwa data yang diperoleh akan mendukung pencapaian hasil yang diinginkan. + +Pertanyaan yang mungkin diajukan oleh seorang data scientist tentang data: +- Data apa yang sudah tersedia untuk saya? +- Siapa pemilik data ini? +- Apa saja kekhawatiran terkait privasi? +- Apakah saya memiliki cukup data untuk menyelesaikan masalah ini? +- Apakah kualitas data cukup baik untuk masalah ini? +- Jika saya menemukan informasi tambahan melalui data ini, apakah kita perlu mempertimbangkan untuk mengubah atau mendefinisikan ulang tujuan? + +## Pemrosesan + +Tahap pemrosesan dalam siklus hidup berfokus pada menemukan pola dalam data serta pemodelan. Beberapa teknik yang digunakan dalam tahap pemrosesan memerlukan metode statistik untuk mengungkap pola. Biasanya, ini akan menjadi tugas yang membosankan bagi manusia untuk dilakukan dengan kumpulan data yang besar, sehingga akan mengandalkan komputer untuk mempercepat proses. Tahap ini juga merupakan tempat data science dan machine learning saling beririsan. Seperti yang Anda pelajari dalam pelajaran pertama, machine learning adalah proses membangun model untuk memahami data. Model adalah representasi hubungan antara variabel dalam data yang membantu memprediksi hasil. + +Teknik umum yang digunakan dalam tahap ini dibahas dalam kurikulum ML untuk Pemula. Ikuti tautan berikut untuk mempelajari lebih lanjut: + +- [Klasifikasi](https://github.com/microsoft/ML-For-Beginners/tree/main/4-Classification): Mengorganisasi data ke dalam kategori untuk penggunaan yang lebih efisien. +- [Klasterisasi](https://github.com/microsoft/ML-For-Beginners/tree/main/5-Clustering): Mengelompokkan data ke dalam grup yang serupa. +- [Regresi](https://github.com/microsoft/ML-For-Beginners/tree/main/2-Regression): Menentukan hubungan antara variabel untuk memprediksi atau meramalkan nilai. + +## Pemeliharaan + +Dalam diagram siklus hidup, Anda mungkin memperhatikan bahwa pemeliharaan berada di antara pengumpulan dan pemrosesan. Pemeliharaan adalah proses berkelanjutan untuk mengelola, menyimpan, dan mengamankan data sepanjang proses proyek dan harus dipertimbangkan selama keseluruhan proyek. + +### Penyimpanan Data + +Pertimbangan tentang bagaimana dan di mana data disimpan dapat memengaruhi biaya penyimpanan serta kinerja kecepatan akses data. Keputusan seperti ini kemungkinan besar tidak dibuat oleh data scientist saja, tetapi mereka mungkin harus membuat pilihan tentang bagaimana bekerja dengan data berdasarkan cara data disimpan. + +Berikut beberapa aspek sistem penyimpanan data modern yang dapat memengaruhi pilihan ini: + +**On premise vs off premise vs cloud publik atau privat** + +On premise mengacu pada hosting dan pengelolaan data di peralatan milik sendiri, seperti memiliki server dengan hard drive yang menyimpan data, sementara off premise mengandalkan peralatan yang tidak dimiliki sendiri, seperti pusat data. Cloud publik adalah pilihan populer untuk menyimpan data yang tidak memerlukan pengetahuan tentang bagaimana atau di mana data disimpan secara tepat, di mana publik mengacu pada infrastruktur dasar yang seragam dan digunakan bersama oleh semua pengguna cloud. Beberapa organisasi memiliki kebijakan keamanan yang ketat yang mengharuskan mereka memiliki akses penuh ke peralatan tempat data di-host dan akan mengandalkan cloud privat yang menyediakan layanan cloud sendiri. Anda akan mempelajari lebih lanjut tentang data di cloud dalam [pelajaran berikutnya](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/5-Data-Science-In-Cloud). + +**Data dingin vs data panas** + +Saat melatih model Anda, Anda mungkin memerlukan lebih banyak data pelatihan. Jika Anda puas dengan model Anda, lebih banyak data akan datang untuk model tersebut agar dapat menjalankan tujuannya. Dalam kasus apa pun, biaya penyimpanan dan akses data akan meningkat seiring dengan bertambahnya data. Memisahkan data yang jarang digunakan, yang dikenal sebagai data dingin, dari data yang sering diakses, yang dikenal sebagai data panas, dapat menjadi opsi penyimpanan data yang lebih murah melalui layanan perangkat keras atau perangkat lunak. Jika data dingin perlu diakses, mungkin akan memakan waktu lebih lama untuk mengambilnya dibandingkan dengan data panas. + +### Pengelolaan Data + +Saat Anda bekerja dengan data, Anda mungkin menemukan bahwa beberapa data perlu dibersihkan menggunakan beberapa teknik yang dibahas dalam pelajaran yang berfokus pada [persiapan data](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/2-Working-With-Data/08-data-preparation) untuk membangun model yang akurat. Ketika data baru tiba, data tersebut akan memerlukan beberapa aplikasi yang sama untuk menjaga konsistensi kualitas. Beberapa proyek akan melibatkan penggunaan alat otomatis untuk pembersihan, agregasi, dan kompresi sebelum data dipindahkan ke lokasi akhirnya. Azure Data Factory adalah salah satu contoh alat ini. + +### Pengamanan Data + +Salah satu tujuan utama pengamanan data adalah memastikan bahwa mereka yang bekerja dengan data memiliki kendali atas apa yang dikumpulkan dan dalam konteks apa data tersebut digunakan. Menjaga data tetap aman melibatkan pembatasan akses hanya kepada mereka yang membutuhkannya, mematuhi undang-undang dan peraturan setempat, serta menjaga standar etika, seperti yang dibahas dalam [pelajaran etika](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/02-ethics). + +Berikut beberapa hal yang mungkin dilakukan oleh tim dengan mempertimbangkan keamanan: +- Memastikan bahwa semua data dienkripsi +- Memberikan informasi kepada pelanggan tentang bagaimana data mereka digunakan +- Menghapus akses data dari mereka yang telah meninggalkan proyek +- Membatasi hanya anggota proyek tertentu yang dapat mengubah data + +## 🚀 Tantangan + +Ada banyak versi Siklus Hidup Data Science, di mana setiap langkah mungkin memiliki nama dan jumlah tahap yang berbeda tetapi akan mencakup proses yang sama seperti yang disebutkan dalam pelajaran ini. + +Jelajahi [Siklus Hidup Proses Data Science Tim](https://docs.microsoft.com/en-us/azure/architecture/data-science-process/lifecycle) dan [Proses standar lintas-industri untuk data mining](https://www.datascience-pm.com/crisp-dm-2/). Sebutkan 3 kesamaan dan perbedaan antara keduanya. + +|Proses Data Science Tim (TDSP)|Proses standar lintas-industri untuk data mining (CRISP-DM)| +|--|--| +|![Siklus Hidup Data Science Tim](../../../../translated_images/tdsp-lifecycle2.e19029d598e2e73d5ef8a4b98837d688ec6044fe332c905d4dbb69eb6d5c1d96.id.png) | ![Gambar Aliansi Proses Data Science](../../../../translated_images/CRISP-DM.8bad2b4c66e62aa75278009e38e3e99902c73b0a6f63fd605a67c687a536698c.id.png) | +| Gambar oleh [Microsoft](https://docs.microsoft.comazure/architecture/data-science-process/lifecycle) | Gambar oleh [Data Science Process Alliance](https://www.datascience-pm.com/crisp-dm-2/) | + +## [Kuis Pasca-Pelajaran](https://red-water-0103e7a0f.azurestaticapps.net/quiz/27) + +## Tinjauan & Studi Mandiri + +Menerapkan Siklus Hidup Data Science melibatkan berbagai peran dan tugas, di mana beberapa mungkin berfokus pada bagian tertentu dari setiap tahap. Proses Data Science Tim menyediakan beberapa sumber daya yang menjelaskan jenis peran dan tugas yang mungkin dimiliki seseorang dalam sebuah proyek. + +* [Peran dan tugas Proses Data Science Tim](https://docs.microsoft.com/en-us/azure/architecture/data-science-process/roles-tasks) +* [Melaksanakan tugas data science: eksplorasi, pemodelan, dan penerapan](https://docs.microsoft.com/en-us/azure/architecture/data-science-process/execute-data-science-tasks) + +## Tugas + +[Menilai Dataset](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/4-Data-Science-Lifecycle/14-Introduction/assignment.md b/translations/id/4-Data-Science-Lifecycle/14-Introduction/assignment.md new file mode 100644 index 00000000..7679c083 --- /dev/null +++ b/translations/id/4-Data-Science-Lifecycle/14-Introduction/assignment.md @@ -0,0 +1,37 @@ + +# Menilai Dataset + +Seorang klien telah mendekati tim Anda untuk meminta bantuan dalam menyelidiki kebiasaan pengeluaran musiman pelanggan taksi di New York City. + +Mereka ingin mengetahui: **Apakah penumpang taksi kuning di New York City memberikan tip lebih banyak kepada pengemudi di musim dingin atau musim panas?** + +Tim Anda berada di tahap [Capturing](Readme.md#Capturing) dalam Siklus Hidup Data Science, dan Anda bertanggung jawab untuk menangani dataset. Anda telah diberikan sebuah notebook dan [data](../../../../data/taxi.csv) untuk dieksplorasi. + +Dalam direktori ini terdapat sebuah [notebook](notebook.ipynb) yang menggunakan Python untuk memuat data perjalanan taksi kuning dari [NYC Taxi & Limousine Commission](https://docs.microsoft.com/en-us/azure/open-datasets/dataset-taxi-yellow?tabs=azureml-opendatasets). +Anda juga dapat membuka file data taksi ini menggunakan editor teks atau perangkat lunak spreadsheet seperti Excel. + +## Instruksi + +- Nilai apakah data dalam dataset ini dapat membantu menjawab pertanyaan tersebut. +- Jelajahi [katalog NYC Open Data](https://data.cityofnewyork.us/browse?sortBy=most_accessed&utf8=%E2%9C%93). Identifikasi dataset tambahan yang berpotensi membantu menjawab pertanyaan klien. +- Tulis 3 pertanyaan yang akan Anda ajukan kepada klien untuk mendapatkan klarifikasi lebih lanjut dan pemahaman yang lebih baik tentang masalah ini. + +Rujuk ke [kamus dataset](https://www1.nyc.gov/assets/tlc/downloads/pdf/data_dictionary_trip_records_yellow.pdf) dan [panduan pengguna](https://www1.nyc.gov/assets/tlc/downloads/pdf/trip_record_user_guide.pdf) untuk informasi lebih lanjut tentang data. + +## Rubrik + +Unggul | Memadai | Perlu Perbaikan +--- | --- | --- + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/4-Data-Science-Lifecycle/15-analyzing/README.md b/translations/id/4-Data-Science-Lifecycle/15-analyzing/README.md new file mode 100644 index 00000000..29fa9304 --- /dev/null +++ b/translations/id/4-Data-Science-Lifecycle/15-analyzing/README.md @@ -0,0 +1,60 @@ + +# Siklus Data Science: Menganalisis + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/15-Analyzing.png)| +|:---:| +| Siklus Data Science: Menganalisis - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +## Kuis Pra-Kuliah + +## [Kuis Pra-Kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/28) + +Tahap menganalisis dalam siklus data memastikan bahwa data dapat menjawab pertanyaan yang diajukan atau menyelesaikan masalah tertentu. Langkah ini juga dapat berfokus pada memastikan bahwa model secara tepat menangani pertanyaan dan masalah tersebut. Pelajaran ini berfokus pada Analisis Data Eksploratif atau EDA, yaitu teknik untuk mendefinisikan fitur dan hubungan dalam data yang dapat digunakan untuk mempersiapkan data untuk pemodelan. + +Kita akan menggunakan dataset contoh dari [Kaggle](https://www.kaggle.com/balaka18/email-spam-classification-dataset-csv/version/1) untuk menunjukkan bagaimana ini dapat diterapkan dengan Python dan pustaka Pandas. Dataset ini berisi jumlah beberapa kata umum yang ditemukan dalam email, dengan sumber email yang anonim. Gunakan [notebook](notebook.ipynb) di direktori ini untuk mengikuti langkah-langkahnya. + +## Analisis Data Eksploratif + +Tahap pengumpulan dalam siklus adalah saat data diperoleh serta masalah dan pertanyaan yang dihadapi, tetapi bagaimana kita tahu bahwa data tersebut dapat mendukung hasil akhirnya? +Ingat bahwa seorang data scientist mungkin akan menanyakan pertanyaan berikut saat mereka memperoleh data: +- Apakah saya memiliki cukup data untuk menyelesaikan masalah ini? +- Apakah kualitas data cukup baik untuk masalah ini? +- Jika saya menemukan informasi tambahan melalui data ini, haruskah kita mempertimbangkan untuk mengubah atau mendefinisikan ulang tujuan? +Analisis Data Eksploratif adalah proses untuk mengenal data tersebut dan dapat digunakan untuk menjawab pertanyaan-pertanyaan ini, serta mengidentifikasi tantangan dalam bekerja dengan dataset. Mari kita fokus pada beberapa teknik yang digunakan untuk mencapainya. + +## Profiling Data, Statistik Deskriptif, dan Pandas +Bagaimana kita mengevaluasi apakah kita memiliki cukup data untuk menyelesaikan masalah ini? Profiling data dapat meringkas dan mengumpulkan beberapa informasi umum tentang dataset kita melalui teknik statistik deskriptif. Profiling data membantu kita memahami apa yang tersedia, dan statistik deskriptif membantu kita memahami seberapa banyak yang tersedia. + +Dalam beberapa pelajaran sebelumnya, kita telah menggunakan Pandas untuk menyediakan beberapa statistik deskriptif dengan [`describe()` function](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.describe.html). Fungsi ini memberikan jumlah, nilai maksimum dan minimum, rata-rata, deviasi standar, dan kuantil pada data numerik. Menggunakan statistik deskriptif seperti fungsi `describe()` dapat membantu Anda menilai seberapa banyak data yang Anda miliki dan apakah Anda memerlukan lebih banyak. + +## Sampling dan Querying +Mengeksplorasi semua data dalam dataset besar bisa sangat memakan waktu dan biasanya menjadi tugas yang dilakukan oleh komputer. Namun, sampling adalah alat yang berguna untuk memahami data dan memungkinkan kita memiliki pemahaman yang lebih baik tentang apa yang ada dalam dataset dan apa yang diwakilinya. Dengan sampel, Anda dapat menerapkan probabilitas dan statistik untuk membuat beberapa kesimpulan umum tentang data Anda. Meskipun tidak ada aturan pasti tentang seberapa banyak data yang harus Anda ambil sampelnya, penting untuk dicatat bahwa semakin banyak data yang Anda ambil sampelnya, semakin akurat generalisasi yang dapat Anda buat tentang data tersebut. +Pandas memiliki [`sample()` function dalam pustakanya](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.sample.html) di mana Anda dapat memberikan argumen tentang berapa banyak sampel acak yang ingin Anda terima dan gunakan. + +Querying umum pada data dapat membantu Anda menjawab beberapa pertanyaan dan teori umum yang mungkin Anda miliki. Berbeda dengan sampling, query memungkinkan Anda memiliki kontrol dan fokus pada bagian spesifik dari data yang Anda miliki pertanyaan tentangnya. +Fungsi [`query()`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.query.html) dalam pustaka Pandas memungkinkan Anda memilih kolom dan menerima jawaban sederhana tentang data melalui baris yang diambil. + +## Mengeksplorasi dengan Visualisasi +Anda tidak perlu menunggu hingga data benar-benar bersih dan dianalisis untuk mulai membuat visualisasi. Faktanya, memiliki representasi visual saat mengeksplorasi dapat membantu mengidentifikasi pola, hubungan, dan masalah dalam data. Selain itu, visualisasi menyediakan sarana komunikasi dengan mereka yang tidak terlibat dalam pengelolaan data dan dapat menjadi kesempatan untuk berbagi dan mengklarifikasi pertanyaan tambahan yang belum terjawab pada tahap pengumpulan. Lihat [bagian tentang Visualisasi](../../../../../../../../../3-Data-Visualization) untuk mempelajari lebih lanjut tentang beberapa cara populer untuk mengeksplorasi secara visual. + +## Mengeksplorasi untuk Mengidentifikasi Ketidakkonsistenan +Semua topik dalam pelajaran ini dapat membantu mengidentifikasi nilai yang hilang atau tidak konsisten, tetapi Pandas menyediakan fungsi untuk memeriksa beberapa di antaranya. [isna() atau isnull()](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.isna.html) dapat memeriksa nilai yang hilang. Salah satu bagian penting dari eksplorasi nilai-nilai ini dalam data Anda adalah mengeksplorasi mengapa nilai-nilai tersebut muncul seperti itu sejak awal. Hal ini dapat membantu Anda memutuskan [tindakan yang harus diambil untuk menyelesaikannya](/2-Working-With-Data/08-data-preparation/notebook.ipynb). + +## [Kuis Pra-Kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/27) + +## Tugas + +[Mengeksplorasi untuk jawaban](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa terjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau interpretasi yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/4-Data-Science-Lifecycle/15-analyzing/assignment.md b/translations/id/4-Data-Science-Lifecycle/15-analyzing/assignment.md new file mode 100644 index 00000000..f854e948 --- /dev/null +++ b/translations/id/4-Data-Science-Lifecycle/15-analyzing/assignment.md @@ -0,0 +1,36 @@ + +# Menjelajahi untuk Jawaban + +Ini adalah kelanjutan dari [tugas](../14-Introduction/assignment.md) pelajaran sebelumnya, di mana kita secara singkat melihat sekilas data set. Sekarang kita akan melihat data tersebut lebih mendalam. + +Sekali lagi, pertanyaan yang ingin diketahui klien: **Apakah penumpang taksi kuning di Kota New York memberi tip lebih banyak kepada pengemudi di musim dingin atau musim panas?** + +Tim Anda berada di tahap [Menganalisis](README.md) dalam Siklus Hidup Data Science, di mana Anda bertanggung jawab untuk melakukan analisis data eksplorasi pada dataset. Anda telah diberikan notebook dan dataset yang berisi 200 transaksi taksi dari Januari dan Juli 2019. + +## Instruksi + +Di direktori ini terdapat sebuah [notebook](assignment.ipynb) dan data dari [Taxi & Limousine Commission](https://docs.microsoft.com/en-us/azure/open-datasets/dataset-taxi-yellow?tabs=azureml-opendatasets). Lihat [kamus dataset](https://www1.nyc.gov/assets/tlc/downloads/pdf/data_dictionary_trip_records_yellow.pdf) dan [panduan pengguna](https://www1.nyc.gov/assets/tlc/downloads/pdf/trip_record_user_guide.pdf) untuk informasi lebih lanjut tentang data tersebut. + +Gunakan beberapa teknik dalam pelajaran ini untuk melakukan EDA Anda sendiri di notebook (tambahkan sel jika diperlukan) dan jawab pertanyaan berikut: + +- Pengaruh lain apa dalam data yang dapat memengaruhi jumlah tip? +- Kolom apa yang kemungkinan besar tidak diperlukan untuk menjawab pertanyaan klien? +- Berdasarkan apa yang telah disediakan sejauh ini, apakah data tampaknya memberikan bukti perilaku pemberian tip musiman? + +## Rubrik + +Unggul | Memadai | Perlu Perbaikan +--- | --- | --- + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diketahui bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/4-Data-Science-Lifecycle/16-communication/README.md b/translations/id/4-Data-Science-Lifecycle/16-communication/README.md new file mode 100644 index 00000000..167e2459 --- /dev/null +++ b/translations/id/4-Data-Science-Lifecycle/16-communication/README.md @@ -0,0 +1,222 @@ + +# Siklus Hidup Data Science: Komunikasi + +|![Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev)](../../sketchnotes/16-Communicating.png)| +|:---:| +| Siklus Hidup Data Science: Komunikasi - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +## [Kuis Pra-Kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/30) + +Uji pengetahuan Anda tentang materi yang akan dibahas dengan Kuis Pra-Kuliah di atas! + +# Pendahuluan + +### Apa itu Komunikasi? +Mari kita mulai pelajaran ini dengan mendefinisikan apa arti komunikasi. **Berkomunikasi berarti menyampaikan atau bertukar informasi.** Informasi bisa berupa ide, pemikiran, perasaan, pesan, sinyal tersembunyi, data – apa saja yang ingin disampaikan oleh seorang **_pengirim_** (seseorang yang mengirimkan informasi) kepada seorang **_penerima_** (seseorang yang menerima informasi) untuk dipahami. Dalam pelajaran ini, kita akan merujuk pengirim sebagai komunikator, dan penerima sebagai audiens. + +### Komunikasi Data & Bercerita +Kita memahami bahwa tujuan komunikasi adalah untuk menyampaikan atau bertukar informasi. Namun, ketika berkomunikasi data, tujuan Anda seharusnya bukan sekadar menyampaikan angka kepada audiens Anda. Tujuan Anda adalah untuk menyampaikan sebuah cerita yang didasarkan pada data Anda – komunikasi data yang efektif dan bercerita berjalan beriringan. Audiens Anda lebih mungkin mengingat cerita yang Anda sampaikan daripada angka yang Anda berikan. Nanti dalam pelajaran ini, kita akan membahas beberapa cara untuk menggunakan bercerita agar dapat menyampaikan data Anda dengan lebih efektif. + +### Jenis-Jenis Komunikasi +Sepanjang pelajaran ini, dua jenis komunikasi yang berbeda akan dibahas: Komunikasi Satu Arah dan Komunikasi Dua Arah. + +**Komunikasi satu arah** terjadi ketika seorang pengirim mengirimkan informasi kepada penerima tanpa adanya umpan balik atau tanggapan. Kita melihat contoh komunikasi satu arah setiap hari – dalam email massal, ketika berita menyampaikan cerita terbaru, atau bahkan ketika iklan televisi muncul dan memberi tahu Anda mengapa produk mereka hebat. Dalam setiap contoh ini, pengirim tidak mencari pertukaran informasi. Mereka hanya ingin menyampaikan atau memberikan informasi. + +**Komunikasi dua arah** terjadi ketika semua pihak yang terlibat bertindak sebagai pengirim dan penerima. Seorang pengirim akan memulai dengan berkomunikasi kepada penerima, dan penerima akan memberikan umpan balik atau tanggapan. Komunikasi dua arah adalah apa yang biasanya kita pikirkan ketika berbicara tentang komunikasi. Kita biasanya membayangkan orang-orang yang terlibat dalam percakapan – baik secara langsung, melalui panggilan telepon, media sosial, atau pesan teks. + +Ketika berkomunikasi data, akan ada situasi di mana Anda menggunakan komunikasi satu arah (misalnya saat presentasi di konferensi atau kepada kelompok besar di mana pertanyaan tidak akan diajukan langsung setelahnya) dan situasi di mana Anda menggunakan komunikasi dua arah (misalnya saat menggunakan data untuk meyakinkan beberapa pemangku kepentingan atau untuk meyakinkan rekan kerja bahwa waktu dan usaha harus dihabiskan untuk membangun sesuatu yang baru). + +# Komunikasi yang Efektif + +### Tanggung Jawab Anda sebagai Komunikator +Saat berkomunikasi, tugas Anda adalah memastikan bahwa penerima Anda memahami informasi yang ingin Anda sampaikan. Ketika Anda berkomunikasi data, Anda tidak hanya ingin penerima Anda memahami angka, tetapi juga cerita yang didasarkan pada data Anda. Komunikator data yang baik adalah seorang pencerita yang baik. + +Bagaimana Anda bercerita dengan data? Ada banyak cara – tetapi di bawah ini adalah 6 cara yang akan kita bahas dalam pelajaran ini. +1. Memahami Audiens Anda, Media Anda, & Metode Komunikasi Anda +2. Mulai dengan Tujuan Akhir +3. Pendekatan Seperti Cerita Nyata +4. Gunakan Kata & Frasa yang Bermakna +5. Gunakan Emosi + +Setiap strategi ini dijelaskan lebih rinci di bawah ini. + +### 1. Memahami Audiens Anda, Saluran Anda & Metode Komunikasi Anda +Cara Anda berkomunikasi dengan anggota keluarga mungkin berbeda dengan cara Anda berkomunikasi dengan teman-teman Anda. Anda mungkin menggunakan kata dan frasa yang berbeda yang lebih mudah dipahami oleh orang-orang yang Anda ajak bicara. Anda harus mengambil pendekatan yang sama saat berkomunikasi data. Pikirkan tentang siapa yang Anda ajak bicara. Pikirkan tentang tujuan mereka dan konteks yang mereka miliki terkait situasi yang Anda jelaskan kepada mereka. + +Anda mungkin dapat mengelompokkan sebagian besar audiens Anda ke dalam kategori tertentu. Dalam artikel _Harvard Business Review_, “[How to Tell a Story with Data](http://blogs.hbr.org/2013/04/how-to-tell-a-story-with-data/),” Jim Stikeleather, seorang Eksekutif Strategis Dell, mengidentifikasi lima kategori audiens. + +- **Pemula**: pertama kali terpapar subjek, tetapi tidak ingin penyederhanaan berlebihan +- **Umum**: menyadari topik, tetapi mencari pemahaman umum dan tema utama +- **Manajerial**: pemahaman mendalam yang dapat ditindaklanjuti tentang detail dan hubungan dengan akses ke rincian +- **Ahli**: lebih banyak eksplorasi dan penemuan serta lebih sedikit bercerita dengan detail yang mendalam +- **Eksekutif**: hanya memiliki waktu untuk memahami signifikansi dan kesimpulan dari probabilitas berbobot + +Kategori-kategori ini dapat memengaruhi cara Anda menyajikan data kepada audiens Anda. + +Selain memikirkan kategori audiens Anda, Anda juga harus mempertimbangkan saluran yang Anda gunakan untuk berkomunikasi dengan audiens Anda. Pendekatan Anda harus sedikit berbeda jika Anda menulis memo atau email dibandingkan dengan mengadakan pertemuan atau presentasi di konferensi. + +Di atas memahami audiens Anda, mengetahui bagaimana Anda akan berkomunikasi dengan mereka (menggunakan komunikasi satu arah atau dua arah) juga sangat penting. + +Jika Anda berkomunikasi dengan mayoritas audiens Pemula dan menggunakan komunikasi satu arah, Anda harus terlebih dahulu mendidik audiens dan memberikan konteks yang tepat. Kemudian Anda harus menyajikan data Anda kepada mereka dan memberi tahu mereka apa arti data Anda dan mengapa data Anda penting. Dalam hal ini, Anda mungkin ingin sangat fokus pada kejelasan, karena audiens Anda tidak akan dapat mengajukan pertanyaan langsung. + +Jika Anda berkomunikasi dengan mayoritas audiens Manajerial dan menggunakan komunikasi dua arah, Anda mungkin tidak perlu mendidik audiens Anda atau memberikan banyak konteks. Anda mungkin dapat langsung membahas data yang telah Anda kumpulkan dan mengapa itu penting. Namun, dalam skenario ini, Anda harus fokus pada pengaturan waktu dan mengontrol presentasi Anda. Ketika menggunakan komunikasi dua arah (terutama dengan audiens Manajerial yang mencari "pemahaman yang dapat ditindaklanjuti tentang detail dan hubungan"), pertanyaan mungkin muncul selama interaksi Anda yang dapat membawa diskusi ke arah yang tidak terkait dengan cerita yang Anda coba sampaikan. Ketika ini terjadi, Anda dapat mengambil tindakan dan mengarahkan diskusi kembali ke cerita Anda. + +### 2. Mulai dengan Tujuan Akhir +Memulai dengan tujuan akhir berarti memahami apa yang ingin audiens Anda ambil dari komunikasi Anda sebelum Anda mulai berbicara dengan mereka. Memikirkan dengan matang apa yang ingin audiens Anda pahami sebelumnya dapat membantu Anda menyusun cerita yang dapat diikuti oleh audiens Anda. Memulai dengan tujuan akhir cocok untuk komunikasi satu arah maupun dua arah. + +Bagaimana cara memulai dengan tujuan akhir? Sebelum berkomunikasi data Anda, tuliskan poin-poin utama Anda. Kemudian, setiap langkah saat Anda mempersiapkan cerita yang ingin Anda sampaikan dengan data Anda, tanyakan pada diri Anda, "Bagaimana ini terintegrasi ke dalam cerita yang saya sampaikan?" + +Perlu Diingat – Meskipun memulai dengan tujuan akhir adalah ideal, Anda tidak ingin hanya menyampaikan data yang mendukung poin utama Anda. Melakukan hal ini disebut Cherry-Picking, yaitu ketika seorang komunikator hanya menyampaikan data yang mendukung argumen mereka dan mengabaikan data lainnya. + +Jika semua data yang Anda kumpulkan dengan jelas mendukung poin utama Anda, bagus. Tetapi jika ada data yang Anda kumpulkan yang tidak mendukung poin utama Anda, atau bahkan mendukung argumen yang berlawanan, Anda juga harus menyampaikan data tersebut. Jika ini terjadi, jujurlah kepada audiens Anda dan beri tahu mereka mengapa Anda memilih untuk tetap pada cerita Anda meskipun tidak semua data mendukungnya. + +### 3. Pendekatan Seperti Cerita Nyata +Cerita tradisional terjadi dalam 5 fase. Anda mungkin pernah mendengar fase-fase ini disebut sebagai Eksposisi, Aksi Meningkat, Klimaks, Aksi Menurun, dan Penyelesaian. Atau yang lebih mudah diingat: Konteks, Konflik, Klimaks, Penutupan, Kesimpulan. Ketika menyampaikan data dan cerita Anda, Anda dapat mengambil pendekatan serupa. + +Anda dapat memulai dengan konteks, menetapkan latar belakang, dan memastikan audiens Anda berada pada halaman yang sama. Kemudian perkenalkan konflik. Mengapa Anda perlu mengumpulkan data ini? Masalah apa yang Anda coba selesaikan? Setelah itu, klimaks. Apa data itu? Apa arti data tersebut? Solusi apa yang disarankan oleh data tersebut? Kemudian Anda sampai pada penutupan, di mana Anda dapat mengulangi masalah dan solusi yang diusulkan. Terakhir, kita sampai pada kesimpulan, di mana Anda dapat merangkum poin-poin utama Anda dan langkah-langkah berikutnya yang Anda rekomendasikan kepada tim. + +### 4. Gunakan Kata & Frasa yang Bermakna +Jika Anda dan saya bekerja bersama pada sebuah produk, dan saya berkata kepada Anda, "Pengguna kami membutuhkan waktu lama untuk mendaftar di platform kami," berapa lama menurut Anda "waktu lama" itu? Satu jam? Seminggu? Sulit untuk mengetahui. Bagaimana jika saya mengatakan itu kepada seluruh audiens? Setiap orang dalam audiens mungkin memiliki gagasan yang berbeda tentang berapa lama waktu yang dibutuhkan pengguna untuk mendaftar di platform kami. + +Sebaliknya, bagaimana jika saya berkata, "Pengguna kami membutuhkan waktu rata-rata 3 menit untuk mendaftar dan onboarding di platform kami." + +Pesan itu lebih jelas. Ketika berkomunikasi data, mudah untuk berpikir bahwa semua orang dalam audiens Anda berpikir seperti Anda. Tetapi itu tidak selalu terjadi. Menyampaikan kejelasan tentang data Anda dan apa artinya adalah salah satu tanggung jawab Anda sebagai komunikator. Jika data atau cerita Anda tidak jelas, audiens Anda akan kesulitan mengikuti, dan kemungkinan besar mereka tidak akan memahami poin-poin utama Anda. + +Anda dapat menyampaikan data dengan lebih jelas ketika Anda menggunakan kata dan frasa yang bermakna, daripada yang samar. Di bawah ini adalah beberapa contohnya. + +- Kami memiliki tahun yang *mengagumkan*! + - Seseorang mungkin berpikir bahwa mengagumkan berarti peningkatan pendapatan 2% - 3%, dan orang lain mungkin berpikir itu berarti peningkatan 50% - 60%. +- Tingkat keberhasilan pengguna kami meningkat *secara dramatis*. + - Seberapa besar peningkatan yang dianggap dramatis? +- Proyek ini akan membutuhkan upaya yang *signifikan*. + - Seberapa besar upaya yang dianggap signifikan? + +Menggunakan kata-kata yang samar bisa berguna sebagai pengantar untuk data yang lebih rinci, atau sebagai ringkasan dari cerita yang baru saja Anda sampaikan. Tetapi pertimbangkan untuk memastikan bahwa setiap bagian dari presentasi Anda jelas bagi audiens Anda. + +### 5. Gunakan Emosi +Emosi adalah kunci dalam bercerita. Ini bahkan lebih penting ketika Anda bercerita dengan data. Ketika Anda berkomunikasi data, semuanya berfokus pada poin-poin utama yang ingin Anda sampaikan kepada audiens Anda. Ketika Anda membangkitkan emosi pada audiens, itu membantu mereka berempati dan membuat mereka lebih mungkin untuk mengambil tindakan. Emosi juga meningkatkan kemungkinan bahwa audiens akan mengingat pesan Anda. + +Anda mungkin pernah mengalami ini sebelumnya dengan iklan TV. Beberapa iklan sangat serius dan menggunakan emosi sedih untuk terhubung dengan audiens mereka dan membuat data yang mereka sampaikan benar-benar menonjol. Atau, beberapa iklan yang sangat ceria dan bahagia mungkin membuat Anda mengasosiasikan data mereka dengan perasaan bahagia. + +Bagaimana Anda menggunakan emosi saat berkomunikasi data? Berikut beberapa cara. + +- Gunakan Testimoni dan Cerita Pribadi + - Saat mengumpulkan data, cobalah untuk mengumpulkan data kuantitatif dan kualitatif, dan integrasikan kedua jenis data tersebut saat Anda berkomunikasi. Jika data Anda terutama kuantitatif, carilah cerita dari individu untuk mempelajari lebih lanjut tentang pengalaman mereka dengan apa pun yang data Anda sampaikan. +- Gunakan Gambar + - Gambar membantu audiens melihat diri mereka dalam situasi tertentu. Ketika Anda menggunakan gambar, Anda dapat mendorong audiens menuju emosi yang menurut Anda seharusnya mereka miliki tentang data Anda. +- Gunakan Warna + - Warna yang berbeda membangkitkan emosi yang berbeda. Warna populer dan emosi yang mereka bangkitkan adalah sebagai berikut. Perlu diingat, warna dapat memiliki arti yang berbeda di budaya yang berbeda. + - Biru biasanya membangkitkan emosi damai dan kepercayaan + - Hijau biasanya terkait dengan alam dan lingkungan + - Merah biasanya melambangkan gairah dan kegembiraan + - Kuning biasanya melambangkan optimisme dan kebahagiaan + +# Studi Kasus Komunikasi +Emerson adalah seorang Manajer Produk untuk sebuah aplikasi seluler. Emerson menyadari bahwa pelanggan mengajukan 42% lebih banyak keluhan dan laporan bug pada akhir pekan. Emerson juga menyadari bahwa pelanggan yang mengajukan keluhan yang tidak dijawab setelah 48 jam lebih mungkin 32% memberikan peringkat 1 atau 2 di toko aplikasi. + +Setelah melakukan penelitian, Emerson memiliki beberapa solusi untuk mengatasi masalah tersebut. Emerson mengatur pertemuan selama 30 menit dengan 3 pemimpin perusahaan untuk menyampaikan data dan solusi yang diusulkan. + +Selama pertemuan ini, tujuan Emerson adalah agar para pemimpin perusahaan memahami bahwa 2 solusi di bawah ini dapat meningkatkan peringkat aplikasi, yang kemungkinan akan diterjemahkan menjadi peningkatan pendapatan. + +**Solusi 1.** Mempekerjakan staf layanan pelanggan untuk bekerja pada akhir pekan + +**Solusi 2.** Membeli sistem tiket layanan pelanggan baru di mana staf layanan pelanggan dapat dengan mudah mengidentifikasi keluhan mana yang telah berada dalam antrean paling lama – sehingga mereka dapat mengetahui mana yang harus segera ditangani. +Dalam rapat, Emerson menghabiskan 5 menit menjelaskan mengapa memiliki rating rendah di app store itu buruk, 10 menit menjelaskan proses penelitian dan bagaimana tren diidentifikasi, 10 menit membahas beberapa keluhan pelanggan terbaru, dan 5 menit terakhir hanya sekilas membahas 2 solusi potensial. + +Apakah ini cara yang efektif bagi Emerson untuk berkomunikasi selama rapat ini? + +Selama rapat, salah satu pemimpin perusahaan terfokus pada 10 menit pembahasan keluhan pelanggan yang disampaikan oleh Emerson. Setelah rapat, keluhan-keluhan ini adalah satu-satunya hal yang diingat oleh pemimpin tim tersebut. Pemimpin perusahaan lainnya lebih banyak fokus pada penjelasan Emerson tentang proses penelitian. Pemimpin perusahaan ketiga memang mengingat solusi yang diusulkan oleh Emerson, tetapi tidak yakin bagaimana solusi tersebut dapat diimplementasikan. + +Dalam situasi di atas, terlihat adanya kesenjangan yang signifikan antara apa yang ingin disampaikan Emerson kepada para pemimpin tim, dan apa yang akhirnya mereka tangkap dari rapat tersebut. Di bawah ini adalah pendekatan lain yang dapat dipertimbangkan oleh Emerson. + +Bagaimana Emerson dapat meningkatkan pendekatan ini? +Konteks, Konflik, Klimaks, Penutupan, Kesimpulan +**Konteks** - Emerson dapat menghabiskan 5 menit pertama untuk memperkenalkan keseluruhan situasi dan memastikan bahwa para pemimpin tim memahami bagaimana masalah ini memengaruhi metrik yang penting bagi perusahaan, seperti pendapatan. + +Ini dapat disampaikan seperti ini: "Saat ini, rating aplikasi kita di app store adalah 2,5. Rating di app store sangat penting untuk Optimasi App Store, yang memengaruhi seberapa banyak pengguna yang melihat aplikasi kita dalam pencarian, dan bagaimana aplikasi kita dipandang oleh calon pengguna. Dan tentu saja, jumlah pengguna yang kita miliki berhubungan langsung dengan pendapatan." + +**Konflik** Emerson kemudian dapat melanjutkan dengan berbicara selama sekitar 5 menit tentang konflik. + +Ini dapat disampaikan seperti ini: “Pengguna mengajukan 42% lebih banyak keluhan dan laporan bug pada akhir pekan. Pelanggan yang mengajukan keluhan yang tidak dijawab setelah 48 jam memiliki kemungkinan 32% lebih kecil untuk memberikan rating di atas 2 di app store. Meningkatkan rating aplikasi kita di app store menjadi 4 akan meningkatkan visibilitas kita sebesar 20-30%, yang saya perkirakan akan meningkatkan pendapatan sebesar 10%." Tentu saja, Emerson harus siap untuk membenarkan angka-angka ini. + +**Klimaks** Setelah memberikan dasar-dasar, Emerson kemudian dapat beralih ke Klimaks selama sekitar 5 menit. + +Emerson dapat memperkenalkan solusi yang diusulkan, menjelaskan bagaimana solusi tersebut akan mengatasi masalah yang telah diuraikan, bagaimana solusi tersebut dapat diimplementasikan ke dalam alur kerja yang ada, berapa biaya solusi tersebut, apa ROI dari solusi tersebut, dan mungkin bahkan menunjukkan beberapa tangkapan layar atau wireframe tentang bagaimana solusi tersebut akan terlihat jika diimplementasikan. Emerson juga dapat membagikan testimoni dari pengguna yang keluhannya memakan waktu lebih dari 48 jam untuk ditangani, dan bahkan testimoni dari perwakilan layanan pelanggan saat ini di perusahaan yang memiliki komentar tentang sistem tiket yang ada. + +**Penutupan** Sekarang Emerson dapat menghabiskan 5 menit untuk mengulang kembali masalah yang dihadapi perusahaan, meninjau kembali solusi yang diusulkan, dan mengulas mengapa solusi tersebut adalah yang tepat. + +**Kesimpulan** Karena ini adalah rapat dengan beberapa pemangku kepentingan di mana komunikasi dua arah akan digunakan, Emerson kemudian dapat merencanakan untuk menyisakan 10 menit untuk sesi tanya jawab, untuk memastikan bahwa segala sesuatu yang membingungkan bagi para pemimpin tim dapat diklarifikasi sebelum rapat selesai. + +Jika Emerson menggunakan pendekatan #2, kemungkinan besar para pemimpin tim akan menangkap dari rapat tersebut apa yang benar-benar ingin disampaikan oleh Emerson – bahwa cara menangani keluhan dan bug dapat ditingkatkan, dan ada 2 solusi yang dapat diterapkan untuk membuat peningkatan tersebut terjadi. Pendekatan ini akan jauh lebih efektif dalam menyampaikan data dan cerita yang ingin disampaikan oleh Emerson. + +# Kesimpulan +### Ringkasan Poin Utama + - Berkomunikasi berarti menyampaikan atau bertukar informasi. + - Saat berkomunikasi menggunakan data, tujuan Anda seharusnya bukan hanya menyampaikan angka kepada audiens Anda. Tujuan Anda adalah menyampaikan sebuah cerita yang didasarkan pada data Anda. + - Ada 2 jenis komunikasi, Komunikasi Satu Arah (informasi disampaikan tanpa niat untuk mendapatkan respons) dan Komunikasi Dua Arah (informasi disampaikan bolak-balik). + - Ada banyak strategi yang dapat Anda gunakan untuk menceritakan sebuah cerita dengan data Anda, 5 strategi yang telah kita bahas adalah: + - Pahami Audiens Anda, Media Anda, & Metode Komunikasi Anda + - Mulailah dengan Tujuan Akhir + - Pendekatan Seperti Sebuah Cerita Nyata + - Gunakan Kata & Frasa yang Bermakna + - Gunakan Emosi + +### Sumber Belajar yang Direkomendasikan +[The Five C's of Storytelling - Articulate Persuasion](http://articulatepersuasion.com/the-five-cs-of-storytelling/) + +[1.4 Your Responsibilities as a Communicator – Business Communication for Success (umn.edu)](https://open.lib.umn.edu/businesscommunication/chapter/1-4-your-responsibilities-as-a-communicator/) + +[How to Tell a Story with Data (hbr.org)](https://hbr.org/2013/04/how-to-tell-a-story-with-data) + +[Two-Way Communication: 4 Tips for a More Engaged Workplace (yourthoughtpartner.com)](https://www.yourthoughtpartner.com/blog/bid/59576/4-steps-to-increase-employee-engagement-through-two-way-communication) + +[6 succinct steps to great data storytelling - BarnRaisers, LLC (barnraisersllc.com)](https://barnraisersllc.com/2021/05/02/6-succinct-steps-to-great-data-storytelling/) + +[How to Tell a Story With Data | Lucidchart Blog](https://www.lucidchart.com/blog/how-to-tell-a-story-with-data) + +[6 Cs of Effective Storytelling on Social Media | Cooler Insights](https://coolerinsights.com/2018/06/effective-storytelling-social-media/) + +[The Importance of Emotions In Presentations | Ethos3 - A Presentation Training and Design Agency](https://ethos3.com/2015/02/the-importance-of-emotions-in-presentations/) + +[Data storytelling: linking emotions and rational decisions (toucantoco.com)](https://www.toucantoco.com/en/blog/data-storytelling-dataviz) + +[Emotional Advertising: How Brands Use Feelings to Get People to Buy (hubspot.com)](https://blog.hubspot.com/marketing/emotions-in-advertising-examples) + +[Choosing Colors for Your Presentation Slides | Think Outside The Slide](https://www.thinkoutsidetheslide.com/choosing-colors-for-your-presentation-slides/) + +[How To Present Data [10 Expert Tips] | ObservePoint](https://resources.observepoint.com/blog/10-tips-for-presenting-data) + +[Microsoft Word - Persuasive Instructions.doc (tpsnva.org)](https://www.tpsnva.org/teach/lq/016/persinstr.pdf) + +[The Power of Story for Your Data (thinkhdi.com)](https://www.thinkhdi.com/library/supportworld/2019/power-story-your-data.aspx) + +[Common Mistakes in Data Presentation (perceptualedge.com)](https://www.perceptualedge.com/articles/ie/data_presentation.pdf) + +[Infographic: Here are 15 Common Data Fallacies to Avoid (visualcapitalist.com)](https://www.visualcapitalist.com/here-are-15-common-data-fallacies-to-avoid/) + +[Cherry Picking: When People Ignore Evidence that They Dislike – Effectiviology](https://effectiviology.com/cherry-picking/#How_to_avoid_cherry_picking) + +[Tell Stories with Data: Communication in Data Science | by Sonali Verghese | Towards Data Science](https://towardsdatascience.com/tell-stories-with-data-communication-in-data-science-5266f7671d7) + +[1. Communicating Data - Communicating Data with Tableau [Book] (oreilly.com)](https://www.oreilly.com/library/view/communicating-data-with/9781449372019/ch01.html) + +## [Kuis Pasca-Kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/31) + +Tinjau kembali apa yang baru saja Anda pelajari dengan Kuis Pasca-Kuliah di atas! + +## Tugas + +[Market Research](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diketahui bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/4-Data-Science-Lifecycle/16-communication/assignment.md b/translations/id/4-Data-Science-Lifecycle/16-communication/assignment.md new file mode 100644 index 00000000..fbd65b42 --- /dev/null +++ b/translations/id/4-Data-Science-Lifecycle/16-communication/assignment.md @@ -0,0 +1,26 @@ + +# Ceritakan sebuah kisah + +## Instruksi + +Data Science adalah tentang bercerita. Pilih dataset apa saja dan tulislah sebuah makalah singkat tentang kisah yang bisa Anda ceritakan dari dataset tersebut. Apa yang Anda harapkan dataset Anda dapat ungkapkan? Apa yang akan Anda lakukan jika pengungkapannya ternyata bermasalah? Bagaimana jika data Anda tidak mudah mengungkapkan rahasianya? Pikirkan skenario yang mungkin dihadirkan oleh dataset Anda dan tuliskan. + +## Rubrik + +Unggul | Memadai | Perlu Perbaikan +--- | --- | --- | + +Sebuah esai satu halaman disajikan dalam format .doc dengan dataset dijelaskan, didokumentasikan, diberi kredit, dan sebuah cerita yang koheren disajikan tentang dataset tersebut dengan contoh-contoh terperinci dari data.| Esai yang lebih pendek disajikan dalam format yang kurang terperinci | Esai ditemukan kurang dalam salah satu detail di atas. + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/4-Data-Science-Lifecycle/README.md b/translations/id/4-Data-Science-Lifecycle/README.md new file mode 100644 index 00000000..7c01bd0d --- /dev/null +++ b/translations/id/4-Data-Science-Lifecycle/README.md @@ -0,0 +1,30 @@ + +# Siklus Data Science + +![communication](../../../translated_images/communication.06d8e2a88d30d168d661ad9f9f0a4f947ebff3719719cfdaf9ed00a406a01ead.id.jpg) +> Foto oleh Headway di Unsplash + +Dalam pelajaran ini, Anda akan menjelajahi beberapa aspek dari siklus Data Science, termasuk analisis dan komunikasi seputar data. + +### Topik + +1. [Pendahuluan](14-Introduction/README.md) +2. [Analisis](15-analyzing/README.md) +3. [Komunikasi](16-communication/README.md) + +### Kredit + +Pelajaran ini ditulis dengan ❤️ oleh [Jalen McGee](https://twitter.com/JalenMCG) dan [Jasmine Greenaway](https://twitter.com/paladique) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/5-Data-Science-In-Cloud/17-Introduction/README.md b/translations/id/5-Data-Science-In-Cloud/17-Introduction/README.md new file mode 100644 index 00000000..48fbe6a1 --- /dev/null +++ b/translations/id/5-Data-Science-In-Cloud/17-Introduction/README.md @@ -0,0 +1,113 @@ + +# Pengantar Data Science di Cloud + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/17-DataScience-Cloud.png)| +|:---:| +| Data Science di Cloud: Pengantar - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +Dalam pelajaran ini, Anda akan mempelajari prinsip-prinsip dasar Cloud, kemudian Anda akan melihat mengapa menggunakan layanan Cloud dapat menarik untuk menjalankan proyek data science Anda, dan kita akan melihat beberapa contoh proyek data science yang dijalankan di Cloud. + +## [Kuis Pra-Kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/32) + +## Apa itu Cloud? + +Cloud, atau Cloud Computing, adalah penyediaan berbagai layanan komputasi berbasis bayar sesuai penggunaan yang di-host di infrastruktur melalui internet. Layanan ini mencakup solusi seperti penyimpanan, basis data, jaringan, perangkat lunak, analitik, dan layanan cerdas. + +Kita biasanya membedakan Cloud Publik, Cloud Privat, dan Cloud Hybrid sebagai berikut: + +* **Cloud Publik**: Cloud publik dimiliki dan dioperasikan oleh penyedia layanan cloud pihak ketiga yang menyediakan sumber daya komputasi melalui Internet kepada publik. +* **Cloud Privat**: Mengacu pada sumber daya komputasi cloud yang digunakan secara eksklusif oleh satu bisnis atau organisasi, dengan layanan dan infrastruktur yang dikelola di jaringan privat. +* **Cloud Hybrid**: Cloud hybrid adalah sistem yang menggabungkan cloud publik dan privat. Pengguna memilih pusat data lokal, sambil memungkinkan data dan aplikasi dijalankan di satu atau lebih cloud publik. + +Sebagian besar layanan cloud computing terbagi dalam tiga kategori: Infrastruktur sebagai Layanan (IaaS), Platform sebagai Layanan (PaaS), dan Perangkat Lunak sebagai Layanan (SaaS). + +* **Infrastruktur sebagai Layanan (IaaS)**: Pengguna menyewa infrastruktur TI seperti server dan mesin virtual (VM), penyimpanan, jaringan, sistem operasi. +* **Platform sebagai Layanan (PaaS)**: Pengguna menyewa lingkungan untuk mengembangkan, menguji, mengirimkan, dan mengelola aplikasi perangkat lunak. Pengguna tidak perlu khawatir tentang pengaturan atau pengelolaan infrastruktur dasar seperti server, penyimpanan, jaringan, dan basis data yang diperlukan untuk pengembangan. +* **Perangkat Lunak sebagai Layanan (SaaS)**: Pengguna mendapatkan akses ke aplikasi perangkat lunak melalui Internet, sesuai permintaan, dan biasanya dengan basis langganan. Pengguna tidak perlu khawatir tentang hosting dan pengelolaan aplikasi perangkat lunak, infrastruktur dasar, atau pemeliharaan seperti pembaruan perangkat lunak dan patch keamanan. + +Beberapa penyedia Cloud terbesar adalah Amazon Web Services, Google Cloud Platform, dan Microsoft Azure. + +## Mengapa Memilih Cloud untuk Data Science? + +Pengembang dan profesional TI memilih bekerja dengan Cloud karena berbagai alasan, termasuk: + +* **Inovasi**: Anda dapat memperkuat aplikasi Anda dengan mengintegrasikan layanan inovatif yang dibuat oleh penyedia Cloud langsung ke dalam aplikasi Anda. +* **Fleksibilitas**: Anda hanya membayar untuk layanan yang Anda butuhkan dan dapat memilih dari berbagai layanan. Anda biasanya membayar sesuai penggunaan dan menyesuaikan layanan Anda sesuai kebutuhan yang berkembang. +* **Anggaran**: Anda tidak perlu melakukan investasi awal untuk membeli perangkat keras dan perangkat lunak, mengatur dan menjalankan pusat data lokal, dan Anda hanya membayar untuk apa yang Anda gunakan. +* **Skalabilitas**: Sumber daya Anda dapat diskalakan sesuai kebutuhan proyek Anda, yang berarti aplikasi Anda dapat menggunakan lebih banyak atau lebih sedikit daya komputasi, penyimpanan, dan bandwidth, dengan menyesuaikan faktor eksternal kapan saja. +* **Produktivitas**: Anda dapat fokus pada bisnis Anda daripada menghabiskan waktu untuk tugas-tugas yang dapat dikelola oleh pihak lain, seperti mengelola pusat data. +* **Keandalan**: Cloud Computing menawarkan berbagai cara untuk terus mencadangkan data Anda dan Anda dapat mengatur rencana pemulihan bencana untuk menjaga bisnis dan layanan Anda tetap berjalan, bahkan di saat krisis. +* **Keamanan**: Anda dapat memanfaatkan kebijakan, teknologi, dan kontrol yang memperkuat keamanan proyek Anda. + +Ini adalah beberapa alasan paling umum mengapa orang memilih menggunakan layanan Cloud. Sekarang setelah kita memiliki pemahaman yang lebih baik tentang apa itu Cloud dan manfaat utamanya, mari kita lihat lebih spesifik pada pekerjaan Data Scientist dan pengembang yang bekerja dengan data, serta bagaimana Cloud dapat membantu mereka menghadapi berbagai tantangan yang mungkin mereka temui: + +* **Menyimpan data dalam jumlah besar**: Alih-alih membeli, mengelola, dan melindungi server besar, Anda dapat menyimpan data Anda langsung di cloud, dengan solusi seperti Azure Cosmos DB, Azure SQL Database, dan Azure Data Lake Storage. +* **Melakukan integrasi data**: Integrasi data adalah bagian penting dari Data Science, yang memungkinkan Anda beralih dari pengumpulan data ke pengambilan tindakan. Dengan layanan integrasi data yang ditawarkan di cloud, Anda dapat mengumpulkan, mengubah, dan mengintegrasikan data dari berbagai sumber ke dalam satu gudang data, dengan Data Factory. +* **Memproses data**: Memproses data dalam jumlah besar membutuhkan banyak daya komputasi, dan tidak semua orang memiliki akses ke mesin yang cukup kuat untuk itu, itulah sebabnya banyak orang memilih langsung memanfaatkan daya komputasi besar dari cloud untuk menjalankan dan menerapkan solusi mereka. +* **Menggunakan layanan analitik data**: Layanan cloud seperti Azure Synapse Analytics, Azure Stream Analytics, dan Azure Databricks membantu Anda mengubah data menjadi wawasan yang dapat ditindaklanjuti. +* **Menggunakan layanan Machine Learning dan kecerdasan data**: Alih-alih memulai dari nol, Anda dapat menggunakan algoritma machine learning yang ditawarkan oleh penyedia cloud, dengan layanan seperti AzureML. Anda juga dapat menggunakan layanan kognitif seperti pengenalan suara-ke-teks, teks-ke-suara, penglihatan komputer, dan lainnya. + +## Contoh Data Science di Cloud + +Mari kita buat ini lebih nyata dengan melihat beberapa skenario. + +### Analisis Sentimen Media Sosial Secara Real-Time +Kita akan mulai dengan skenario yang sering dipelajari oleh orang-orang yang baru memulai machine learning: analisis sentimen media sosial secara real-time. + +Misalnya, Anda menjalankan situs web berita dan ingin memanfaatkan data langsung untuk memahami konten apa yang mungkin menarik bagi pembaca Anda. Untuk mengetahui lebih lanjut tentang itu, Anda dapat membuat program yang melakukan analisis sentimen secara real-time dari data publikasi Twitter, pada topik yang relevan dengan pembaca Anda. + +Indikator utama yang akan Anda lihat adalah volume tweet pada topik tertentu (hashtag) dan sentimen, yang ditentukan menggunakan alat analitik yang melakukan analisis sentimen pada topik yang ditentukan. + +Langkah-langkah yang diperlukan untuk membuat proyek ini adalah sebagai berikut: + +* Membuat event hub untuk streaming input, yang akan mengumpulkan data dari Twitter +* Mengonfigurasi dan memulai aplikasi klien Twitter, yang akan memanggil Twitter Streaming APIs +* Membuat pekerjaan Stream Analytics +* Menentukan input dan kueri pekerjaan +* Membuat output sink dan menentukan output pekerjaan +* Memulai pekerjaan + +Untuk melihat proses lengkapnya, lihat [dokumentasi](https://docs.microsoft.com/azure/stream-analytics/stream-analytics-twitter-sentiment-analysis-trends?WT.mc_id=academic-77958-bethanycheum&ocid=AID30411099). + +### Analisis Makalah Ilmiah +Mari kita ambil contoh lain dari proyek yang dibuat oleh [Dmitry Soshnikov](http://soshnikov.com), salah satu penulis kurikulum ini. + +Dmitry membuat alat yang menganalisis makalah COVID. Dengan meninjau proyek ini, Anda akan melihat bagaimana Anda dapat membuat alat yang mengekstrak pengetahuan dari makalah ilmiah, mendapatkan wawasan, dan membantu peneliti menavigasi koleksi makalah besar secara efisien. + +Mari kita lihat langkah-langkah yang digunakan untuk ini: +* Mengekstrak dan memproses informasi dengan [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) +* Menggunakan [Azure ML](https://azure.microsoft.com/services/machine-learning?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) untuk memproses secara paralel +* Menyimpan dan melakukan kueri informasi dengan [Cosmos DB](https://azure.microsoft.com/services/cosmos-db?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) +* Membuat dasbor interaktif untuk eksplorasi dan visualisasi data menggunakan Power BI + +Untuk melihat proses lengkapnya, kunjungi [blog Dmitry](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). + +Seperti yang Anda lihat, kita dapat memanfaatkan layanan Cloud dalam berbagai cara untuk melakukan Data Science. + +## Catatan Kaki + +Sumber: +* https://azure.microsoft.com/overview/what-is-cloud-computing?ocid=AID3041109 +* https://docs.microsoft.com/azure/stream-analytics/stream-analytics-twitter-sentiment-analysis-trends?ocid=AID3041109 +* https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/ + +## Kuis Pasca-Kuliah + +[Kuis Pasca-Kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/33) + +## Tugas + +[Penelitian Pasar](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemah manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/5-Data-Science-In-Cloud/17-Introduction/assignment.md b/translations/id/5-Data-Science-In-Cloud/17-Introduction/assignment.md new file mode 100644 index 00000000..8fb62b2c --- /dev/null +++ b/translations/id/5-Data-Science-In-Cloud/17-Introduction/assignment.md @@ -0,0 +1,25 @@ + +# Riset Pasar + +## Instruksi + +Dalam pelajaran ini, Anda telah belajar bahwa ada beberapa penyedia cloud yang penting. Lakukan riset pasar untuk mengetahui apa yang masing-masing dapat tawarkan kepada Data Scientist. Apakah penawarannya sebanding? Tulislah sebuah makalah yang menjelaskan penawaran dari tiga atau lebih penyedia cloud tersebut. + +## Rubrik + +Unggul | Memadai | Perlu Perbaikan +--- | --- | --- | +Makalah satu halaman menjelaskan penawaran data science dari tiga penyedia cloud dan membedakan di antara mereka. | Makalah yang lebih pendek disajikan | Makalah disajikan tanpa menyelesaikan analisis + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/5-Data-Science-In-Cloud/18-Low-Code/README.md b/translations/id/5-Data-Science-In-Cloud/18-Low-Code/README.md new file mode 100644 index 00000000..f1a07799 --- /dev/null +++ b/translations/id/5-Data-Science-In-Cloud/18-Low-Code/README.md @@ -0,0 +1,348 @@ + +# Data Science di Cloud: Cara "Low code/No code" + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/18-DataScience-Cloud.png)| +|:---:| +| Data Science di Cloud: Low Code - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +Daftar isi: + +- [Data Science di Cloud: Cara "Low code/No code"](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [Kuis Pra-Pelajaran](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [1. Pendahuluan](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [1.1 Apa itu Azure Machine Learning?](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [1.2 Proyek Prediksi Gagal Jantung:](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [1.3 Dataset Gagal Jantung:](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [2. Pelatihan model dengan Low code/No code di Azure ML Studio](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [2.1 Membuat workspace Azure ML](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [2.2 Sumber Daya Komputasi](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [2.2.1 Memilih opsi yang tepat untuk sumber daya komputasi](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [2.2.2 Membuat cluster komputasi](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [2.3 Memuat Dataset](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [2.4 Pelatihan Low code/No code dengan AutoML](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [3. Deployment model dengan Low code/No code dan konsumsi endpoint](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [3.1 Deployment model](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [3.2 Konsumsi endpoint](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [🚀 Tantangan](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [Kuis Pasca-Pelajaran](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [Tinjauan & Studi Mandiri](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [Tugas](../../../../5-Data-Science-In-Cloud/18-Low-Code) + +## [Kuis Pra-Pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/34) +## 1. Pendahuluan +### 1.1 Apa itu Azure Machine Learning? + +Platform cloud Azure terdiri dari lebih dari 200 produk dan layanan cloud yang dirancang untuk membantu Anda menciptakan solusi baru. Data scientist menghabiskan banyak waktu untuk mengeksplorasi dan memproses data, serta mencoba berbagai jenis algoritma pelatihan model untuk menghasilkan model yang akurat. Tugas-tugas ini memakan waktu dan sering kali tidak efisien dalam penggunaan perangkat keras komputasi yang mahal. + +[Azure ML](https://docs.microsoft.com/azure/machine-learning/overview-what-is-azure-machine-learning?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) adalah platform berbasis cloud untuk membangun dan mengoperasikan solusi machine learning di Azure. Platform ini mencakup berbagai fitur dan kemampuan yang membantu data scientist mempersiapkan data, melatih model, mempublikasikan layanan prediktif, dan memantau penggunaannya. Yang paling penting, Azure ML meningkatkan efisiensi dengan mengotomatisasi banyak tugas yang memakan waktu dalam pelatihan model, serta memungkinkan penggunaan sumber daya komputasi berbasis cloud yang dapat diskalakan untuk menangani volume data besar dengan biaya hanya saat digunakan. + +Azure ML menyediakan semua alat yang dibutuhkan pengembang dan data scientist untuk alur kerja machine learning mereka, termasuk: + +- **Azure Machine Learning Studio**: portal web di Azure Machine Learning untuk opsi low-code dan no-code dalam pelatihan model, deployment, otomatisasi, pelacakan, dan manajemen aset. Studio ini terintegrasi dengan Azure Machine Learning SDK untuk pengalaman yang mulus. +- **Jupyter Notebooks**: prototipe cepat dan pengujian model ML. +- **Azure Machine Learning Designer**: memungkinkan drag-and-drop modul untuk membangun eksperimen dan kemudian mendistribusikan pipeline dalam lingkungan low-code. +- **UI Automated machine learning (AutoML)**: mengotomatisasi tugas iteratif dalam pengembangan model machine learning, memungkinkan pembuatan model ML dengan skala tinggi, efisiensi, dan produktivitas, sambil mempertahankan kualitas model. +- **Pelabelan Data**: alat ML yang dibantu untuk secara otomatis melabeli data. +- **Ekstensi machine learning untuk Visual Studio Code**: menyediakan lingkungan pengembangan lengkap untuk membangun dan mengelola proyek ML. +- **CLI machine learning**: menyediakan perintah untuk mengelola sumber daya Azure ML dari command line. +- **Integrasi dengan framework open-source** seperti PyTorch, TensorFlow, Scikit-learn, dan banyak lagi untuk pelatihan, deployment, dan pengelolaan proses machine learning end-to-end. +- **MLflow**: pustaka open-source untuk mengelola siklus hidup eksperimen machine learning Anda. **MLFlow Tracking** adalah komponen MLflow yang mencatat dan melacak metrik pelatihan dan artefak model Anda, terlepas dari lingkungan eksperimen Anda. + +### 1.2 Proyek Prediksi Gagal Jantung: + +Tidak diragukan lagi bahwa membuat dan membangun proyek adalah cara terbaik untuk menguji keterampilan dan pengetahuan Anda. Dalam pelajaran ini, kita akan mengeksplorasi dua cara berbeda untuk membangun proyek data science untuk prediksi serangan gagal jantung di Azure ML Studio, melalui Low code/No code dan melalui Azure ML SDK seperti yang ditunjukkan dalam skema berikut: + +![project-schema](../../../../translated_images/project-schema.736f6e403f321eb48d10242b3f4334dc6ccf0eabef8ff87daf52b89781389fcb.id.png) + +Setiap cara memiliki kelebihan dan kekurangannya masing-masing. Cara Low code/No code lebih mudah untuk memulai karena melibatkan interaksi dengan GUI (Graphical User Interface), tanpa memerlukan pengetahuan kode sebelumnya. Metode ini memungkinkan pengujian cepat kelayakan proyek dan pembuatan POC (Proof Of Concept). Namun, saat proyek berkembang dan perlu siap untuk produksi, tidak memungkinkan untuk membuat sumber daya melalui GUI. Kita perlu mengotomatisasi semuanya secara programatik, mulai dari pembuatan sumber daya hingga deployment model. Di sinilah pentingnya mengetahui cara menggunakan Azure ML SDK. + +| | Low code/No code | Azure ML SDK | +|-------------------|------------------|---------------------------| +| Keahlian kode | Tidak diperlukan | Diperlukan | +| Waktu pengembangan| Cepat dan mudah | Bergantung pada keahlian kode | +| Siap produksi | Tidak | Ya | + +### 1.3 Dataset Gagal Jantung: + +Penyakit kardiovaskular (CVDs) adalah penyebab utama kematian secara global, menyumbang 31% dari semua kematian di seluruh dunia. Faktor risiko lingkungan dan perilaku seperti penggunaan tembakau, pola makan tidak sehat dan obesitas, kurangnya aktivitas fisik, serta penggunaan alkohol yang berlebihan dapat digunakan sebagai fitur untuk model estimasi. Kemampuan untuk memperkirakan kemungkinan perkembangan CVD dapat sangat berguna untuk mencegah serangan pada orang dengan risiko tinggi. + +Kaggle telah menyediakan [Dataset Gagal Jantung](https://www.kaggle.com/andrewmvd/heart-failure-clinical-data) secara publik, yang akan kita gunakan untuk proyek ini. Anda dapat mengunduh dataset sekarang. Dataset ini berbentuk tabular dengan 13 kolom (12 fitur dan 1 variabel target) dan 299 baris. + +| | Nama Variabel | Tipe | Deskripsi | Contoh | +|----|---------------------------|-----------------|---------------------------------------------------------|-------------------| +| 1 | age | numerik | usia pasien | 25 | +| 2 | anaemia | boolean | Penurunan sel darah merah atau hemoglobin | 0 atau 1 | +| 3 | creatinine_phosphokinase | numerik | Tingkat enzim CPK dalam darah | 542 | +| 4 | diabetes | boolean | Apakah pasien memiliki diabetes | 0 atau 1 | +| 5 | ejection_fraction | numerik | Persentase darah yang keluar dari jantung setiap kontraksi | 45 | +| 6 | high_blood_pressure | boolean | Apakah pasien memiliki hipertensi | 0 atau 1 | +| 7 | platelets | numerik | Jumlah trombosit dalam darah | 149000 | +| 8 | serum_creatinine | numerik | Tingkat serum kreatinin dalam darah | 0.5 | +| 9 | serum_sodium | numerik | Tingkat serum natrium dalam darah | jun | +| 10 | sex | boolean | wanita atau pria | 0 atau 1 | +| 11 | smoking | boolean | Apakah pasien merokok | 0 atau 1 | +| 12 | time | numerik | periode tindak lanjut (hari) | 4 | +|----|---------------------------|-----------------|---------------------------------------------------------|-------------------| +| 21 | DEATH_EVENT [Target] | boolean | apakah pasien meninggal selama periode tindak lanjut | 0 atau 1 | + +Setelah Anda memiliki dataset, kita dapat memulai proyek di Azure. + +## 2. Pelatihan model dengan Low code/No code di Azure ML Studio +### 2.1 Membuat workspace Azure ML +Untuk melatih model di Azure ML, Anda perlu membuat workspace Azure ML terlebih dahulu. Workspace adalah sumber daya tingkat atas untuk Azure Machine Learning, menyediakan tempat terpusat untuk bekerja dengan semua artefak yang Anda buat saat menggunakan Azure Machine Learning. Workspace menyimpan riwayat semua pelatihan, termasuk log, metrik, output, dan snapshot skrip Anda. Anda menggunakan informasi ini untuk menentukan pelatihan mana yang menghasilkan model terbaik. [Pelajari lebih lanjut](https://docs.microsoft.com/azure/machine-learning/concept-workspace?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) + +Disarankan untuk menggunakan browser yang paling mutakhir dan kompatibel dengan sistem operasi Anda. Browser berikut didukung: + +- Microsoft Edge (Microsoft Edge baru, versi terbaru. Bukan Microsoft Edge legacy) +- Safari (versi terbaru, hanya Mac) +- Chrome (versi terbaru) +- Firefox (versi terbaru) + +Untuk menggunakan Azure Machine Learning, buat workspace di langganan Azure Anda. Anda kemudian dapat menggunakan workspace ini untuk mengelola data, sumber daya komputasi, kode, model, dan artefak lain yang terkait dengan beban kerja machine learning Anda. + +> **_CATATAN:_** Langganan Azure Anda akan dikenakan biaya kecil untuk penyimpanan data selama workspace Azure Machine Learning ada di langganan Anda, jadi kami menyarankan Anda untuk menghapus workspace Azure Machine Learning saat Anda tidak lagi menggunakannya. + +1. Masuk ke [portal Azure](https://ms.portal.azure.com/) menggunakan kredensial Microsoft yang terkait dengan langganan Azure Anda. +2. Pilih **+Buat sumber daya** + + ![workspace-1](../../../../translated_images/workspace-1.ac8694d60b073ed1ae8333d71244dc8a9b3e439d54593724f98f1beefdd27b08.id.png) + + Cari Machine Learning dan pilih ubin Machine Learning + + ![workspace-2](../../../../translated_images/workspace-2.ae7c486db8796147075e4a56566aa819827dd6c4c8d18d64590317c3be625f17.id.png) + + Klik tombol buat + + ![workspace-3](../../../../translated_images/workspace-3.398ca4a5858132cce584db9df10c5a011cd9075eb182e647a77d5cac01771eea.id.png) + + Isi pengaturan sebagai berikut: + - Langganan: Langganan Azure Anda + - Grup sumber daya: Buat atau pilih grup sumber daya + - Nama workspace: Masukkan nama unik untuk workspace Anda + - Wilayah: Pilih wilayah geografis terdekat dengan Anda + - Akun penyimpanan: Catat akun penyimpanan baru default yang akan dibuat untuk workspace Anda + - Key vault: Catat key vault baru default yang akan dibuat untuk workspace Anda + - Application insights: Catat sumber daya application insights baru default yang akan dibuat untuk workspace Anda + - Container registry: Tidak ada (satu akan dibuat secara otomatis saat pertama kali Anda mendistribusikan model ke container) + + ![workspace-4](../../../../translated_images/workspace-4.bac87f6599c4df63e624fc2608990f965887bee551d9dedc71c687b43b986b6a.id.png) + + - Klik buat + tinjau dan kemudian tombol buat +3. Tunggu hingga workspace Anda dibuat (ini bisa memakan waktu beberapa menit). Kemudian buka di portal. Anda dapat menemukannya melalui layanan Azure Machine Learning. +4. Di halaman Overview untuk workspace Anda, luncurkan Azure Machine Learning studio (atau buka tab browser baru dan navigasikan ke https://ml.azure.com), dan masuk ke Azure Machine Learning studio menggunakan akun Microsoft Anda. Jika diminta, pilih direktori dan langganan Azure Anda, serta workspace Azure Machine Learning Anda. + +![workspace-5](../../../../translated_images/workspace-5.a6eb17e0a5e6420018b08bdaf3755ce977f96f1df3ea363d2476a9dce7e15adb.id.png) + +5. Di Azure Machine Learning studio, alihkan ikon ☰ di kiri atas untuk melihat berbagai halaman dalam antarmuka. Anda dapat menggunakan halaman ini untuk mengelola sumber daya di workspace Anda. + +![workspace-6](../../../../translated_images/workspace-6.8dd81fe841797ee17f8f73916769576260b16c4e17e850d277a49db35fd74a15.id.png) + +Anda dapat mengelola workspace Anda menggunakan portal Azure, tetapi untuk data scientist dan engineer operasi Machine Learning, Azure Machine Learning Studio menyediakan antarmuka pengguna yang lebih terfokus untuk mengelola sumber daya workspace. + +### 2.2 Sumber Daya Komputasi + +Sumber Daya Komputasi adalah sumber daya berbasis cloud yang dapat Anda gunakan untuk menjalankan proses pelatihan model dan eksplorasi data. Ada empat jenis sumber daya komputasi yang dapat Anda buat: + +- **Compute Instances**: Workstation pengembangan yang dapat digunakan data scientist untuk bekerja dengan data dan model. Ini melibatkan pembuatan Virtual Machine (VM) dan meluncurkan instance notebook. Anda kemudian dapat melatih model dengan memanggil cluster komputasi dari notebook. +- **Compute Clusters**: Cluster VM yang dapat diskalakan untuk pemrosesan kode eksperimen sesuai permintaan. Anda akan membutuhkannya saat melatih model. Compute cluster juga dapat menggunakan sumber daya GPU atau CPU khusus. +- **Inference Clusters**: Target deployment untuk layanan prediktif yang menggunakan model yang telah Anda latih. +- **Attached Compute**: Menghubungkan ke sumber daya komputasi Azure yang sudah ada, seperti Virtual Machines atau cluster Azure Databricks. + +#### 2.2.1 Memilih opsi yang tepat untuk sumber daya komputasi Anda + +Beberapa faktor penting perlu dipertimbangkan saat membuat sumber daya komputasi, dan pilihan tersebut bisa menjadi keputusan yang krusial. + +**Apakah Anda membutuhkan CPU atau GPU?** + +CPU (Central Processing Unit) adalah sirkuit elektronik yang menjalankan instruksi dari program komputer. GPU (Graphics Processing Unit) adalah sirkuit elektronik khusus yang dapat menjalankan kode terkait grafis dengan kecepatan sangat tinggi. + +Perbedaan utama antara arsitektur CPU dan GPU adalah bahwa CPU dirancang untuk menangani berbagai tugas dengan cepat (diukur dengan kecepatan clock CPU), tetapi memiliki keterbatasan dalam jumlah tugas yang dapat berjalan secara bersamaan. GPU dirancang untuk komputasi paralel dan jauh lebih baik untuk tugas pembelajaran mendalam. + +| CPU | GPU | +|-----------------------------------------|-----------------------------| +| Lebih murah | Lebih mahal | +| Tingkat konkuren lebih rendah | Tingkat konkuren lebih tinggi | +| Lebih lambat dalam melatih model pembelajaran mendalam | Optimal untuk pembelajaran mendalam | + +**Ukuran Cluster** + +Cluster yang lebih besar lebih mahal tetapi akan memberikan responsivitas yang lebih baik. Oleh karena itu, jika Anda memiliki waktu tetapi anggaran terbatas, Anda sebaiknya memulai dengan cluster kecil. Sebaliknya, jika Anda memiliki anggaran tetapi waktu terbatas, Anda sebaiknya memulai dengan cluster yang lebih besar. + +**Ukuran VM** + +Bergantung pada waktu dan batasan anggaran Anda, Anda dapat mengubah ukuran RAM, disk, jumlah core, dan kecepatan clock. Meningkatkan semua parameter tersebut akan lebih mahal, tetapi akan memberikan kinerja yang lebih baik. + +**Instance Dedicated atau Low-Priority?** + +Instance low-priority berarti dapat terganggu: pada dasarnya, Microsoft Azure dapat mengambil sumber daya tersebut dan mengalihkannya ke tugas lain, sehingga mengganggu pekerjaan. Instance dedicated, atau non-interruptible, berarti pekerjaan tidak akan pernah dihentikan tanpa izin Anda. Ini adalah pertimbangan lain antara waktu dan uang, karena instance yang dapat terganggu lebih murah daripada yang dedicated. + +#### 2.2.2 Membuat cluster komputasi + +Di [Azure ML workspace](https://ml.azure.com/) yang telah kita buat sebelumnya, buka menu compute, dan Anda akan melihat berbagai sumber daya komputasi yang baru saja kita bahas (misalnya compute instances, compute clusters, inference clusters, dan attached compute). Untuk proyek ini, kita akan membutuhkan compute cluster untuk pelatihan model. Di Studio, klik menu "Compute", lalu tab "Compute cluster" dan klik tombol "+ New" untuk membuat compute cluster. + +![22](../../../../translated_images/cluster-1.b78cb630bb543729b11f60c34d97110a263f8c27b516ba4dc47807b3cee5579f.id.png) + +1. Pilih opsi Anda: Dedicated vs Low priority, CPU atau GPU, ukuran VM, dan jumlah core (Anda dapat menggunakan pengaturan default untuk proyek ini). +2. Klik tombol Next. + +![23](../../../../translated_images/cluster-2.ea30cdbc9f926bb9e05af3fdbc1f679811c796dc2a6847f935290aec15526e88.id.png) + +3. Berikan nama untuk cluster komputasi Anda. +4. Pilih opsi Anda: Jumlah minimum/maksimum node, waktu idle sebelum scale down, akses SSH. Perhatikan bahwa jika jumlah minimum node adalah 0, Anda akan menghemat uang saat cluster tidak aktif. Perhatikan bahwa semakin tinggi jumlah maksimum node, semakin singkat waktu pelatihan. Jumlah maksimum node yang direkomendasikan adalah 3. +5. Klik tombol "Create". Langkah ini mungkin memakan waktu beberapa menit. + +![29](../../../../translated_images/cluster-3.8a334bc070ec173a329ce5abd2a9d727542e83eb2347676c9af20f2c8870b3e7.id.png) + +Luar biasa! Sekarang kita memiliki Compute cluster, kita perlu memuat data ke Azure ML Studio. + +### 2.3 Memuat Dataset + +1. Di [Azure ML workspace](https://ml.azure.com/) yang telah kita buat sebelumnya, klik "Datasets" di menu sebelah kiri dan klik tombol "+ Create dataset" untuk membuat dataset. Pilih opsi "From local files" dan pilih dataset Kaggle yang telah kita unduh sebelumnya. + + ![24](../../../../translated_images/dataset-1.e86ab4e10907a6e9c2a72577b51db35f13689cb33702337b8b7032f2ef76dac2.id.png) + +2. Berikan nama, tipe, dan deskripsi untuk dataset Anda. Klik Next. Unggah data dari file. Klik Next. + + ![25](../../../../translated_images/dataset-2.f58de1c435d5bf9ccb16ccc5f5d4380eb2b50affca85cfbf4f97562bdab99f77.id.png) + +3. Di Schema, ubah tipe data menjadi Boolean untuk fitur berikut: anaemia, diabetes, high blood pressure, sex, smoking, dan DEATH_EVENT. Klik Next dan Klik Create. + + ![26](../../../../translated_images/dataset-3.58db8c0eb783e89236a02bbce5bb4ba808d081a87d994d5284b1ae59928c95bf.id.png) + +Hebat! Sekarang dataset sudah siap dan cluster komputasi telah dibuat, kita dapat memulai pelatihan model! + +### 2.4 Pelatihan Low code/No code dengan AutoML + +Pengembangan model pembelajaran mesin tradisional membutuhkan banyak sumber daya, memerlukan pengetahuan domain yang signifikan, dan waktu untuk menghasilkan serta membandingkan puluhan model. +Automated machine learning (AutoML) adalah proses otomatisasi tugas-tugas berulang yang memakan waktu dalam pengembangan model pembelajaran mesin. Ini memungkinkan data scientist, analis, dan pengembang untuk membangun model ML dengan skala besar, efisiensi, dan produktivitas, sambil tetap mempertahankan kualitas model. AutoML mengurangi waktu yang dibutuhkan untuk mendapatkan model ML siap produksi dengan mudah dan efisien. [Pelajari lebih lanjut](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) + +1. Di [Azure ML workspace](https://ml.azure.com/) yang telah kita buat sebelumnya, klik "Automated ML" di menu sebelah kiri dan pilih dataset yang baru saja Anda unggah. Klik Next. + + ![27](../../../../translated_images/aml-1.67281a85d3a1e2f34eb367b2d0f74e1039d13396e510f363cd8766632106d1ec.id.png) + +2. Masukkan nama eksperimen baru, kolom target (DEATH_EVENT), dan cluster komputasi yang telah kita buat. Klik Next. + + ![28](../../../../translated_images/aml-2.c9fb9cffb39ccbbe21ab9810ae937195d41a489744e15cff2b8477ed4dcae1ec.id.png) + +3. Pilih "Classification" dan Klik Finish. Langkah ini mungkin memakan waktu antara 30 menit hingga 1 jam, tergantung pada ukuran cluster komputasi Anda. + + ![30](../../../../translated_images/aml-3.a7952e4295f38cc6cdb0c7ed6dc71ea756b7fb5697ec126bc1220f87c5fa9231.id.png) + +4. Setelah proses selesai, klik tab "Automated ML", klik pada run Anda, dan klik pada Algoritma di kartu "Best model summary". + + ![31](../../../../translated_images/aml-4.7a627e09cb6f16d0aa246059d9faee3d1725cc4258d0c8df15e801f73afc7e2c.id.png) + +Di sini Anda dapat melihat deskripsi rinci tentang model terbaik yang dihasilkan oleh AutoML. Anda juga dapat menjelajahi model lain yang dihasilkan di tab Models. Luangkan beberapa menit untuk menjelajahi model di tombol Explanations (preview). Setelah Anda memilih model yang ingin digunakan (di sini kita akan memilih model terbaik yang dipilih oleh AutoML), kita akan melihat bagaimana cara mendistribusikannya. + +## 3. Distribusi model Low code/No code dan konsumsi endpoint +### 3.1 Distribusi model + +Antarmuka pembelajaran mesin otomatis memungkinkan Anda untuk mendistribusikan model terbaik sebagai layanan web dalam beberapa langkah. Distribusi adalah integrasi model sehingga dapat membuat prediksi berdasarkan data baru dan mengidentifikasi area peluang potensial. Untuk proyek ini, distribusi ke layanan web berarti aplikasi medis akan dapat menggunakan model untuk membuat prediksi langsung tentang risiko pasien terkena serangan jantung. + +Di deskripsi model terbaik, klik tombol "Deploy". + +![deploy-1](../../../../translated_images/deploy-1.ddad725acadc84e34553c3d09e727160faeb32527a9fb8b904c0f99235a34bb6.id.png) + +15. Berikan nama, deskripsi, tipe komputasi (Azure Container Instance), aktifkan autentikasi, dan klik Deploy. Langkah ini mungkin memakan waktu sekitar 20 menit untuk selesai. Proses distribusi mencakup beberapa langkah termasuk mendaftarkan model, menghasilkan sumber daya, dan mengonfigurasinya untuk layanan web. Pesan status muncul di bawah status Deploy. Pilih Refresh secara berkala untuk memeriksa status distribusi. Model telah didistribusikan dan berjalan ketika statusnya "Healthy". + +![deploy-2](../../../../translated_images/deploy-2.94dbb13f239086473aa4bf814342fd40483d136849b080f02bafbb995383940e.id.png) + +16. Setelah didistribusikan, klik tab Endpoint dan klik endpoint yang baru saja Anda distribusikan. Di sini Anda dapat menemukan semua detail yang perlu Anda ketahui tentang endpoint tersebut. + +![deploy-3](../../../../translated_images/deploy-3.fecefef070e8ef3b28e802326d107f61ac4e672d20bf82d05f78d025f9e6c611.id.png) + +Luar biasa! Sekarang kita memiliki model yang didistribusikan, kita dapat mulai mengonsumsi endpoint. + +### 3.2 Konsumsi endpoint + +Klik tab "Consume". Di sini Anda dapat menemukan REST endpoint dan skrip Python di opsi konsumsi. Luangkan waktu untuk membaca kode Python tersebut. + +Skrip ini dapat dijalankan langsung dari mesin lokal Anda dan akan mengonsumsi endpoint Anda. + +![35](../../../../translated_images/consumption-1.700abd196452842a020c7d745908637a6e4c5c50494ad1217be80e283e0de154.id.png) + +Luangkan waktu untuk memeriksa dua baris kode ini: + +```python +url = 'http://98e3715f-xxxx-xxxx-xxxx-9ec22d57b796.centralus.azurecontainer.io/score' +api_key = '' # Replace this with the API key for the web service +``` +Variabel `url` adalah REST endpoint yang ditemukan di tab konsumsi, dan variabel `api_key` adalah kunci utama yang juga ditemukan di tab konsumsi (hanya jika Anda telah mengaktifkan autentikasi). Inilah cara skrip dapat mengonsumsi endpoint. + +18. Saat menjalankan skrip, Anda seharusnya melihat output berikut: + ```python + b'"{\\"result\\": [true]}"' + ``` +Ini berarti prediksi gagal jantung untuk data yang diberikan adalah benar. Ini masuk akal karena jika Anda melihat lebih dekat pada data yang secara otomatis dihasilkan dalam skrip, semuanya berada pada 0 dan false secara default. Anda dapat mengubah data dengan sampel input berikut: + +```python +data = { + "data": + [ + { + 'age': "0", + 'anaemia': "false", + 'creatinine_phosphokinase': "0", + 'diabetes': "false", + 'ejection_fraction': "0", + 'high_blood_pressure': "false", + 'platelets': "0", + 'serum_creatinine': "0", + 'serum_sodium': "0", + 'sex': "false", + 'smoking': "false", + 'time': "0", + }, + { + 'age': "60", + 'anaemia': "false", + 'creatinine_phosphokinase': "500", + 'diabetes': "false", + 'ejection_fraction': "38", + 'high_blood_pressure': "false", + 'platelets': "260000", + 'serum_creatinine': "1.40", + 'serum_sodium': "137", + 'sex': "false", + 'smoking': "false", + 'time': "130", + }, + ], +} +``` +Skrip seharusnya mengembalikan: + ```python + b'"{\\"result\\": [true, false]}"' + ``` + +Selamat! Anda baru saja mengonsumsi model yang didistribusikan dan melatihnya di Azure ML! + +> **_NOTE:_** Setelah Anda selesai dengan proyek, jangan lupa untuk menghapus semua sumber daya. +## 🚀 Tantangan + +Perhatikan dengan seksama penjelasan model dan detail yang dihasilkan AutoML untuk model-model terbaik. Cobalah untuk memahami mengapa model terbaik lebih baik daripada yang lainnya. Algoritma apa yang dibandingkan? Apa perbedaan di antara mereka? Mengapa yang terbaik berkinerja lebih baik dalam kasus ini? + +## [Post-Lecture Quiz](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/35) + +## Review & Studi Mandiri + +Dalam pelajaran ini, Anda belajar cara melatih, mendistribusikan, dan mengonsumsi model untuk memprediksi risiko gagal jantung dengan cara Low code/No code di cloud. Jika Anda belum melakukannya, pelajari lebih dalam penjelasan model yang dihasilkan AutoML untuk model-model terbaik dan cobalah untuk memahami mengapa model terbaik lebih baik daripada yang lainnya. + +Anda dapat melangkah lebih jauh ke AutoML Low code/No code dengan membaca [dokumentasi ini](https://docs.microsoft.com/azure/machine-learning/tutorial-first-experiment-automated-ml?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). + +## Tugas + +[Proyek Data Science Low code/No code di Azure ML](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemah manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/5-Data-Science-In-Cloud/18-Low-Code/assignment.md b/translations/id/5-Data-Science-In-Cloud/18-Low-Code/assignment.md new file mode 100644 index 00000000..1d11f35e --- /dev/null +++ b/translations/id/5-Data-Science-In-Cloud/18-Low-Code/assignment.md @@ -0,0 +1,25 @@ + +# Proyek Data Science Low code/No code di Azure ML + +## Instruksi + +Kita telah melihat bagaimana menggunakan platform Azure ML untuk melatih, menerapkan, dan menggunakan model dengan cara Low code/No code. Sekarang, cari data yang dapat Anda gunakan untuk melatih model lain, menerapkannya, dan menggunakannya. Anda dapat mencari dataset di [Kaggle](https://kaggle.com) dan [Azure Open Datasets](https://azure.microsoft.com/services/open-datasets/catalog?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). + +## Rubrik + +| Unggul | Memadai | Perlu Peningkatan | +|--------|---------|-------------------| +|Saat mengunggah data, Anda memastikan untuk mengubah tipe fitur jika diperlukan. Anda juga membersihkan data jika diperlukan. Anda menjalankan pelatihan pada dataset melalui AutoML, dan Anda memeriksa penjelasan model. Anda menerapkan model terbaik dan berhasil menggunakannya. | Saat mengunggah data, Anda memastikan untuk mengubah tipe fitur jika diperlukan. Anda menjalankan pelatihan pada dataset melalui AutoML, Anda menerapkan model terbaik dan berhasil menggunakannya. | Anda telah menerapkan model terbaik yang dilatih oleh AutoML dan berhasil menggunakannya. | + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemah manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/5-Data-Science-In-Cloud/19-Azure/README.md b/translations/id/5-Data-Science-In-Cloud/19-Azure/README.md new file mode 100644 index 00000000..1d018fa5 --- /dev/null +++ b/translations/id/5-Data-Science-In-Cloud/19-Azure/README.md @@ -0,0 +1,312 @@ + +# Data Science di Cloud: Cara "Azure ML SDK" + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/19-DataScience-Cloud.png)| +|:---:| +| Data Science di Cloud: Azure ML SDK - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +Daftar isi: + +- [Data Science di Cloud: Cara "Azure ML SDK"](../../../../5-Data-Science-In-Cloud/19-Azure) + - [Kuis Pra-Pelajaran](../../../../5-Data-Science-In-Cloud/19-Azure) + - [1. Pendahuluan](../../../../5-Data-Science-In-Cloud/19-Azure) + - [1.1 Apa itu Azure ML SDK?](../../../../5-Data-Science-In-Cloud/19-Azure) + - [1.2 Proyek prediksi gagal jantung dan pengenalan dataset](../../../../5-Data-Science-In-Cloud/19-Azure) + - [2. Melatih model dengan Azure ML SDK](../../../../5-Data-Science-In-Cloud/19-Azure) + - [2.1 Membuat workspace Azure ML](../../../../5-Data-Science-In-Cloud/19-Azure) + - [2.2 Membuat instance komputasi](../../../../5-Data-Science-In-Cloud/19-Azure) + - [2.3 Memuat dataset](../../../../5-Data-Science-In-Cloud/19-Azure) + - [2.4 Membuat Notebook](../../../../5-Data-Science-In-Cloud/19-Azure) + - [2.5 Melatih model](../../../../5-Data-Science-In-Cloud/19-Azure) + - [2.5.1 Menyiapkan Workspace, eksperimen, cluster komputasi, dan dataset](../../../../5-Data-Science-In-Cloud/19-Azure) + - [2.5.2 Konfigurasi AutoML dan pelatihan](../../../../5-Data-Science-In-Cloud/19-Azure) + - [3. Penerapan model dan konsumsi endpoint dengan Azure ML SDK](../../../../5-Data-Science-In-Cloud/19-Azure) + - [3.1 Menyimpan model terbaik](../../../../5-Data-Science-In-Cloud/19-Azure) + - [3.2 Penerapan model](../../../../5-Data-Science-In-Cloud/19-Azure) + - [3.3 Konsumsi endpoint](../../../../5-Data-Science-In-Cloud/19-Azure) + - [🚀 Tantangan](../../../../5-Data-Science-In-Cloud/19-Azure) + - [Kuis Pasca-Pelajaran](../../../../5-Data-Science-In-Cloud/19-Azure) + - [Tinjauan & Studi Mandiri](../../../../5-Data-Science-In-Cloud/19-Azure) + - [Tugas](../../../../5-Data-Science-In-Cloud/19-Azure) + +## [Kuis Pra-Pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/36) + +## 1. Pendahuluan + +### 1.1 Apa itu Azure ML SDK? + +Data scientist dan pengembang AI menggunakan Azure Machine Learning SDK untuk membangun dan menjalankan alur kerja pembelajaran mesin dengan layanan Azure Machine Learning. Anda dapat berinteraksi dengan layanan ini di lingkungan Python mana pun, termasuk Jupyter Notebooks, Visual Studio Code, atau IDE Python favorit Anda. + +Area utama dari SDK meliputi: + +- Mengeksplorasi, mempersiapkan, dan mengelola siklus hidup dataset yang digunakan dalam eksperimen pembelajaran mesin. +- Mengelola sumber daya cloud untuk pemantauan, pencatatan, dan pengorganisasian eksperimen pembelajaran mesin. +- Melatih model baik secara lokal maupun menggunakan sumber daya cloud, termasuk pelatihan model yang dipercepat GPU. +- Menggunakan pembelajaran mesin otomatis, yang menerima parameter konfigurasi dan data pelatihan. Secara otomatis mengiterasi algoritma dan pengaturan hyperparameter untuk menemukan model terbaik untuk menjalankan prediksi. +- Menerapkan layanan web untuk mengubah model yang telah dilatih menjadi layanan RESTful yang dapat dikonsumsi dalam aplikasi apa pun. + +[Pelajari lebih lanjut tentang Azure Machine Learning SDK](https://docs.microsoft.com/python/api/overview/azure/ml?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) + +Dalam [pelajaran sebelumnya](../18-Low-Code/README.md), kita telah melihat cara melatih, menerapkan, dan mengonsumsi model dengan pendekatan Low code/No code. Kita menggunakan dataset Gagal Jantung untuk menghasilkan model prediksi gagal jantung. Dalam pelajaran ini, kita akan melakukan hal yang sama tetapi menggunakan Azure Machine Learning SDK. + +![skema-proyek](../../../../translated_images/project-schema.420e56d495624541eaecf2b737f138c86fb7d8162bb1c0bf8783c350872ffc4d.id.png) + +### 1.2 Proyek prediksi gagal jantung dan pengenalan dataset + +Lihat [di sini](../18-Low-Code/README.md) untuk pengenalan proyek prediksi gagal jantung dan dataset. + +## 2. Melatih model dengan Azure ML SDK +### 2.1 Membuat workspace Azure ML + +Untuk kemudahan, kita akan bekerja di jupyter notebook. Ini berarti Anda sudah memiliki Workspace dan instance komputasi. Jika Anda sudah memiliki Workspace, Anda dapat langsung melompat ke bagian 2.3 Pembuatan Notebook. + +Jika belum, silakan ikuti instruksi di bagian **2.1 Membuat workspace Azure ML** dalam [pelajaran sebelumnya](../18-Low-Code/README.md) untuk membuat workspace. + +### 2.2 Membuat instance komputasi + +Di [workspace Azure ML](https://ml.azure.com/) yang kita buat sebelumnya, buka menu komputasi dan Anda akan melihat berbagai sumber daya komputasi yang tersedia. + +![instance-komputasi-1](../../../../translated_images/compute-instance-1.dba347cb199ca4996b3e3d649295ed95626ba481479d3986557b9b98e76d8816.id.png) + +Mari kita buat instance komputasi untuk menyediakan jupyter notebook. +1. Klik tombol + Baru. +2. Beri nama untuk instance komputasi Anda. +3. Pilih opsi Anda: CPU atau GPU, ukuran VM, dan jumlah inti. +4. Klik tombol Buat. + +Selamat, Anda baru saja membuat instance komputasi! Kita akan menggunakan instance komputasi ini untuk membuat Notebook di bagian [Membuat Notebook](../../../../5-Data-Science-In-Cloud/19-Azure). + +### 2.3 Memuat dataset +Lihat [pelajaran sebelumnya](../18-Low-Code/README.md) di bagian **2.3 Memuat dataset** jika Anda belum mengunggah dataset. + +### 2.4 Membuat Notebook + +> **_CATATAN:_** Untuk langkah berikutnya, Anda dapat membuat notebook baru dari awal, atau Anda dapat mengunggah [notebook yang telah kita buat](notebook.ipynb) ke Azure ML Studio Anda. Untuk mengunggahnya, cukup klik menu "Notebook" dan unggah notebook. + +Notebook adalah bagian yang sangat penting dari proses data science. Notebook dapat digunakan untuk melakukan Analisis Data Eksplorasi (EDA), memanggil cluster komputasi untuk melatih model, atau memanggil cluster inferensi untuk menerapkan endpoint. + +Untuk membuat Notebook, kita memerlukan node komputasi yang menjalankan instance jupyter notebook. Kembali ke [workspace Azure ML](https://ml.azure.com/) dan klik pada Instance komputasi. Dalam daftar instance komputasi, Anda seharusnya melihat [instance komputasi yang kita buat sebelumnya](../../../../5-Data-Science-In-Cloud/19-Azure). + +1. Di bagian Aplikasi, klik opsi Jupyter. +2. Centang kotak "Ya, saya mengerti" dan klik tombol Lanjutkan. +![notebook-1](../../../../translated_images/notebook-1.12998af7b02c83f536c11b3aeba561be16e0f05e94146600728ec64270ce1105.id.png) +3. Ini akan membuka tab browser baru dengan instance jupyter notebook Anda seperti berikut. Klik tombol "Baru" untuk membuat notebook. + +![notebook-2](../../../../translated_images/notebook-2.9a657c037e34f1cf26c0212f5ee9e2da8545b3e107c7682c55114e494167a8aa.id.png) + +Sekarang kita memiliki Notebook, kita dapat mulai melatih model dengan Azure ML SDK. + +### 2.5 Melatih model + +Pertama-tama, jika Anda memiliki keraguan, lihat [dokumentasi Azure ML SDK](https://docs.microsoft.com/python/api/overview/azure/ml?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). Dokumentasi ini berisi semua informasi yang diperlukan untuk memahami modul yang akan kita bahas dalam pelajaran ini. + +#### 2.5.1 Menyiapkan Workspace, eksperimen, cluster komputasi, dan dataset + +Anda perlu memuat `workspace` dari file konfigurasi menggunakan kode berikut: + +```python +from azureml.core import Workspace +ws = Workspace.from_config() +``` + +Ini mengembalikan objek tipe `Workspace` yang mewakili workspace. Kemudian Anda perlu membuat `eksperimen` menggunakan kode berikut: + +```python +from azureml.core import Experiment +experiment_name = 'aml-experiment' +experiment = Experiment(ws, experiment_name) +``` +Untuk mendapatkan atau membuat eksperimen dari workspace, Anda meminta eksperimen menggunakan nama eksperimen. Nama eksperimen harus terdiri dari 3-36 karakter, dimulai dengan huruf atau angka, dan hanya dapat berisi huruf, angka, garis bawah, dan tanda hubung. Jika eksperimen tidak ditemukan di workspace, eksperimen baru akan dibuat. + +Sekarang Anda perlu membuat cluster komputasi untuk pelatihan menggunakan kode berikut. Perhatikan bahwa langkah ini dapat memakan waktu beberapa menit. + +```python +from azureml.core.compute import AmlCompute + +aml_name = "heart-f-cluster" +try: + aml_compute = AmlCompute(ws, aml_name) + print('Found existing AML compute context.') +except: + print('Creating new AML compute context.') + aml_config = AmlCompute.provisioning_configuration(vm_size = "Standard_D2_v2", min_nodes=1, max_nodes=3) + aml_compute = AmlCompute.create(ws, name = aml_name, provisioning_configuration = aml_config) + aml_compute.wait_for_completion(show_output = True) + +cts = ws.compute_targets +compute_target = cts[aml_name] +``` + +Anda dapat mendapatkan dataset dari workspace menggunakan nama dataset dengan cara berikut: + +```python +dataset = ws.datasets['heart-failure-records'] +df = dataset.to_pandas_dataframe() +df.describe() +``` +#### 2.5.2 Konfigurasi AutoML dan pelatihan + +Untuk mengatur konfigurasi AutoML, gunakan [kelas AutoMLConfig](https://docs.microsoft.com/python/api/azureml-train-automl-client/azureml.train.automl.automlconfig(class)?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). + +Seperti yang dijelaskan dalam dokumentasi, ada banyak parameter yang dapat Anda gunakan. Untuk proyek ini, kita akan menggunakan parameter berikut: + +- `experiment_timeout_minutes`: Jumlah waktu maksimum (dalam menit) yang diizinkan untuk eksperimen berjalan sebelum secara otomatis dihentikan dan hasilnya secara otomatis tersedia. +- `max_concurrent_iterations`: Jumlah maksimum iterasi pelatihan bersamaan yang diizinkan untuk eksperimen. +- `primary_metric`: Metrik utama yang digunakan untuk menentukan status eksperimen. +- `compute_target`: Target komputasi Azure Machine Learning untuk menjalankan eksperimen Pembelajaran Mesin Otomatis. +- `task`: Jenis tugas yang akan dijalankan. Nilai dapat berupa 'classification', 'regression', atau 'forecasting' tergantung pada jenis masalah pembelajaran mesin otomatis yang akan diselesaikan. +- `training_data`: Data pelatihan yang akan digunakan dalam eksperimen. Data ini harus berisi fitur pelatihan dan kolom label (opsional kolom bobot sampel). +- `label_column_name`: Nama kolom label. +- `path`: Jalur lengkap ke folder proyek Azure Machine Learning. +- `enable_early_stopping`: Apakah akan mengaktifkan penghentian dini jika skor tidak meningkat dalam jangka pendek. +- `featurization`: Indikator apakah langkah featurisasi harus dilakukan secara otomatis atau tidak, atau apakah featurisasi yang disesuaikan harus digunakan. +- `debug_log`: File log untuk menulis informasi debug. + +```python +from azureml.train.automl import AutoMLConfig + +project_folder = './aml-project' + +automl_settings = { + "experiment_timeout_minutes": 20, + "max_concurrent_iterations": 3, + "primary_metric" : 'AUC_weighted' +} + +automl_config = AutoMLConfig(compute_target=compute_target, + task = "classification", + training_data=dataset, + label_column_name="DEATH_EVENT", + path = project_folder, + enable_early_stopping= True, + featurization= 'auto', + debug_log = "automl_errors.log", + **automl_settings + ) +``` +Sekarang setelah konfigurasi Anda diatur, Anda dapat melatih model menggunakan kode berikut. Langkah ini dapat memakan waktu hingga satu jam tergantung pada ukuran cluster Anda. + +```python +remote_run = experiment.submit(automl_config) +``` +Anda dapat menjalankan widget RunDetails untuk menunjukkan berbagai eksperimen. +```python +from azureml.widgets import RunDetails +RunDetails(remote_run).show() +``` +## 3. Penerapan model dan konsumsi endpoint dengan Azure ML SDK + +### 3.1 Menyimpan model terbaik + +`remote_run` adalah objek tipe [AutoMLRun](https://docs.microsoft.com/python/api/azureml-train-automl-client/azureml.train.automl.run.automlrun?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). Objek ini berisi metode `get_output()` yang mengembalikan run terbaik dan model yang sesuai. + +```python +best_run, fitted_model = remote_run.get_output() +``` +Anda dapat melihat parameter yang digunakan untuk model terbaik dengan mencetak fitted_model dan melihat properti model terbaik dengan menggunakan metode [get_properties()](https://docs.microsoft.com/python/api/azureml-core/azureml.core.run(class)?view=azure-ml-py#azureml_core_Run_get_properties?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). + +```python +best_run.get_properties() +``` + +Sekarang daftarkan model dengan metode [register_model](https://docs.microsoft.com/python/api/azureml-train-automl-client/azureml.train.automl.run.automlrun?view=azure-ml-py#register-model-model-name-none--description-none--tags-none--iteration-none--metric-none-?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). +```python +model_name = best_run.properties['model_name'] +script_file_name = 'inference/score.py' +best_run.download_file('outputs/scoring_file_v_1_0_0.py', 'inference/score.py') +description = "aml heart failure project sdk" +model = best_run.register_model(model_name = model_name, + model_path = './outputs/', + description = description, + tags = None) +``` +### 3.2 Penerapan model + +Setelah model terbaik disimpan, kita dapat menerapkannya dengan kelas [InferenceConfig](https://docs.microsoft.com/python/api/azureml-core/azureml.core.model.inferenceconfig?view=azure-ml-py?ocid=AID3041109). InferenceConfig mewakili pengaturan konfigurasi untuk lingkungan khusus yang digunakan untuk penerapan. Kelas [AciWebservice](https://docs.microsoft.com/python/api/azureml-core/azureml.core.webservice.aciwebservice?view=azure-ml-py) mewakili model pembelajaran mesin yang diterapkan sebagai endpoint layanan web pada Azure Container Instances. Layanan web yang diterapkan dibuat dari model, skrip, dan file terkait. Layanan web yang dihasilkan adalah endpoint HTTP yang seimbang dengan REST API. Anda dapat mengirim data ke API ini dan menerima prediksi yang dikembalikan oleh model. + +Model diterapkan menggunakan metode [deploy](https://docs.microsoft.com/python/api/azureml-core/azureml.core.model(class)?view=azure-ml-py#deploy-workspace--name--models--inference-config-none--deployment-config-none--deployment-target-none--overwrite-false--show-output-false-?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). + +```python +from azureml.core.model import InferenceConfig, Model +from azureml.core.webservice import AciWebservice + +inference_config = InferenceConfig(entry_script=script_file_name, environment=best_run.get_environment()) + +aciconfig = AciWebservice.deploy_configuration(cpu_cores = 1, + memory_gb = 1, + tags = {'type': "automl-heart-failure-prediction"}, + description = 'Sample service for AutoML Heart Failure Prediction') + +aci_service_name = 'automl-hf-sdk' +aci_service = Model.deploy(ws, aci_service_name, [model], inference_config, aciconfig) +aci_service.wait_for_deployment(True) +print(aci_service.state) +``` +Langkah ini akan memakan waktu beberapa menit. + +### 3.3 Konsumsi endpoint + +Anda dapat mengonsumsi endpoint Anda dengan membuat input sampel: + +```python +data = { + "data": + [ + { + 'age': "60", + 'anaemia': "false", + 'creatinine_phosphokinase': "500", + 'diabetes': "false", + 'ejection_fraction': "38", + 'high_blood_pressure': "false", + 'platelets': "260000", + 'serum_creatinine': "1.40", + 'serum_sodium': "137", + 'sex': "false", + 'smoking': "false", + 'time': "130", + }, + ], +} + +test_sample = str.encode(json.dumps(data)) +``` +Dan kemudian Anda dapat mengirimkan input ini ke model Anda untuk prediksi: +```python +response = aci_service.run(input_data=test_sample) +response +``` +Ini akan menghasilkan `'{"result": [false]}'`. Ini berarti bahwa input pasien yang kita kirimkan ke endpoint menghasilkan prediksi `false`, yang berarti orang ini tidak mungkin mengalami serangan jantung. + +Selamat! Anda baru saja menggunakan model yang dideploy dan dilatih di Azure ML dengan Azure ML SDK! + +> **_NOTE:_** Setelah Anda menyelesaikan proyek ini, jangan lupa untuk menghapus semua sumber daya. + +## 🚀 Tantangan + +Ada banyak hal lain yang dapat Anda lakukan melalui SDK, sayangnya, kita tidak dapat membahas semuanya dalam pelajaran ini. Tapi kabar baiknya, belajar cara menjelajahi dokumentasi SDK dapat membantu Anda melangkah jauh secara mandiri. Lihat dokumentasi Azure ML SDK dan temukan kelas `Pipeline` yang memungkinkan Anda membuat pipeline. Pipeline adalah kumpulan langkah-langkah yang dapat dijalankan sebagai alur kerja. + +**PETUNJUK:** Kunjungi [dokumentasi SDK](https://docs.microsoft.com/python/api/overview/azure/ml/?view=azure-ml-py?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) dan ketik kata kunci seperti "Pipeline" di bilah pencarian. Anda seharusnya menemukan kelas `azureml.pipeline.core.Pipeline` dalam hasil pencarian. + +## [Kuis setelah pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/37) + +## Tinjauan & Studi Mandiri + +Dalam pelajaran ini, Anda telah belajar cara melatih, mendeply, dan menggunakan model untuk memprediksi risiko gagal jantung dengan Azure ML SDK di cloud. Periksa [dokumentasi ini](https://docs.microsoft.com/python/api/overview/azure/ml/?view=azure-ml-py?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) untuk informasi lebih lanjut tentang Azure ML SDK. Cobalah untuk membuat model Anda sendiri dengan Azure ML SDK. + +## Tugas + +[Proyek Data Science menggunakan Azure ML SDK](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/5-Data-Science-In-Cloud/19-Azure/assignment.md b/translations/id/5-Data-Science-In-Cloud/19-Azure/assignment.md new file mode 100644 index 00000000..f3e4e2f4 --- /dev/null +++ b/translations/id/5-Data-Science-In-Cloud/19-Azure/assignment.md @@ -0,0 +1,25 @@ + +# Proyek Data Science menggunakan Azure ML SDK + +## Instruksi + +Kita telah melihat bagaimana menggunakan platform Azure ML untuk melatih, menerapkan, dan mengonsumsi model dengan Azure ML SDK. Sekarang, carilah beberapa data yang dapat Anda gunakan untuk melatih model lain, menerapkannya, dan mengonsumsinya. Anda dapat mencari dataset di [Kaggle](https://kaggle.com) dan [Azure Open Datasets](https://azure.microsoft.com/services/open-datasets/catalog?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). + +## Rubrik + +| Unggul | Memadai | Perlu Perbaikan | +|--------|---------|-----------------| +|Saat melakukan Konfigurasi AutoML, Anda menelusuri dokumentasi SDK untuk melihat parameter apa yang dapat digunakan. Anda menjalankan pelatihan pada dataset melalui AutoML menggunakan Azure ML SDK, dan Anda memeriksa penjelasan model. Anda menerapkan model terbaik dan berhasil mengonsumsinya melalui Azure ML SDK. | Anda menjalankan pelatihan pada dataset melalui AutoML menggunakan Azure ML SDK, dan Anda memeriksa penjelasan model. Anda menerapkan model terbaik dan berhasil mengonsumsinya melalui Azure ML SDK. | Anda menjalankan pelatihan pada dataset melalui AutoML menggunakan Azure ML SDK. Anda menerapkan model terbaik dan berhasil mengonsumsinya melalui Azure ML SDK. | + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/5-Data-Science-In-Cloud/README.md b/translations/id/5-Data-Science-In-Cloud/README.md new file mode 100644 index 00000000..d5856a2b --- /dev/null +++ b/translations/id/5-Data-Science-In-Cloud/README.md @@ -0,0 +1,35 @@ + +# Data Science di Cloud + +![cloud-picture](../../../translated_images/cloud-picture.f5526de3c6c6387b2d656ba94f019b3352e5e3854a78440e4fb00c93e2dea675.id.jpg) + +> Foto oleh [Jelleke Vanooteghem](https://unsplash.com/@ilumire) dari [Unsplash](https://unsplash.com/s/photos/cloud?orientation=landscape) + +Ketika berbicara tentang data science dengan data besar, cloud bisa menjadi pengubah permainan. Dalam tiga pelajaran berikutnya, kita akan melihat apa itu cloud dan mengapa ini bisa sangat membantu. Kita juga akan mengeksplorasi dataset gagal jantung dan membangun model untuk membantu menilai kemungkinan seseorang mengalami gagal jantung. Kita akan menggunakan kekuatan cloud untuk melatih, menerapkan, dan menggunakan model dengan dua cara berbeda. Satu cara menggunakan antarmuka pengguna dalam pendekatan Low code/No code, dan cara lainnya menggunakan Azure Machine Learning Software Developer Kit (Azure ML SDK). + +![project-schema](../../../translated_images/project-schema.420e56d495624541eaecf2b737f138c86fb7d8162bb1c0bf8783c350872ffc4d.id.png) + +### Topik + +1. [Mengapa menggunakan Cloud untuk Data Science?](17-Introduction/README.md) +2. [Data Science di Cloud: Cara "Low code/No code"](18-Low-Code/README.md) +3. [Data Science di Cloud: Cara "Azure ML SDK"](19-Azure/README.md) + +### Kredit +Pelajaran ini ditulis dengan ☁️ dan 💕 oleh [Maud Levy](https://twitter.com/maudstweets) dan [Tiffany Souterre](https://twitter.com/TiffanySouterre) + +Data untuk proyek Prediksi Gagal Jantung bersumber dari [ +Larxel](https://www.kaggle.com/andrewmvd) di [Kaggle](https://www.kaggle.com/andrewmvd/heart-failure-clinical-data). Data ini dilisensikan di bawah [Attribution 4.0 International (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diingat bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/6-Data-Science-In-Wild/20-Real-World-Examples/README.md b/translations/id/6-Data-Science-In-Wild/20-Real-World-Examples/README.md new file mode 100644 index 00000000..40bcce07 --- /dev/null +++ b/translations/id/6-Data-Science-In-Wild/20-Real-World-Examples/README.md @@ -0,0 +1,155 @@ + +# Ilmu Data di Dunia Nyata + +| ![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-RealWorld.png) | +| :--------------------------------------------------------------------------------------------------------------: | +| Ilmu Data di Dunia Nyata - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +Kita hampir sampai di akhir perjalanan pembelajaran ini! + +Kita mulai dengan definisi ilmu data dan etika, mengeksplorasi berbagai alat & teknik untuk analisis dan visualisasi data, meninjau siklus hidup ilmu data, dan melihat bagaimana cara memperbesar dan mengotomatisasi alur kerja ilmu data dengan layanan komputasi awan. Jadi, Anda mungkin bertanya-tanya: _"Bagaimana tepatnya saya memetakan semua pembelajaran ini ke dalam konteks dunia nyata?"_ + +Dalam pelajaran ini, kita akan mengeksplorasi aplikasi ilmu data di dunia nyata di berbagai industri dan menyelami contoh spesifik dalam konteks penelitian, humaniora digital, dan keberlanjutan. Kita juga akan melihat peluang proyek mahasiswa dan menyimpulkan dengan sumber daya yang berguna untuk membantu Anda melanjutkan perjalanan pembelajaran Anda! + +## Kuis Pra-Kuliah + +[Kuis pra-kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/38) + +## Ilmu Data + Industri + +Berkat demokratisasi AI, pengembang kini lebih mudah merancang dan mengintegrasikan pengambilan keputusan berbasis AI dan wawasan berbasis data ke dalam pengalaman pengguna dan alur kerja pengembangan. Berikut adalah beberapa contoh bagaimana ilmu data "diterapkan" dalam aplikasi dunia nyata di berbagai industri: + + * [Google Flu Trends](https://www.wired.com/2015/10/can-learn-epic-failure-google-flu-trends/) menggunakan ilmu data untuk menghubungkan istilah pencarian dengan tren flu. Meskipun pendekatan ini memiliki kekurangan, hal ini meningkatkan kesadaran akan kemungkinan (dan tantangan) prediksi kesehatan berbasis data. + + * [Prediksi Rute UPS](https://www.technologyreview.com/2018/11/21/139000/how-ups-uses-ai-to-outsmart-bad-weather/) - menjelaskan bagaimana UPS menggunakan ilmu data dan pembelajaran mesin untuk memprediksi rute optimal untuk pengiriman, dengan mempertimbangkan kondisi cuaca, pola lalu lintas, tenggat waktu pengiriman, dan lainnya. + + * [Visualisasi Rute Taksi NYC](http://chriswhong.github.io/nyctaxi/) - data yang dikumpulkan menggunakan [Freedom Of Information Laws](https://chriswhong.com/open-data/foil_nyc_taxi/) membantu memvisualisasikan satu hari dalam kehidupan taksi NYC, membantu kita memahami bagaimana mereka menavigasi kota yang sibuk, pendapatan yang mereka hasilkan, dan durasi perjalanan selama periode 24 jam. + + * [Uber Data Science Workbench](https://eng.uber.com/dsw/) - menggunakan data (lokasi penjemputan & pengantaran, durasi perjalanan, rute yang disukai, dll.) yang dikumpulkan dari jutaan perjalanan Uber *setiap hari* untuk membangun alat analitik data yang membantu dalam penetapan harga, keselamatan, deteksi penipuan, dan keputusan navigasi. + + * [Analitik Olahraga](https://towardsdatascience.com/scope-of-analytics-in-sports-world-37ed09c39860) - berfokus pada _analitik prediktif_ (analisis tim dan pemain - seperti [Moneyball](https://datasciencedegree.wisconsin.edu/blog/moneyball-proves-importance-big-data-big-ideas/) - dan manajemen penggemar) dan _visualisasi data_ (dasbor tim & penggemar, permainan, dll.) dengan aplikasi seperti pencarian bakat, perjudian olahraga, dan manajemen inventaris/venue. + + * [Ilmu Data di Perbankan](https://data-flair.training/blogs/data-science-in-banking/) - menyoroti nilai ilmu data di industri keuangan dengan aplikasi mulai dari pemodelan risiko dan deteksi penipuan, hingga segmentasi pelanggan, prediksi waktu nyata, dan sistem rekomendasi. Analitik prediktif juga mendorong langkah-langkah penting seperti [skor kredit](https://dzone.com/articles/using-big-data-and-predictive-analytics-for-credit). + + * [Ilmu Data di Kesehatan](https://data-flair.training/blogs/data-science-in-healthcare/) - menyoroti aplikasi seperti pencitraan medis (misalnya, MRI, X-Ray, CT-Scan), genomik (pengurutan DNA), pengembangan obat (penilaian risiko, prediksi keberhasilan), analitik prediktif (perawatan pasien & logistik pasokan), pelacakan & pencegahan penyakit, dll. + +![Aplikasi Ilmu Data di Dunia Nyata](../../../../translated_images/data-science-applications.4e5019cd8790ebac2277ff5f08af386f8727cac5d30f77727c7090677e6adb9c.id.png) Kredit Gambar: [Data Flair: 6 Amazing Data Science Applications ](https://data-flair.training/blogs/data-science-applications/) + +Gambar ini menunjukkan domain lain dan contoh penerapan teknik ilmu data. Ingin mengeksplorasi aplikasi lainnya? Lihat bagian [Review & Self Study](../../../../6-Data-Science-In-Wild/20-Real-World-Examples) di bawah ini. + +## Ilmu Data + Penelitian + +| ![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-Research.png) | +| :---------------------------------------------------------------------------------------------------------------: | +| Ilmu Data & Penelitian - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +Sementara aplikasi dunia nyata sering kali berfokus pada kasus penggunaan industri dalam skala besar, aplikasi dan proyek _penelitian_ dapat berguna dari dua perspektif: + +* _peluang inovasi_ - mengeksplorasi prototipe cepat dari konsep lanjutan dan pengujian pengalaman pengguna untuk aplikasi generasi berikutnya. +* _tantangan penerapan_ - menyelidiki potensi bahaya atau konsekuensi yang tidak diinginkan dari teknologi ilmu data dalam konteks dunia nyata. + +Bagi mahasiswa, proyek penelitian ini dapat memberikan peluang pembelajaran dan kolaborasi yang dapat meningkatkan pemahaman Anda tentang topik tersebut, serta memperluas kesadaran dan keterlibatan Anda dengan orang atau tim yang relevan yang bekerja di bidang minat Anda. Jadi, seperti apa proyek penelitian itu dan bagaimana mereka dapat memberikan dampak? + +Mari kita lihat satu contoh - [MIT Gender Shades Study](http://gendershades.org/overview.html) dari Joy Buolamwini (MIT Media Labs) dengan [makalah penelitian utama](http://proceedings.mlr.press/v81/buolamwini18a/buolamwini18a.pdf) yang ditulis bersama Timnit Gebru (saat itu di Microsoft Research) yang berfokus pada: + + * **Apa:** Tujuan dari proyek penelitian ini adalah untuk _mengevaluasi bias yang ada dalam algoritma dan dataset analisis wajah otomatis_ berdasarkan jenis kelamin dan warna kulit. + * **Mengapa:** Analisis wajah digunakan di area seperti penegakan hukum, keamanan bandara, sistem perekrutan, dan lainnya - konteks di mana klasifikasi yang tidak akurat (misalnya, karena bias) dapat menyebabkan potensi kerugian ekonomi dan sosial bagi individu atau kelompok yang terkena dampak. Memahami (dan menghilangkan atau mengurangi) bias adalah kunci untuk keadilan dalam penggunaan. + * **Bagaimana:** Peneliti menyadari bahwa tolok ukur yang ada sebagian besar menggunakan subjek berkulit terang, dan mengkurasi dataset baru (1000+ gambar) yang _lebih seimbang_ berdasarkan jenis kelamin dan warna kulit. Dataset ini digunakan untuk mengevaluasi akurasi tiga produk klasifikasi gender (dari Microsoft, IBM & Face++). + +Hasil menunjukkan bahwa meskipun akurasi klasifikasi secara keseluruhan baik, terdapat perbedaan yang mencolok dalam tingkat kesalahan antara berbagai subkelompok - dengan **kesalahan pengenalan gender** lebih tinggi untuk perempuan atau orang dengan warna kulit lebih gelap, yang menunjukkan adanya bias. + +**Hasil Utama:** Meningkatkan kesadaran bahwa ilmu data membutuhkan _dataset yang lebih representatif_ (subkelompok yang seimbang) dan _tim yang lebih inklusif_ (latar belakang yang beragam) untuk mengenali dan menghilangkan atau mengurangi bias seperti itu lebih awal dalam solusi AI. Upaya penelitian seperti ini juga berperan penting dalam banyak organisasi dalam mendefinisikan prinsip dan praktik untuk _AI yang bertanggung jawab_ guna meningkatkan keadilan di seluruh produk dan proses AI mereka. + +**Ingin mempelajari upaya penelitian yang relevan di Microsoft?** + +* Lihat [Proyek Penelitian Microsoft](https://www.microsoft.com/research/research-area/artificial-intelligence/?facet%5Btax%5D%5Bmsr-research-area%5D%5B%5D=13556&facet%5Btax%5D%5Bmsr-content-type%5D%5B%5D=msr-project) tentang Kecerdasan Buatan. +* Jelajahi proyek mahasiswa dari [Microsoft Research Data Science Summer School](https://www.microsoft.com/en-us/research/academic-program/data-science-summer-school/). +* Lihat proyek [Fairlearn](https://fairlearn.org/) dan inisiatif [Responsible AI](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1%3aprimaryr6). + +## Ilmu Data + Humaniora + +| ![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-Humanities.png) | +| :---------------------------------------------------------------------------------------------------------------: | +| Ilmu Data & Humaniora Digital - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +Humaniora Digital [didefinisikan](https://digitalhumanities.stanford.edu/about-dh-stanford) sebagai "sebuah kumpulan praktik dan pendekatan yang menggabungkan metode komputasi dengan penyelidikan humanistik". Proyek-proyek [Stanford](https://digitalhumanities.stanford.edu/projects) seperti _"rebooting history"_ dan _"poetic thinking"_ menggambarkan hubungan antara [Humaniora Digital dan Ilmu Data](https://digitalhumanities.stanford.edu/digital-humanities-and-data-science) - menekankan teknik seperti analisis jaringan, visualisasi informasi, analisis spasial dan teks yang dapat membantu kita meninjau kembali dataset sejarah dan sastra untuk mendapatkan wawasan dan perspektif baru. + +*Ingin mengeksplorasi dan memperluas proyek di bidang ini?* + +Lihat ["Emily Dickinson and the Meter of Mood"](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671) - contoh hebat dari [Jen Looper](https://twitter.com/jenlooper) yang bertanya bagaimana kita dapat menggunakan ilmu data untuk meninjau kembali puisi yang sudah dikenal dan mengevaluasi ulang maknanya serta kontribusi penulisnya dalam konteks baru. Misalnya, _bisakah kita memprediksi musim di mana sebuah puisi ditulis dengan menganalisis nada atau sentimennya_ - dan apa yang hal ini katakan tentang keadaan pikiran penulis selama periode tersebut? + +Untuk menjawab pertanyaan itu, kita mengikuti langkah-langkah siklus hidup ilmu data: + * [`Akuisisi Data`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#acquiring-the-dataset) - untuk mengumpulkan dataset yang relevan untuk analisis. Pilihan termasuk menggunakan API (misalnya, [Poetry DB API](https://poetrydb.org/index.html)) atau mengikis halaman web (misalnya, [Project Gutenberg](https://www.gutenberg.org/files/12242/12242-h/12242-h.htm)) menggunakan alat seperti [Scrapy](https://scrapy.org/). + * [`Pembersihan Data`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#clean-the-data) - menjelaskan bagaimana teks dapat diformat, disanitasi, dan disederhanakan menggunakan alat dasar seperti Visual Studio Code dan Microsoft Excel. + * [`Analisis Data`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#working-with-the-data-in-a-notebook) - menjelaskan bagaimana kita sekarang dapat mengimpor dataset ke dalam "Notebooks" untuk analisis menggunakan paket Python (seperti pandas, numpy, dan matplotlib) untuk mengorganisasi dan memvisualisasikan data. + * [`Analisis Sentimen`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#sentiment-analysis-using-cognitive-services) - menjelaskan bagaimana kita dapat mengintegrasikan layanan cloud seperti Text Analytics, menggunakan alat low-code seperti [Power Automate](https://flow.microsoft.com/en-us/) untuk alur kerja pemrosesan data otomatis. + +Dengan menggunakan alur kerja ini, kita dapat mengeksplorasi dampak musiman pada sentimen puisi, dan membantu kita membentuk perspektif kita sendiri tentang penulisnya. Cobalah sendiri - lalu perluas notebook untuk mengajukan pertanyaan lain atau memvisualisasikan data dengan cara baru! + +> Anda dapat menggunakan beberapa alat dalam [Digital Humanities toolkit](https://github.com/Digital-Humanities-Toolkit) untuk mengejar jalur penyelidikan ini. + +## Ilmu Data + Keberlanjutan + +| ![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-Sustainability.png) | +| :---------------------------------------------------------------------------------------------------------------: | +| Ilmu Data & Keberlanjutan - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +[Agenda 2030 untuk Pembangunan Berkelanjutan](https://sdgs.un.org/2030agenda) - yang diadopsi oleh semua anggota Perserikatan Bangsa-Bangsa pada tahun 2015 - mengidentifikasi 17 tujuan termasuk yang berfokus pada **Melindungi Planet** dari degradasi dan dampak perubahan iklim. Inisiatif [Microsoft Sustainability](https://www.microsoft.com/en-us/sustainability) mendukung tujuan-tujuan ini dengan mengeksplorasi cara-cara di mana solusi teknologi dapat mendukung dan membangun masa depan yang lebih berkelanjutan dengan [fokus pada 4 tujuan](https://dev.to/azure/a-visual-guide-to-sustainable-software-engineering-53hh) - menjadi karbon negatif, air positif, nol limbah, dan bio-diverse pada tahun 2030. + +Mengatasi tantangan ini secara skala besar dan tepat waktu membutuhkan pemikiran skala cloud - dan data dalam skala besar. Inisiatif [Planetary Computer](https://planetarycomputer.microsoft.com/) menyediakan 4 komponen untuk membantu ilmuwan data dan pengembang dalam upaya ini: + + * [Katalog Data](https://planetarycomputer.microsoft.com/catalog) - dengan petabyte data Sistem Bumi (gratis & di-host di Azure). + * [Planetary API](https://planetarycomputer.microsoft.com/docs/reference/stac/) - untuk membantu pengguna mencari data yang relevan di seluruh ruang dan waktu. + * [Hub](https://planetarycomputer.microsoft.com/docs/overview/environment/) - lingkungan terkelola untuk ilmuwan memproses dataset geospasial besar. + * [Aplikasi](https://planetarycomputer.microsoft.com/applications) - menampilkan kasus penggunaan & alat untuk wawasan keberlanjutan. +**Proyek Planetary Computer saat ini dalam tahap pratinjau (per September 2021)** - berikut cara Anda dapat mulai berkontribusi pada solusi keberlanjutan menggunakan ilmu data. + +* [Ajukan akses](https://planetarycomputer.microsoft.com/account/request) untuk memulai eksplorasi dan terhubung dengan rekan-rekan. +* [Jelajahi dokumentasi](https://planetarycomputer.microsoft.com/docs/overview/about) untuk memahami dataset dan API yang didukung. +* Jelajahi aplikasi seperti [Ecosystem Monitoring](https://analytics-lab.org/ecosystemmonitoring/) untuk mendapatkan inspirasi ide aplikasi. + +Pikirkan bagaimana Anda dapat menggunakan visualisasi data untuk mengungkap atau memperkuat wawasan yang relevan dalam bidang seperti perubahan iklim dan deforestasi. Atau pikirkan bagaimana wawasan tersebut dapat digunakan untuk menciptakan pengalaman pengguna baru yang memotivasi perubahan perilaku menuju gaya hidup yang lebih berkelanjutan. + +## Ilmu Data + Mahasiswa + +Kita telah membahas aplikasi dunia nyata di industri dan penelitian, serta mengeksplorasi contoh aplikasi ilmu data dalam humaniora digital dan keberlanjutan. Jadi, bagaimana Anda dapat membangun keterampilan dan berbagi keahlian Anda sebagai pemula dalam ilmu data? + +Berikut beberapa contoh proyek mahasiswa ilmu data untuk menginspirasi Anda. + + * [MSR Data Science Summer School](https://www.microsoft.com/en-us/research/academic-program/data-science-summer-school/#!projects) dengan [proyek GitHub](https://github.com/msr-ds3) yang mengeksplorasi topik seperti: + - [Bias Rasial dalam Penggunaan Kekerasan oleh Polisi](https://www.microsoft.com/en-us/research/video/data-science-summer-school-2019-replicating-an-empirical-analysis-of-racial-differences-in-police-use-of-force/) | [Github](https://github.com/msr-ds3/stop-question-frisk) + - [Keandalan Sistem Kereta Bawah Tanah NYC](https://www.microsoft.com/en-us/research/video/data-science-summer-school-2018-exploring-the-reliability-of-the-nyc-subway-system/) | [Github](https://github.com/msr-ds3/nyctransit) + * [Digitalisasi Budaya Material: Mengeksplorasi distribusi sosial-ekonomi di Sirkap](https://claremont.maps.arcgis.com/apps/Cascade/index.html?appid=bdf2aef0f45a4674ba41cd373fa23afc) - dari [Ornella Altunyan](https://twitter.com/ornelladotcom) dan tim di Claremont, menggunakan [ArcGIS StoryMaps](https://storymaps.arcgis.com/). + +## 🚀 Tantangan + +Cari artikel yang merekomendasikan proyek ilmu data yang ramah pemula - seperti [50 topik ini](https://www.upgrad.com/blog/data-science-project-ideas-topics-beginners/) atau [21 ide proyek ini](https://www.intellspot.com/data-science-project-ideas) atau [16 proyek ini dengan kode sumber](https://data-flair.training/blogs/data-science-project-ideas/) yang dapat Anda analisis dan modifikasi. Jangan lupa untuk menulis blog tentang perjalanan belajar Anda dan bagikan wawasan Anda kepada kami semua. + +## Kuis Pasca-Kuliah + +[Kuis pasca-kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/39) + +## Tinjauan & Studi Mandiri + +Ingin mengeksplorasi lebih banyak kasus penggunaan? Berikut beberapa artikel yang relevan: + * [17 Aplikasi dan Contoh Ilmu Data](https://builtin.com/data-science/data-science-applications-examples) - Jul 2021 + * [11 Aplikasi Ilmu Data yang Menakjubkan di Dunia Nyata](https://myblindbird.com/data-science-applications-real-world/) - Mei 2021 + * [Ilmu Data di Dunia Nyata](https://towardsdatascience.com/data-science-in-the-real-world/home) - Koleksi Artikel + * Ilmu Data Dalam: [Pendidikan](https://data-flair.training/blogs/data-science-in-education/), [Pertanian](https://data-flair.training/blogs/data-science-in-agriculture/), [Keuangan](https://data-flair.training/blogs/data-science-in-finance/), [Film](https://data-flair.training/blogs/data-science-at-movies/) & lainnya. + +## Tugas + +[Eksplorasi Dataset Planetary Computer](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diingat bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/6-Data-Science-In-Wild/20-Real-World-Examples/assignment.md b/translations/id/6-Data-Science-In-Wild/20-Real-World-Examples/assignment.md new file mode 100644 index 00000000..e5a5a843 --- /dev/null +++ b/translations/id/6-Data-Science-In-Wild/20-Real-World-Examples/assignment.md @@ -0,0 +1,50 @@ + +# Jelajahi Dataset Planetary Computer + +## Instruksi + +Dalam pelajaran ini, kita membahas berbagai domain aplikasi ilmu data - dengan penjelasan mendalam tentang contoh-contoh terkait penelitian, keberlanjutan, dan humaniora digital. Dalam tugas ini, Anda akan mengeksplorasi salah satu contoh tersebut secara lebih mendalam, dan menerapkan beberapa pembelajaran Anda tentang visualisasi dan analisis data untuk mendapatkan wawasan tentang data keberlanjutan. + +Proyek [Planetary Computer](https://planetarycomputer.microsoft.com/) memiliki dataset dan API yang dapat diakses dengan akun - ajukan permintaan untuk mendapatkan akses jika Anda ingin mencoba langkah bonus dari tugas ini. Situs ini juga menyediakan fitur [Explorer](https://planetarycomputer.microsoft.com/explore) yang dapat Anda gunakan tanpa membuat akun. + +`Langkah-langkah:` +Antarmuka Explorer (ditampilkan dalam tangkapan layar di bawah) memungkinkan Anda memilih dataset (dari opsi yang tersedia), kueri preset (untuk memfilter data), dan opsi rendering (untuk membuat visualisasi yang relevan). Dalam tugas ini, tugas Anda adalah: + + 1. Baca [dokumentasi Explorer](https://planetarycomputer.microsoft.com/docs/overview/explorer/) - pahami opsinya. + 2. Jelajahi [Katalog dataset](https://planetarycomputer.microsoft.com/catalog) - pelajari tujuan masing-masing. + 3. Gunakan Explorer - pilih dataset yang menarik, pilih kueri dan opsi rendering yang relevan. + +![The Planetary Computer Explorer](../../../../translated_images/planetary-computer-explorer.c1e95a9b053167d64e2e8e4347cfb689e47e2037c33103fc1bbea1a149d4f85b.id.png) + +`Tugas Anda:` +Sekarang pelajari visualisasi yang ditampilkan di browser dan jawab pertanyaan berikut: + * Apa _fitur_ yang dimiliki dataset tersebut? + * Apa _wawasan_ atau hasil yang diberikan oleh visualisasi tersebut? + * Apa _implikasi_ dari wawasan tersebut terhadap tujuan keberlanjutan proyek? + * Apa _keterbatasan_ dari visualisasi tersebut (yaitu, wawasan apa yang tidak Anda dapatkan)? + * Jika Anda bisa mendapatkan data mentah, _visualisasi alternatif_ apa yang akan Anda buat, dan mengapa? + +`Poin Bonus:` +Ajukan permohonan akun - dan masuk setelah diterima. + * Gunakan opsi _Launch Hub_ untuk membuka data mentah di Notebook. + * Jelajahi data secara interaktif, dan terapkan visualisasi alternatif yang Anda pikirkan. + * Sekarang analisis visualisasi kustom Anda - apakah Anda berhasil mendapatkan wawasan yang sebelumnya terlewatkan? + +## Rubrik + +Unggul | Memadai | Perlu Perbaikan +--- | --- | -- | +Kelima pertanyaan inti dijawab. Mahasiswa dengan jelas mengidentifikasi bagaimana visualisasi saat ini dan alternatif dapat memberikan wawasan tentang tujuan atau hasil keberlanjutan.| Mahasiswa menjawab setidaknya 3 pertanyaan teratas dengan sangat rinci, menunjukkan bahwa mereka memiliki pengalaman praktis dengan Explorer. | Mahasiswa gagal menjawab beberapa pertanyaan, atau memberikan detail yang tidak memadai - menunjukkan bahwa tidak ada upaya yang berarti untuk menyelesaikan proyek | + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diingat bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/6-Data-Science-In-Wild/README.md b/translations/id/6-Data-Science-In-Wild/README.md new file mode 100644 index 00000000..f2088039 --- /dev/null +++ b/translations/id/6-Data-Science-In-Wild/README.md @@ -0,0 +1,25 @@ + +# Data Science di Dunia Nyata + +Penerapan ilmu data di berbagai industri. + +### Topik + +1. [Data Science di Dunia Nyata](20-Real-World-Examples/README.md) + +### Kredit + +Ditulis dengan ❤️ oleh [Nitya Narasimhan](https://twitter.com/nitya) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/CODE_OF_CONDUCT.md b/translations/id/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..3b1b3bd2 --- /dev/null +++ b/translations/id/CODE_OF_CONDUCT.md @@ -0,0 +1,23 @@ + +# Kode Etik Sumber Terbuka Microsoft + +Proyek ini telah mengadopsi [Kode Etik Sumber Terbuka Microsoft](https://opensource.microsoft.com/codeofconduct/). + +Sumber daya: + +- [Kode Etik Sumber Terbuka Microsoft](https://opensource.microsoft.com/codeofconduct/) +- [FAQ Kode Etik Microsoft](https://opensource.microsoft.com/codeofconduct/faq/) +- Hubungi [opencode@microsoft.com](mailto:opencode@microsoft.com) untuk pertanyaan atau kekhawatiran + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/CONTRIBUTING.md b/translations/id/CONTRIBUTING.md new file mode 100644 index 00000000..028883af --- /dev/null +++ b/translations/id/CONTRIBUTING.md @@ -0,0 +1,28 @@ + +# Berkontribusi + +Proyek ini menyambut kontribusi dan saran. Sebagian besar kontribusi mengharuskan Anda +menyetujui Perjanjian Lisensi Kontributor (CLA) yang menyatakan bahwa Anda memiliki hak untuk, +dan benar-benar memberikan kami hak untuk menggunakan kontribusi Anda. Untuk detailnya, kunjungi +https://cla.microsoft.com. + +Saat Anda mengirimkan pull request, CLA-bot akan secara otomatis menentukan apakah Anda perlu +menyediakan CLA dan menghias PR dengan tepat (misalnya, label, komentar). Cukup ikuti +instruksi yang diberikan oleh bot. Anda hanya perlu melakukan ini sekali di semua repositori yang menggunakan CLA kami. + +Proyek ini telah mengadopsi [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). +Untuk informasi lebih lanjut, lihat [FAQ Kode Etik](https://opensource.microsoft.com/codeofconduct/faq/) +atau hubungi [opencode@microsoft.com](mailto:opencode@microsoft.com) untuk pertanyaan atau komentar tambahan. + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/README.md b/translations/id/README.md new file mode 100644 index 00000000..05f66de3 --- /dev/null +++ b/translations/id/README.md @@ -0,0 +1,156 @@ + +# Data Science untuk Pemula - Sebuah Kurikulum + +Azure Cloud Advocates di Microsoft dengan senang hati menawarkan kurikulum 10 minggu, 20 pelajaran tentang Data Science. Setiap pelajaran mencakup kuis sebelum dan sesudah pelajaran, instruksi tertulis untuk menyelesaikan pelajaran, solusi, dan tugas. Pendekatan berbasis proyek kami memungkinkan Anda belajar sambil membangun, cara yang terbukti efektif untuk membuat keterampilan baru lebih melekat. + +**Terima kasih banyak kepada para penulis kami:** [Jasmine Greenaway](https://www.twitter.com/paladique), [Dmitry Soshnikov](http://soshnikov.com), [Nitya Narasimhan](https://twitter.com/nitya), [Jalen McGee](https://twitter.com/JalenMcG), [Jen Looper](https://twitter.com/jenlooper), [Maud Levy](https://twitter.com/maudstweets), [Tiffany Souterre](https://twitter.com/TiffanySouterre), [Christopher Harrison](https://www.twitter.com/geektrainer). + +**🙏 Terima kasih khusus 🙏 kepada [Microsoft Student Ambassador](https://studentambassadors.microsoft.com/) penulis, peninjau, dan kontributor konten kami,** terutama Aaryan Arora, [Aditya Garg](https://github.com/AdityaGarg00), [Alondra Sanchez](https://www.linkedin.com/in/alondra-sanchez-molina/), [Ankita Singh](https://www.linkedin.com/in/ankitasingh007), [Anupam Mishra](https://www.linkedin.com/in/anupam--mishra/), [Arpita Das](https://www.linkedin.com/in/arpitadas01/), ChhailBihari Dubey, [Dibri Nsofor](https://www.linkedin.com/in/dibrinsofor), [Dishita Bhasin](https://www.linkedin.com/in/dishita-bhasin-7065281bb), [Majd Safi](https://www.linkedin.com/in/majd-s/), [Max Blum](https://www.linkedin.com/in/max-blum-6036a1186/), [Miguel Correa](https://www.linkedin.com/in/miguelmque/), [Mohamma Iftekher (Iftu) Ebne Jalal](https://twitter.com/iftu119), [Nawrin Tabassum](https://www.linkedin.com/in/nawrin-tabassum), [Raymond Wangsa Putra](https://www.linkedin.com/in/raymond-wp/), [Rohit Yadav](https://www.linkedin.com/in/rty2423), Samridhi Sharma, [Sanya Sinha](https://www.linkedin.com/mwlite/in/sanya-sinha-13aab1200), [Sheena Narula](https://www.linkedin.com/in/sheena-narua-n/), [Tauqeer Ahmad](https://www.linkedin.com/in/tauqeerahmad5201/), Yogendrasingh Pawar, [Vidushi Gupta](https://www.linkedin.com/in/vidushi-gupta07/), [Jasleen Sondhi](https://www.linkedin.com/in/jasleen-sondhi/) + +|![Sketchnote oleh @sketchthedocs https://sketchthedocs.dev](../../translated_images/00-Title.8af36cd35da1ac555b678627fbdc6e320c75f0100876ea41d30ea205d3b08d22.id.png)| +|:---:| +| Data Science untuk Pemula - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +### 🌐 Dukungan Multi-Bahasa + +#### Didukung melalui GitHub Action (Otomatis & Selalu Terbaru) + +[French](../fr/README.md) | [Spanish](../es/README.md) | [German](../de/README.md) | [Russian](../ru/README.md) | [Arabic](../ar/README.md) | [Persian (Farsi)](../fa/README.md) | [Urdu](../ur/README.md) | [Chinese (Simplified)](../zh/README.md) | [Chinese (Traditional, Macau)](../mo/README.md) | [Chinese (Traditional, Hong Kong)](../hk/README.md) | [Chinese (Traditional, Taiwan)](../tw/README.md) | [Japanese](../ja/README.md) | [Korean](../ko/README.md) | [Hindi](../hi/README.md) | [Bengali](../bn/README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Portuguese (Portugal)](../pt/README.md) | [Portuguese (Brazil)](../br/README.md) | [Italian](../it/README.md) | [Polish](../pl/README.md) | [Turkish](../tr/README.md) | [Greek](../el/README.md) | [Thai](../th/README.md) | [Swedish](../sv/README.md) | [Danish](../da/README.md) | [Norwegian](../no/README.md) | [Finnish](../fi/README.md) | [Dutch](../nl/README.md) | [Hebrew](../he/README.md) | [Vietnamese](../vi/README.md) | [Indonesian](./README.md) | [Malay](../ms/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Swahili](../sw/README.md) | [Hungarian](../hu/README.md) | [Czech](../cs/README.md) | [Slovak](../sk/README.md) | [Romanian](../ro/README.md) | [Bulgarian](../bg/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Croatian](../hr/README.md) | [Slovenian](../sl/README.md) | [Ukrainian](../uk/README.md) | [Burmese (Myanmar)](../my/README.md) + +**Jika Anda ingin menambahkan dukungan bahasa tambahan, daftar bahasa yang didukung tersedia [di sini](https://github.com/Azure/co-op-translator/blob/main/getting_started/supported-languages.md)** + +#### Bergabunglah dengan Komunitas Kami +[![Azure AI Discord](https://dcbadge.limes.pink/api/server/kzRShWzttr)](https://discord.gg/kzRShWzttr) + +# Apakah Anda seorang pelajar? + +Mulailah dengan sumber daya berikut: + +- [Halaman Student Hub](https://docs.microsoft.com/en-gb/learn/student-hub?WT.mc_id=academic-77958-bethanycheum) Di halaman ini, Anda akan menemukan sumber daya untuk pemula, paket pelajar, dan bahkan cara mendapatkan voucher sertifikasi gratis. Ini adalah halaman yang ingin Anda tandai dan periksa dari waktu ke waktu karena kami mengganti konten setidaknya setiap bulan. +- [Microsoft Learn Student Ambassadors](https://studentambassadors.microsoft.com?WT.mc_id=academic-77958-bethanycheum) Bergabunglah dengan komunitas global duta pelajar, ini bisa menjadi jalan Anda menuju Microsoft. + +# Memulai + +> **Guru**: kami telah [menyertakan beberapa saran](for-teachers.md) tentang cara menggunakan kurikulum ini. Kami akan senang mendengar umpan balik Anda [di forum diskusi kami](https://github.com/microsoft/Data-Science-For-Beginners/discussions)! + +> **[Pelajar](https://aka.ms/student-page)**: untuk menggunakan kurikulum ini secara mandiri, fork seluruh repositori dan selesaikan latihan secara mandiri, dimulai dengan kuis sebelum pelajaran. Kemudian baca materi pelajaran dan selesaikan aktivitas lainnya. Cobalah untuk membuat proyek dengan memahami pelajaran daripada menyalin kode solusi; namun, kode tersebut tersedia di folder /solutions di setiap pelajaran berbasis proyek. Ide lainnya adalah membentuk kelompok belajar dengan teman-teman dan mempelajari konten bersama. Untuk studi lebih lanjut, kami merekomendasikan [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/qprpajyoy3x0g7?WT.mc_id=academic-77958-bethanycheum). + +## Kenali Tim + +[![Video promo](../../ds-for-beginners.gif)](https://youtu.be/8mzavjQSMM4 "Video promo") + +**Gif oleh** [Mohit Jaisal](https://www.linkedin.com/in/mohitjaisal) + +> 🎥 Klik gambar di atas untuk video tentang proyek dan orang-orang yang membuatnya! + +## Pedagogi + +Kami telah memilih dua prinsip pedagogi saat membangun kurikulum ini: memastikan bahwa kurikulum ini berbasis proyek dan mencakup kuis yang sering. Pada akhir seri ini, pelajar akan mempelajari prinsip-prinsip dasar data science, termasuk konsep etika, persiapan data, berbagai cara bekerja dengan data, visualisasi data, analisis data, kasus penggunaan nyata data science, dan lainnya. + +Selain itu, kuis dengan risiko rendah sebelum kelas menetapkan niat pelajar untuk mempelajari topik tertentu, sementara kuis kedua setelah kelas memastikan retensi lebih lanjut. Kurikulum ini dirancang agar fleksibel dan menyenangkan serta dapat diambil secara keseluruhan atau sebagian. Proyek dimulai dari yang kecil dan menjadi semakin kompleks pada akhir siklus 10 minggu. +> Temukan [Kode Etik](CODE_OF_CONDUCT.md), [Panduan Berkontribusi](CONTRIBUTING.md), [Panduan Terjemahan](TRANSLATIONS.md). Kami menyambut masukan konstruktif Anda! +## Setiap pelajaran mencakup: + +- Sketchnote opsional +- Video tambahan opsional +- Kuis pemanasan sebelum pelajaran +- Pelajaran tertulis +- Untuk pelajaran berbasis proyek, panduan langkah demi langkah tentang cara membangun proyek +- Pemeriksaan pengetahuan +- Tantangan +- Bacaan tambahan +- Tugas +- [Kuis setelah pelajaran](https://ff-quizzes.netlify.app/en/) + +> **Catatan tentang kuis**: Semua kuis terdapat dalam folder Quiz-App, dengan total 40 kuis masing-masing terdiri dari tiga pertanyaan. Kuis ini terhubung dari dalam pelajaran, tetapi aplikasi kuis dapat dijalankan secara lokal atau di-deploy ke Azure; ikuti instruksi di folder `quiz-app`. Kuis ini secara bertahap sedang dilokalkan. + +## Pelajaran + + +|![ Sketchnote oleh @sketchthedocs https://sketchthedocs.dev](../../translated_images/00-Roadmap.4905d6567dff47532b9bfb8e0b8980fc6b0b1292eebb24181c1a9753b33bc0f5.id.png)| +|:---:| +| Data Science Untuk Pemula: Roadmap - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + + +| Nomor Pelajaran | Topik | Pengelompokan Pelajaran | Tujuan Pembelajaran | Pelajaran Tertaut | Penulis | +| :-----------: | :----------------------------------------: | :--------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------: | :----: | +| 01 | Mendefinisikan Data Science | [Pendahuluan](1-Introduction/README.md) | Mempelajari konsep dasar di balik data science dan hubungannya dengan kecerdasan buatan, pembelajaran mesin, dan big data. | [pelajaran](1-Introduction/01-defining-data-science/README.md) [video](https://youtu.be/beZ7Mb_oz9I) | [Dmitry](http://soshnikov.com) | +| 02 | Etika Data Science | [Pendahuluan](1-Introduction/README.md) | Konsep, tantangan, dan kerangka kerja etika data. | [pelajaran](1-Introduction/02-ethics/README.md) | [Nitya](https://twitter.com/nitya) | +| 03 | Mendefinisikan Data | [Pendahuluan](1-Introduction/README.md) | Bagaimana data diklasifikasikan dan sumber-sumber umumnya. | [pelajaran](1-Introduction/03-defining-data/README.md) | [Jasmine](https://www.twitter.com/paladique) | +| 04 | Pengantar Statistik & Probabilitas | [Pendahuluan](1-Introduction/README.md) | Teknik matematika probabilitas dan statistik untuk memahami data. | [pelajaran](1-Introduction/04-stats-and-probability/README.md) [video](https://youtu.be/Z5Zy85g4Yjw) | [Dmitry](http://soshnikov.com) | +| 05 | Bekerja dengan Data Relasional | [Bekerja Dengan Data](2-Working-With-Data/README.md) | Pengantar data relasional dan dasar-dasar eksplorasi serta analisis data relasional dengan Structured Query Language, yang juga dikenal sebagai SQL (diucapkan “see-quell”). | [pelajaran](2-Working-With-Data/05-relational-databases/README.md) | [Christopher](https://www.twitter.com/geektrainer) | | | +| 06 | Bekerja dengan Data NoSQL | [Bekerja Dengan Data](2-Working-With-Data/README.md) | Pengantar data non-relasional, berbagai jenisnya, dan dasar-dasar eksplorasi serta analisis basis data dokumen. | [pelajaran](2-Working-With-Data/06-non-relational/README.md) | [Jasmine](https://twitter.com/paladique)| +| 07 | Bekerja dengan Python | [Bekerja Dengan Data](2-Working-With-Data/README.md) | Dasar-dasar menggunakan Python untuk eksplorasi data dengan pustaka seperti Pandas. Pemahaman dasar tentang pemrograman Python direkomendasikan. | [pelajaran](2-Working-With-Data/07-python/README.md) [video](https://youtu.be/dZjWOGbsN4Y) | [Dmitry](http://soshnikov.com) | +| 08 | Persiapan Data | [Bekerja Dengan Data](2-Working-With-Data/README.md) | Topik tentang teknik data untuk membersihkan dan mentransformasi data guna menangani tantangan data yang hilang, tidak akurat, atau tidak lengkap. | [pelajaran](2-Working-With-Data/08-data-preparation/README.md) | [Jasmine](https://www.twitter.com/paladique) | +| 09 | Memvisualisasikan Kuantitas | [Visualisasi Data](3-Data-Visualization/README.md) | Mempelajari cara menggunakan Matplotlib untuk memvisualisasikan data burung 🦆 | [pelajaran](3-Data-Visualization/09-visualization-quantities/README.md) | [Jen](https://twitter.com/jenlooper) | +| 10 | Memvisualisasikan Distribusi Data | [Visualisasi Data](3-Data-Visualization/README.md) | Memvisualisasikan pengamatan dan tren dalam interval. | [pelajaran](3-Data-Visualization/10-visualization-distributions/README.md) | [Jen](https://twitter.com/jenlooper) | +| 11 | Memvisualisasikan Proporsi | [Visualisasi Data](3-Data-Visualization/README.md) | Memvisualisasikan persentase diskrit dan terkelompok. | [pelajaran](3-Data-Visualization/11-visualization-proportions/README.md) | [Jen](https://twitter.com/jenlooper) | +| 12 | Memvisualisasikan Hubungan | [Visualisasi Data](3-Data-Visualization/README.md) | Memvisualisasikan koneksi dan korelasi antara kumpulan data dan variabelnya. | [pelajaran](3-Data-Visualization/12-visualization-relationships/README.md) | [Jen](https://twitter.com/jenlooper) | +| 13 | Visualisasi yang Bermakna | [Visualisasi Data](3-Data-Visualization/README.md) | Teknik dan panduan untuk membuat visualisasi Anda berharga untuk pemecahan masalah dan wawasan yang efektif. | [pelajaran](3-Data-Visualization/13-meaningful-visualizations/README.md) | [Jen](https://twitter.com/jenlooper) | +| 14 | Pengantar Siklus Hidup Data Science | [Siklus Hidup](4-Data-Science-Lifecycle/README.md) | Pengantar siklus hidup data science dan langkah pertama dalam memperoleh serta mengekstraksi data. | [pelajaran](4-Data-Science-Lifecycle/14-Introduction/README.md) | [Jasmine](https://twitter.com/paladique) | +| 15 | Menganalisis | [Siklus Hidup](4-Data-Science-Lifecycle/README.md) | Fase siklus hidup data science ini berfokus pada teknik untuk menganalisis data. | [pelajaran](4-Data-Science-Lifecycle/15-analyzing/README.md) | [Jasmine](https://twitter.com/paladique) | | | +| 16 | Komunikasi | [Siklus Hidup](4-Data-Science-Lifecycle/README.md) | Fase siklus hidup data science ini berfokus pada penyajian wawasan dari data dengan cara yang memudahkan pengambil keputusan untuk memahaminya. | [pelajaran](4-Data-Science-Lifecycle/16-communication/README.md) | [Jalen](https://twitter.com/JalenMcG) | | | +| 17 | Data Science di Cloud | [Data Cloud](5-Data-Science-In-Cloud/README.md) | Seri pelajaran ini memperkenalkan data science di cloud dan manfaatnya. | [pelajaran](5-Data-Science-In-Cloud/17-Introduction/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) dan [Maud](https://twitter.com/maudstweets) | +| 18 | Data Science di Cloud | [Data Cloud](5-Data-Science-In-Cloud/README.md) | Melatih model menggunakan alat Low Code. |[pelajaran](5-Data-Science-In-Cloud/18-Low-Code/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) dan [Maud](https://twitter.com/maudstweets) | +| 19 | Data Science di Cloud | [Data Cloud](5-Data-Science-In-Cloud/README.md) | Mendeploy model dengan Azure Machine Learning Studio. | [pelajaran](5-Data-Science-In-Cloud/19-Azure/README.md)| [Tiffany](https://twitter.com/TiffanySouterre) dan [Maud](https://twitter.com/maudstweets) | +| 20 | Data Science di Dunia Nyata | [Di Dunia Nyata](6-Data-Science-In-Wild/README.md) | Proyek berbasis data science di dunia nyata. | [pelajaran](6-Data-Science-In-Wild/20-Real-World-Examples/README.md) | [Nitya](https://twitter.com/nitya) | + +## GitHub Codespaces + +Ikuti langkah-langkah ini untuk membuka contoh ini di Codespace: +1. Klik menu drop-down Code dan pilih opsi Open with Codespaces. +2. Pilih + New codespace di bagian bawah panel. +Untuk informasi lebih lanjut, lihat [dokumentasi GitHub](https://docs.github.com/en/codespaces/developing-in-codespaces/creating-a-codespace-for-a-repository#creating-a-codespace). + +## VSCode Remote - Containers +Ikuti langkah-langkah ini untuk membuka repo ini dalam container menggunakan mesin lokal Anda dan VSCode dengan ekstensi VS Code Remote - Containers: + +1. Jika ini adalah pertama kalinya Anda menggunakan container pengembangan, pastikan sistem Anda memenuhi prasyarat (misalnya, memiliki Docker terinstal) dalam [dokumentasi memulai](https://code.visualstudio.com/docs/devcontainers/containers#_getting-started). + +Untuk menggunakan repositori ini, Anda dapat membukanya dalam volume Docker yang terisolasi: + +**Catatan**: Di balik layar, ini akan menggunakan perintah Remote-Containers: **Clone Repository in Container Volume...** untuk mengkloning kode sumber dalam volume Docker alih-alih sistem file lokal. [Volumes](https://docs.docker.com/storage/volumes/) adalah mekanisme yang disukai untuk menyimpan data container. + +Atau buka versi repositori yang telah diklon atau diunduh secara lokal: + +- Klon repositori ini ke sistem file lokal Anda. +- Tekan F1 dan pilih perintah **Remote-Containers: Open Folder in Container...**. +- Pilih salinan folder yang telah diklon, tunggu hingga container dimulai, dan coba berbagai hal. + +## Akses Offline + +Anda dapat menjalankan dokumentasi ini secara offline dengan menggunakan [Docsify](https://docsify.js.org/#/). Fork repo ini, [instal Docsify](https://docsify.js.org/#/quickstart) di mesin lokal Anda, lalu di folder root repo ini, ketik `docsify serve`. Situs web akan disajikan di port 3000 di localhost Anda: `localhost:3000`. + +> Catatan, notebook tidak akan dirender melalui Docsify, jadi ketika Anda perlu menjalankan notebook, lakukan itu secara terpisah di VS Code dengan kernel Python. + +## Kurikulum Lainnya + +Tim kami menghasilkan kurikulum lainnya! Lihat: + +- [Generative AI untuk Pemula](https://aka.ms/genai-beginners) +- [Generative AI untuk Pemula .NET](https://github.com/microsoft/Generative-AI-for-beginners-dotnet) +- [Generative AI dengan JavaScript](https://github.com/microsoft/generative-ai-with-javascript) +- [Generative AI dengan Java](https://aka.ms/genaijava) +- [AI untuk Pemula](https://aka.ms/ai-beginners) +- [Data Science untuk Pemula](https://aka.ms/datascience-beginners) +- [ML untuk Pemula](https://aka.ms/ml-beginners) +- [Keamanan Siber untuk Pemula](https://github.com/microsoft/Security-101) +- [Pengembangan Web untuk Pemula](https://aka.ms/webdev-beginners) +- [IoT untuk Pemula](https://aka.ms/iot-beginners) +- [Pengembangan XR untuk Pemula](https://github.com/microsoft/xr-development-for-beginners) +- [Menguasai GitHub Copilot untuk Pemrograman Berpasangan](https://github.com/microsoft/Mastering-GitHub-Copilot-for-Paired-Programming) +- [Menguasai GitHub Copilot untuk Pengembang C#/.NET](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers) +- [Pilih Petualangan Copilot Anda Sendiri](https://github.com/microsoft/CopilotAdventures) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau interpretasi yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/SECURITY.md b/translations/id/SECURITY.md new file mode 100644 index 00000000..7445ff6c --- /dev/null +++ b/translations/id/SECURITY.md @@ -0,0 +1,51 @@ + +## Keamanan + +Microsoft sangat memperhatikan keamanan produk dan layanan perangkat lunaknya, termasuk semua repositori kode sumber yang dikelola melalui organisasi GitHub kami, seperti [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), dan [organisasi GitHub kami lainnya](https://opensource.microsoft.com/). + +Jika Anda yakin telah menemukan kerentanan keamanan di salah satu repositori milik Microsoft yang sesuai dengan [definisi kerentanan keamanan Microsoft](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc751383(v=technet.10)), harap laporkan kepada kami seperti yang dijelaskan di bawah ini. + +## Melaporkan Masalah Keamanan + +**Harap jangan melaporkan kerentanan keamanan melalui isu publik di GitHub.** + +Sebaliknya, laporkan melalui Microsoft Security Response Center (MSRC) di [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report). + +Jika Anda lebih memilih untuk mengirimkan laporan tanpa masuk, kirim email ke [secure@microsoft.com](mailto:secure@microsoft.com). Jika memungkinkan, enkripsi pesan Anda dengan kunci PGP kami; unduh kunci tersebut dari [halaman Kunci PGP Microsoft Security Response Center](https://www.microsoft.com/en-us/msrc/pgp-key-msrc). + +Anda seharusnya menerima respons dalam waktu 24 jam. Jika karena alasan tertentu Anda tidak menerima respons, harap tindak lanjuti melalui email untuk memastikan kami menerima pesan asli Anda. Informasi tambahan dapat ditemukan di [microsoft.com/msrc](https://www.microsoft.com/msrc). + +Harap sertakan informasi yang diminta di bawah ini (sebanyak yang dapat Anda berikan) untuk membantu kami memahami sifat dan cakupan masalah yang mungkin terjadi: + + * Jenis masalah (misalnya buffer overflow, SQL injection, cross-site scripting, dll.) + * Jalur lengkap file sumber yang terkait dengan manifestasi masalah + * Lokasi kode sumber yang terpengaruh (tag/cabang/commit atau URL langsung) + * Konfigurasi khusus yang diperlukan untuk mereproduksi masalah + * Instruksi langkah demi langkah untuk mereproduksi masalah + * Bukti konsep atau kode eksploitasi (jika memungkinkan) + * Dampak masalah, termasuk bagaimana penyerang dapat mengeksploitasi masalah tersebut + +Informasi ini akan membantu kami memproses laporan Anda dengan lebih cepat. + +Jika Anda melaporkan untuk program bug bounty, laporan yang lebih lengkap dapat berkontribusi pada penghargaan bounty yang lebih tinggi. Silakan kunjungi halaman [Program Bug Bounty Microsoft](https://microsoft.com/msrc/bounty) untuk informasi lebih lanjut tentang program aktif kami. + +## Bahasa yang Disukai + +Kami lebih memilih semua komunikasi dilakukan dalam bahasa Inggris. + +## Kebijakan + +Microsoft mengikuti prinsip [Pengungkapan Kerentanan yang Terkoordinasi](https://www.microsoft.com/en-us/msrc/cvd). + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/SUPPORT.md b/translations/id/SUPPORT.md new file mode 100644 index 00000000..e79e8bb1 --- /dev/null +++ b/translations/id/SUPPORT.md @@ -0,0 +1,24 @@ + +# Dukungan +## Cara melaporkan masalah dan mendapatkan bantuan + +Proyek ini menggunakan GitHub Issues untuk melacak bug dan permintaan fitur. Harap cari masalah yang sudah ada sebelum melaporkan masalah baru untuk menghindari duplikasi. Untuk masalah baru, laporkan bug atau permintaan fitur Anda sebagai Issue baru. + +Untuk bantuan dan pertanyaan tentang penggunaan proyek ini, buatlah sebuah Issue. + +## Kebijakan Dukungan Microsoft + +Dukungan untuk repositori ini terbatas pada sumber daya yang tercantum di atas. + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diingat bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/docs/_sidebar.md b/translations/id/docs/_sidebar.md new file mode 100644 index 00000000..0ad5f437 --- /dev/null +++ b/translations/id/docs/_sidebar.md @@ -0,0 +1,40 @@ + +- Pendahuluan + - [Mendefinisikan Data Science](../1-Introduction/01-defining-data-science/README.md) + - [Etika Data Science](../1-Introduction/02-ethics/README.md) + - [Mendefinisikan Data](../1-Introduction/03-defining-data/README.md) + - [Probabilitas dan Statistik](../1-Introduction/04-stats-and-probability/README.md) +- Bekerja Dengan Data + - [Basis Data Relasional](../2-Working-With-Data/05-relational-databases/README.md) + - [Basis Data Nonrelasional](../2-Working-With-Data/06-non-relational/README.md) + - [Python](../2-Working-With-Data/07-python/README.md) + - [Persiapan Data](../2-Working-With-Data/08-data-preparation/README.md) +- Visualisasi Data + - [Memvisualisasikan Kuantitas](../3-Data-Visualization/09-visualization-quantities/README.md) + - [Memvisualisasikan Distribusi](../3-Data-Visualization/10-visualization-distributions/README.md) + - [Memvisualisasikan Proporsi](../3-Data-Visualization/11-visualization-proportions/README.md) + - [Memvisualisasikan Hubungan](../3-Data-Visualization/12-visualization-relationships/README.md) + - [Visualisasi yang Bermakna](../3-Data-Visualization/13-meaningful-visualizations/README.md) +- Siklus Hidup Data Science + - [Pendahuluan](../4-Data-Science-Lifecycle/14-Introduction/README.md) + - [Analisis](../4-Data-Science-Lifecycle/15-analyzing/README.md) + - [Komunikasi](../4-Data-Science-Lifecycle/16-communication/README.md) +- Data Science di Cloud + - [Pendahuluan](../5-Data-Science-In-Cloud/17-Introduction/README.md) + - [Low Code](../5-Data-Science-In-Cloud/18-Low-Code/README.md) + - [Azure](../5-Data-Science-In-Cloud/19-Azure/README.md) +- Data Science di Dunia Nyata + - [DS di Dunia Nyata](../6-Data-Science-In-Wild/README.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau interpretasi yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/for-teachers.md b/translations/id/for-teachers.md new file mode 100644 index 00000000..db517167 --- /dev/null +++ b/translations/id/for-teachers.md @@ -0,0 +1,78 @@ + +## Untuk Pendidik + +Apakah Anda ingin menggunakan kurikulum ini di kelas Anda? Silakan saja! + +Faktanya, Anda dapat menggunakannya langsung di GitHub dengan menggunakan GitHub Classroom. + +Untuk melakukannya, fork repo ini. Anda akan perlu membuat repo untuk setiap pelajaran, jadi Anda harus memisahkan setiap folder ke dalam repo yang terpisah. Dengan cara ini, [GitHub Classroom](https://classroom.github.com/classrooms) dapat mengambil setiap pelajaran secara terpisah. + +[Instruksi lengkap ini](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) akan memberikan gambaran tentang cara mengatur kelas Anda. + +## Menggunakan repo seperti apa adanya + +Jika Anda ingin menggunakan repo ini dalam bentuknya saat ini, tanpa menggunakan GitHub Classroom, itu juga bisa dilakukan. Anda hanya perlu berkomunikasi dengan siswa Anda tentang pelajaran mana yang akan dipelajari bersama. + +Dalam format online (Zoom, Teams, atau lainnya), Anda dapat membentuk breakout room untuk kuis, dan membimbing siswa agar siap belajar. Kemudian undang siswa untuk mengikuti kuis dan mengirimkan jawaban mereka sebagai 'issues' pada waktu tertentu. Anda juga dapat melakukan hal yang sama dengan tugas, jika Anda ingin siswa bekerja secara kolaboratif secara terbuka. + +Jika Anda lebih suka format yang lebih privat, mintalah siswa Anda untuk fork kurikulum ini, pelajaran demi pelajaran, ke repo GitHub mereka sendiri sebagai repo privat, dan berikan akses kepada Anda. Kemudian mereka dapat menyelesaikan kuis dan tugas secara privat dan mengirimkannya kepada Anda melalui issues di repo kelas Anda. + +Ada banyak cara untuk membuat ini berhasil dalam format kelas online. Beri tahu kami apa yang paling cocok untuk Anda! + +## Termasuk dalam kurikulum ini: + +20 pelajaran, 40 kuis, dan 20 tugas. Sketchnotes menyertai pelajaran untuk pembelajar visual. Banyak pelajaran tersedia dalam Python dan R dan dapat diselesaikan menggunakan Jupyter notebooks di VS Code. Pelajari lebih lanjut tentang cara mengatur kelas Anda untuk menggunakan teknologi ini: https://code.visualstudio.com/docs/datascience/jupyter-notebooks. + +Semua sketchnotes, termasuk poster berformat besar, ada di [folder ini](../../sketchnotes). + +Seluruh kurikulum tersedia [dalam bentuk PDF](../../pdf/readme.pdf). + +Anda juga dapat menjalankan kurikulum ini sebagai situs web mandiri yang ramah offline dengan menggunakan [Docsify](https://docsify.js.org/#/). [Instal Docsify](https://docsify.js.org/#/quickstart) di mesin lokal Anda, lalu di folder root salinan lokal repo ini, ketik `docsify serve`. Situs web akan disajikan di port 3000 di localhost Anda: `localhost:3000`. + +Versi kurikulum yang ramah offline akan terbuka sebagai halaman web mandiri: https://localhost:3000 + +Pelajaran dikelompokkan ke dalam 6 bagian: + +- 1: Pengantar + - 1: Mendefinisikan Ilmu Data + - 2: Etika + - 3: Mendefinisikan Data + - 4: Gambaran Umum Probabilitas dan Statistik +- 2: Bekerja dengan Data + - 5: Basis Data Relasional + - 6: Basis Data Non-Relasional + - 7: Python + - 8: Persiapan Data +- 3: Visualisasi Data + - 9: Visualisasi Kuantitas + - 10: Visualisasi Distribusi + - 11: Visualisasi Proporsi + - 12: Visualisasi Hubungan + - 13: Visualisasi yang Bermakna +- 4: Siklus Hidup Ilmu Data + - 14: Pengantar + - 15: Analisis + - 16: Komunikasi +- 5: Ilmu Data di Cloud + - 17: Pengantar + - 18: Opsi Low-Code + - 19: Azure +- 6: Ilmu Data di Dunia Nyata + - 20: Gambaran Umum + +## Berikan pendapat Anda kepada kami! + +Kami ingin membuat kurikulum ini bekerja untuk Anda dan siswa Anda. Berikan kami masukan di papan diskusi! Jangan ragu untuk membuat area kelas di papan diskusi untuk siswa Anda. + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/quiz-app/README.md b/translations/id/quiz-app/README.md new file mode 100644 index 00000000..6a81683f --- /dev/null +++ b/translations/id/quiz-app/README.md @@ -0,0 +1,139 @@ + +# Kuis + +Kuis-kuis ini adalah kuis sebelum dan sesudah pelajaran untuk kurikulum data science di https://aka.ms/datascience-beginners + +## Menambahkan Set Kuis Terjemahan + +Tambahkan terjemahan kuis dengan membuat struktur kuis yang sesuai di folder `assets/translations`. Kuis asli berada di `assets/translations/en`. Kuis-kuis ini dibagi menjadi beberapa kelompok. Pastikan untuk menyelaraskan penomoran dengan bagian kuis yang sesuai. Total ada 40 kuis dalam kurikulum ini, dengan penomoran dimulai dari 0. + +Setelah mengedit terjemahan, edit file `index.js` di folder terjemahan untuk mengimpor semua file sesuai dengan konvensi di `en`. + +Edit file `index.js` di `assets/translations` untuk mengimpor file terjemahan baru. + +Kemudian, edit dropdown di `App.vue` dalam aplikasi ini untuk menambahkan bahasa Anda. Cocokkan singkatan lokal dengan nama folder untuk bahasa Anda. + +Terakhir, edit semua tautan kuis di pelajaran yang diterjemahkan, jika ada, untuk menyertakan lokalisasi ini sebagai parameter kueri: `?loc=fr` misalnya. + +## Pengaturan Proyek + +``` +npm install +``` + +### Kompilasi dan pemuatan ulang otomatis untuk pengembangan + +``` +npm run serve +``` + +### Kompilasi dan minifikasi untuk produksi + +``` +npm run build +``` + +### Linting dan perbaikan file + +``` +npm run lint +``` + +### Kustomisasi konfigurasi + +Lihat [Referensi Konfigurasi](https://cli.vuejs.org/config/). + +Kredit: Terima kasih kepada versi asli dari aplikasi kuis ini: https://github.com/arpan45/simple-quiz-vue + +## Mendeploy ke Azure + +Berikut adalah panduan langkah demi langkah untuk membantu Anda memulai: + +1. Fork Repositori GitHub +Pastikan kode aplikasi web statis Anda ada di repositori GitHub Anda. Fork repositori ini. + +2. Buat Azure Static Web App +- Buat akun [Azure](http://azure.microsoft.com) +- Buka [portal Azure](https://portal.azure.com) +- Klik “Create a resource” dan cari “Static Web App”. +- Klik “Create”. + +3. Konfigurasi Static Web App +- **Dasar**: + - Subscription: Pilih langganan Azure Anda. + - Resource Group: Buat grup sumber daya baru atau gunakan yang sudah ada. + - Name: Berikan nama untuk aplikasi web statis Anda. + - Region: Pilih wilayah yang paling dekat dengan pengguna Anda. + +- **Detail Deployment**: + - Source: Pilih “GitHub”. + - GitHub Account: Berikan otorisasi kepada Azure untuk mengakses akun GitHub Anda. + - Organization: Pilih organisasi GitHub Anda. + - Repository: Pilih repositori yang berisi aplikasi web statis Anda. + - Branch: Pilih cabang yang ingin Anda deploy. + +- **Detail Build**: + - Build Presets: Pilih framework yang digunakan aplikasi Anda (misalnya, React, Angular, Vue, dll.). + - App Location: Tentukan folder yang berisi kode aplikasi Anda (misalnya, / jika berada di root). + - API Location: Jika Anda memiliki API, tentukan lokasinya (opsional). + - Output Location: Tentukan folder tempat output build dihasilkan (misalnya, build atau dist). + +4. Tinjau dan Buat +Tinjau pengaturan Anda dan klik “Create”. Azure akan menyiapkan sumber daya yang diperlukan dan membuat workflow GitHub Actions di repositori Anda. + +5. Workflow GitHub Actions +Azure secara otomatis akan membuat file workflow GitHub Actions di repositori Anda (.github/workflows/azure-static-web-apps-.yml). Workflow ini akan menangani proses build dan deployment. + +6. Pantau Deployment +Buka tab “Actions” di repositori GitHub Anda. +Anda akan melihat workflow yang sedang berjalan. Workflow ini akan membangun dan mendeploy aplikasi web statis Anda ke Azure. +Setelah workflow selesai, aplikasi Anda akan aktif di URL Azure yang disediakan. + +### Contoh File Workflow + +Berikut adalah contoh file workflow GitHub Actions: +name: Azure Static Web Apps CI/CD +``` +on: + push: + branches: + - main + pull_request: + types: [opened, synchronize, reopened, closed] + branches: + - main + +jobs: + build_and_deploy_job: + runs-on: ubuntu-latest + name: Build and Deploy Job + steps: + - uses: actions/checkout@v2 + - name: Build And Deploy + id: builddeploy + uses: Azure/static-web-apps-deploy@v1 + with: + azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }} + repo_token: ${{ secrets.GITHUB_TOKEN }} + action: "upload" + app_location: "quiz-app" # App source code path + api_location: ""API source code path optional + output_location: "dist" #Built app content directory - optional +``` + +### Sumber Daya Tambahan +- [Dokumentasi Azure Static Web Apps](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [Dokumentasi GitHub Actions](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diingat bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/id/sketchnotes/README.md b/translations/id/sketchnotes/README.md new file mode 100644 index 00000000..074e9ba1 --- /dev/null +++ b/translations/id/sketchnotes/README.md @@ -0,0 +1,21 @@ + +Temukan semua sketchnote di sini! + +## Kredit + +Nitya Narasimhan, seniman + +![sketchnote roadmap](../../../translated_images/00-Roadmap.4905d6567dff47532b9bfb8e0b8980fc6b0b1292eebb24181c1a9753b33bc0f5.id.png) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diperhatikan bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/1-Introduction/01-defining-data-science/README.md b/translations/ms/1-Introduction/01-defining-data-science/README.md new file mode 100644 index 00000000..de74bc21 --- /dev/null +++ b/translations/ms/1-Introduction/01-defining-data-science/README.md @@ -0,0 +1,78 @@ + +## Jenis Data + +Seperti yang telah disebutkan, data ada di mana-mana. Kita hanya perlu menangkapnya dengan cara yang betul! Adalah berguna untuk membezakan antara **data berstruktur** dan **data tidak berstruktur**. Data berstruktur biasanya diwakili dalam bentuk yang teratur, sering kali sebagai jadual atau beberapa jadual, manakala data tidak berstruktur hanyalah koleksi fail. Kadang-kadang kita juga boleh bercakap tentang **data separa berstruktur**, yang mempunyai beberapa jenis struktur yang mungkin berbeza-beza. + +| Berstruktur | Separa berstruktur | Tidak berstruktur | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | --------------------------------------- | +| Senarai orang dengan nombor telefon mereka | Halaman Wikipedia dengan pautan | Teks Ensiklopedia Britannica | +| Suhu di semua bilik bangunan pada setiap minit selama 20 tahun terakhir | Koleksi kertas saintifik dalam format JSON dengan penulis, tarikh penerbitan, dan abstrak | Perkongsian fail dengan dokumen korporat | +| Data umur dan jantina semua orang yang memasuki bangunan | Halaman Internet | Rakaman video mentah dari kamera pengawasan | + +## Di Mana Mendapatkan Data + +Terdapat banyak sumber data yang mungkin, dan mustahil untuk menyenaraikan semuanya! Walau bagaimanapun, mari kita sebutkan beberapa tempat biasa di mana anda boleh mendapatkan data: + +* **Berstruktur** + - **Internet of Things** (IoT), termasuk data daripada pelbagai sensor seperti sensor suhu atau tekanan, menyediakan banyak data berguna. Sebagai contoh, jika bangunan pejabat dilengkapi dengan sensor IoT, kita boleh mengawal pemanasan dan pencahayaan secara automatik untuk meminimumkan kos. + - **Tinjauan** yang kita minta pengguna lengkapkan selepas pembelian, atau selepas melawat laman web. + - **Analisis tingkah laku** boleh, sebagai contoh, membantu kita memahami sejauh mana pengguna meneroka laman web, dan apa sebab utama mereka meninggalkan laman tersebut. +* **Tidak berstruktur** + - **Teks** boleh menjadi sumber maklumat yang kaya, seperti skor **sentimen keseluruhan**, atau mengekstrak kata kunci dan makna semantik. + - **Imej** atau **Video**. Video dari kamera pengawasan boleh digunakan untuk menganggarkan trafik di jalan raya, dan memberi maklumat kepada orang ramai tentang kemungkinan kesesakan lalu lintas. + - **Log** pelayan web boleh digunakan untuk memahami halaman mana di laman web kita yang paling kerap dilawati, dan untuk berapa lama. +* **Separa berstruktur** + - Graf **Rangkaian Sosial** boleh menjadi sumber data yang hebat tentang personaliti pengguna dan keberkesanan mereka dalam menyebarkan maklumat. + - Apabila kita mempunyai sekumpulan gambar dari sebuah majlis, kita boleh cuba mengekstrak data **Dinamik Kumpulan** dengan membina graf orang yang mengambil gambar bersama. + +Dengan mengetahui pelbagai sumber data yang mungkin, anda boleh cuba memikirkan senario yang berbeza di mana teknik sains data boleh digunakan untuk memahami situasi dengan lebih baik, dan untuk meningkatkan proses perniagaan. + +## Apa yang Boleh Dilakukan dengan Data + +Dalam Sains Data, kita memberi tumpuan kepada langkah-langkah berikut dalam perjalanan data: + +## Pendigitalan dan Transformasi Digital + +Dalam dekad yang lalu, banyak perniagaan mula memahami kepentingan data dalam membuat keputusan perniagaan. Untuk menerapkan prinsip sains data dalam menjalankan perniagaan, seseorang perlu terlebih dahulu mengumpulkan data, iaitu menterjemahkan proses perniagaan ke dalam bentuk digital. Ini dikenali sebagai **pendigitalan**. Menggunakan teknik sains data pada data ini untuk membimbing keputusan boleh membawa kepada peningkatan produktiviti yang ketara (atau bahkan perubahan arah perniagaan), yang disebut **transformasi digital**. + +Mari kita pertimbangkan satu contoh. Katakan kita mempunyai kursus sains data (seperti kursus ini) yang kita sampaikan secara dalam talian kepada pelajar, dan kita ingin menggunakan sains data untuk memperbaikinya. Bagaimana kita boleh melakukannya? + +Kita boleh mula dengan bertanya "Apa yang boleh didigitalkan?" Cara paling mudah adalah dengan mengukur masa yang diambil oleh setiap pelajar untuk menyelesaikan setiap modul, dan mengukur pengetahuan yang diperoleh dengan memberikan ujian pilihan berganda di akhir setiap modul. Dengan purata masa penyelesaian di kalangan semua pelajar, kita boleh mengetahui modul mana yang paling sukar bagi pelajar, dan bekerja untuk mempermudahkannya. +Anda mungkin berpendapat bahawa pendekatan ini tidak sesuai, kerana modul boleh mempunyai panjang yang berbeza. Mungkin lebih adil untuk membahagikan masa dengan panjang modul (dalam bilangan aksara), dan membandingkan nilai-nilai tersebut sebagai gantinya. +Apabila kita mula menganalisis keputusan ujian pilihan berganda, kita boleh cuba menentukan konsep mana yang pelajar sukar untuk memahami, dan menggunakan maklumat tersebut untuk memperbaiki kandungan. Untuk melakukan itu, kita perlu merancang ujian sedemikian rupa sehingga setiap soalan berkait dengan konsep tertentu atau bahagian pengetahuan. + +Jika kita ingin menjadi lebih rumit, kita boleh memplot masa yang diambil untuk setiap modul berbanding kategori umur pelajar. Kita mungkin mendapati bahawa untuk beberapa kategori umur, masa yang diambil untuk menyelesaikan modul adalah terlalu lama, atau pelajar berhenti sebelum menyelesaikannya. Ini boleh membantu kita memberikan cadangan umur untuk modul tersebut, dan meminimumkan ketidakpuasan orang daripada jangkaan yang salah. + +## 🚀 Cabaran + +Dalam cabaran ini, kita akan cuba mencari konsep yang relevan dengan bidang Sains Data dengan melihat teks. Kita akan mengambil artikel Wikipedia tentang Sains Data, memuat turun dan memproses teks, dan kemudian membina awan perkataan seperti ini: + +![Awan Perkataan untuk Sains Data](../../../../translated_images/ds_wordcloud.664a7c07dca57de017c22bf0498cb40f898d48aa85b3c36a80620fea12fadd42.ms.png) + +Lawati [`notebook.ipynb`](../../../../../../../../../1-Introduction/01-defining-data-science/notebook.ipynb ':ignore') untuk membaca kodnya. Anda juga boleh menjalankan kod tersebut, dan melihat bagaimana ia melakukan semua transformasi data secara langsung. + +> Jika anda tidak tahu bagaimana untuk menjalankan kod dalam Jupyter Notebook, lihat [artikel ini](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). + +## [Kuiz selepas kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/1) + +## Tugasan + +* **Tugas 1**: Ubah kod di atas untuk mencari konsep berkaitan untuk bidang **Big Data** dan **Machine Learning** +* **Tugas 2**: [Fikirkan Tentang Senario Sains Data](assignment.md) + +## Kredit + +Pelajaran ini telah ditulis dengan ♥️ oleh [Dmitry Soshnikov](http://soshnikov.com) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/1-Introduction/01-defining-data-science/assignment.md b/translations/ms/1-Introduction/01-defining-data-science/assignment.md new file mode 100644 index 00000000..5c9f801f --- /dev/null +++ b/translations/ms/1-Introduction/01-defining-data-science/assignment.md @@ -0,0 +1,45 @@ + +# Tugasan: Senario Sains Data + +Dalam tugasan pertama ini, kami meminta anda untuk memikirkan tentang beberapa proses atau masalah kehidupan sebenar dalam pelbagai domain masalah, dan bagaimana anda boleh memperbaikinya menggunakan proses Sains Data. Fikirkan perkara berikut: + +1. Data apa yang boleh anda kumpulkan? +1. Bagaimana anda akan mengumpulkannya? +1. Bagaimana anda akan menyimpan data tersebut? Berapa besar kemungkinan data itu? +1. Apakah pandangan yang mungkin anda peroleh daripada data ini? Keputusan apa yang boleh kita buat berdasarkan data tersebut? + +Cuba fikirkan tentang 3 masalah/proses yang berbeza dan huraikan setiap perkara di atas untuk setiap domain masalah. + +Berikut adalah beberapa domain masalah dan masalah yang boleh membantu anda mula berfikir: + +1. Bagaimana anda boleh menggunakan data untuk memperbaiki proses pendidikan untuk kanak-kanak di sekolah? +1. Bagaimana anda boleh menggunakan data untuk mengawal vaksinasi semasa pandemik? +1. Bagaimana anda boleh menggunakan data untuk memastikan anda produktif di tempat kerja? +## Arahan + +Isi jadual berikut (gantikan domain masalah yang dicadangkan dengan domain anda sendiri jika perlu): + +| Domain Masalah | Masalah | Data apa yang perlu dikumpulkan | Bagaimana menyimpan data | Pandangan/keputusan yang boleh dibuat | +|----------------|---------|-------------------------------|--------------------------|---------------------------------------| +| Pendidikan | | | | | +| Vaksinasi | | | | | +| Produktiviti | | | | | + +## Rubrik + +Cemerlang | Memadai | Perlu Penambahbaikan +--- | --- | -- | +Berjaya mengenal pasti sumber data yang munasabah, cara menyimpan data dan keputusan/pandangan yang mungkin untuk semua domain masalah | Beberapa aspek penyelesaian tidak diperincikan, penyimpanan data tidak dibincangkan, sekurang-kurangnya 2 domain masalah dihuraikan | Hanya sebahagian penyelesaian data dihuraikan, hanya satu domain masalah dipertimbangkan. + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/1-Introduction/01-defining-data-science/solution/assignment.md b/translations/ms/1-Introduction/01-defining-data-science/solution/assignment.md new file mode 100644 index 00000000..dea75c77 --- /dev/null +++ b/translations/ms/1-Introduction/01-defining-data-science/solution/assignment.md @@ -0,0 +1,48 @@ + +# Tugasan: Senario Sains Data + +Dalam tugasan pertama ini, kami meminta anda untuk memikirkan tentang beberapa proses atau masalah kehidupan sebenar dalam pelbagai domain masalah, dan bagaimana anda boleh memperbaikinya menggunakan proses Sains Data. Fikirkan perkara berikut: + +1. Data apa yang boleh anda kumpulkan? +1. Bagaimana anda akan mengumpulkannya? +1. Bagaimana anda akan menyimpan data tersebut? Berapa besar kemungkinan data tersebut? +1. Apakah pandangan yang mungkin anda peroleh daripada data ini? Keputusan apa yang boleh kita buat berdasarkan data tersebut? + +Cuba fikirkan tentang 3 masalah/proses yang berbeza dan huraikan setiap perkara di atas untuk setiap domain masalah. + +Berikut adalah beberapa domain masalah dan masalah yang boleh membantu anda mula berfikir: + +1. Bagaimana anda boleh menggunakan data untuk memperbaiki proses pendidikan untuk kanak-kanak di sekolah? +1. Bagaimana anda boleh menggunakan data untuk mengawal vaksinasi semasa pandemik? +1. Bagaimana anda boleh menggunakan data untuk memastikan anda produktif di tempat kerja? + +## Arahan + +Isi jadual berikut (gantikan domain masalah yang dicadangkan dengan domain anda sendiri jika perlu): + +| Domain Masalah | Masalah | Data apa yang perlu dikumpulkan | Bagaimana menyimpan data | Pandangan/keputusan yang boleh dibuat | +|----------------|---------|-------------------------------|--------------------------|---------------------------------------| +| Pendidikan | Di universiti, biasanya kehadiran ke kuliah adalah rendah, dan kami mempunyai hipotesis bahawa pelajar yang menghadiri kuliah secara purata lebih baik semasa peperiksaan. Kami ingin merangsang kehadiran dan menguji hipotesis ini. | Kami boleh menjejaki kehadiran melalui gambar yang diambil oleh kamera keselamatan di kelas, atau dengan menjejaki alamat bluetooth/wifi telefon bimbit pelajar di kelas. Data peperiksaan sudah tersedia dalam pangkalan data universiti. | Jika kami menjejaki gambar kamera keselamatan - kami perlu menyimpan beberapa (5-10) gambar semasa kelas (data tidak berstruktur), dan kemudian menggunakan AI untuk mengenal pasti wajah pelajar (menukar data kepada bentuk berstruktur). | Kami boleh mengira data kehadiran purata untuk setiap pelajar, dan melihat jika terdapat sebarang korelasi dengan gred peperiksaan. Kami akan bercakap lebih lanjut tentang korelasi dalam bahagian [kebarangkalian dan statistik](../../04-stats-and-probability/README.md). Untuk merangsang kehadiran pelajar, kami boleh menerbitkan penarafan kehadiran mingguan di portal sekolah, dan memberikan hadiah kepada mereka yang mempunyai kehadiran tertinggi. | +| Vaksinasi | | | | | +| Produktiviti | | | | | + +> *Kami menyediakan satu jawapan sebagai contoh, supaya anda dapat gambaran tentang apa yang diharapkan dalam tugasan ini.* + +## Rubrik + +Cemerlang | Memadai | Perlu Penambahbaikan +--- | --- | -- | +Berjaya mengenal pasti sumber data yang munasabah, cara menyimpan data dan keputusan/pandangan yang mungkin untuk semua domain masalah | Beberapa aspek penyelesaian tidak diperincikan, penyimpanan data tidak dibincangkan, sekurang-kurangnya 2 domain masalah dihuraikan | Hanya sebahagian daripada penyelesaian data dihuraikan, hanya satu domain masalah dipertimbangkan. + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/1-Introduction/02-ethics/README.md b/translations/ms/1-Introduction/02-ethics/README.md new file mode 100644 index 00000000..b41c64b2 --- /dev/null +++ b/translations/ms/1-Introduction/02-ethics/README.md @@ -0,0 +1,267 @@ + +# Pengenalan kepada Etika Data + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/02-Ethics.png)| +|:---:| +| Etika Sains Data - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +--- + +Kita semua adalah warganegara data yang hidup dalam dunia yang dipenuhi data. + +Trend pasaran menunjukkan bahawa menjelang 2022, 1-dalam-3 organisasi besar akan membeli dan menjual data mereka melalui [Pasaran dan Pertukaran](https://www.gartner.com/smarterwithgartner/gartner-top-10-trends-in-data-and-analytics-for-2020/) dalam talian. Sebagai **Pembangun Aplikasi**, kita akan mendapati lebih mudah dan murah untuk mengintegrasikan pandangan berasaskan data dan automasi berasaskan algoritma ke dalam pengalaman pengguna harian. Tetapi apabila AI menjadi semakin meluas, kita juga perlu memahami potensi bahaya yang disebabkan oleh [penggunaan algoritma secara salah](https://www.youtube.com/watch?v=TQHs8SA1qpk) pada skala besar. + +Trend juga menunjukkan bahawa kita akan mencipta dan menggunakan lebih daripada [180 zettabait](https://www.statista.com/statistics/871513/worldwide-data-created/) data menjelang 2025. Sebagai **Saintis Data**, ini memberikan kita tahap akses yang belum pernah terjadi sebelumnya kepada data peribadi. Ini bermakna kita boleh membina profil tingkah laku pengguna dan mempengaruhi pengambilan keputusan dengan cara yang mencipta [ilusi pilihan bebas](https://www.datasciencecentral.com/profiles/blogs/the-illusion-of-choice) sambil berpotensi mendorong pengguna ke arah hasil yang kita kehendaki. Ia juga menimbulkan persoalan yang lebih luas mengenai privasi data dan perlindungan pengguna. + +Etika data kini menjadi _pengawal selia yang diperlukan_ untuk sains data dan kejuruteraan, membantu kita meminimumkan potensi bahaya dan akibat yang tidak diingini daripada tindakan berasaskan data kita. [Gartner Hype Cycle untuk AI](https://www.gartner.com/smarterwithgartner/2-megatrends-dominate-the-gartner-hype-cycle-for-artificial-intelligence-2020/) mengenal pasti trend berkaitan dalam etika digital, AI yang bertanggungjawab, dan tadbir urus AI sebagai pemacu utama untuk megatrend yang lebih besar seperti _pendemokrasian_ dan _perindustrian_ AI. + +![Gartner's Hype Cycle untuk AI - 2020](https://images-cdn.newscred.com/Zz1mOWJhNzlkNDA2ZTMxMWViYjRiOGFiM2IyMjQ1YmMwZQ==) + +Dalam pelajaran ini, kita akan meneroka bidang etika data yang menarik - daripada konsep asas dan cabaran, kepada kajian kes dan konsep AI yang diterapkan seperti tadbir urus - yang membantu mewujudkan budaya etika dalam pasukan dan organisasi yang bekerja dengan data dan AI. + +## [Kuiz Pra-Kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/2) 🎯 + +## Definisi Asas + +Mari kita mulakan dengan memahami istilah asas. + +Perkataan "etika" berasal daripada [perkataan Yunani "ethikos"](https://en.wikipedia.org/wiki/Ethics) (dan akarnya "ethos") yang bermaksud _sifat watak atau moral_. + +**Etika** adalah tentang nilai bersama dan prinsip moral yang mengawal tingkah laku kita dalam masyarakat. Etika tidak berdasarkan undang-undang tetapi pada norma yang diterima secara meluas tentang apa yang "betul vs. salah". Walau bagaimanapun, pertimbangan etika boleh mempengaruhi inisiatif tadbir urus korporat dan peraturan kerajaan yang mencipta lebih banyak insentif untuk pematuhan. + +**Etika Data** adalah [cabang baru etika](https://royalsocietypublishing.org/doi/full/10.1098/rsta.2016.0360#sec-1) yang "mengkaji dan menilai masalah moral yang berkaitan dengan _data, algoritma dan amalan yang berkaitan_". Di sini, **"data"** memberi tumpuan kepada tindakan yang berkaitan dengan penjanaan, rakaman, kurasi, pemprosesan, penyebaran, perkongsian, dan penggunaan, **"algoritma"** memberi tumpuan kepada AI, agen, pembelajaran mesin, dan robot, dan **"amalan"** memberi tumpuan kepada topik seperti inovasi yang bertanggungjawab, pengaturcaraan, penggodaman, dan kod etika. + +**Etika Terapan** adalah [aplikasi praktikal pertimbangan moral](https://en.wikipedia.org/wiki/Applied_ethics). Ia adalah proses menyiasat secara aktif isu etika dalam konteks _tindakan, produk, dan proses dunia nyata_, dan mengambil langkah pembetulan untuk memastikan bahawa ini kekal selaras dengan nilai etika yang telah ditentukan. + +**Budaya Etika** adalah tentang [_mengoperasikan_ etika terapan](https://hbr.org/2019/05/how-to-design-an-ethical-organization) untuk memastikan bahawa prinsip dan amalan etika kita diterima pakai secara konsisten dan boleh diskalakan di seluruh organisasi. Budaya etika yang berjaya mentakrifkan prinsip etika di seluruh organisasi, menyediakan insentif yang bermakna untuk pematuhan, dan mengukuhkan norma etika dengan menggalakkan dan memperkuat tingkah laku yang diingini di setiap peringkat organisasi. + +## Konsep Etika + +Dalam bahagian ini, kita akan membincangkan konsep seperti **nilai bersama** (prinsip) dan **cabaran etika** (masalah) untuk etika data - dan meneroka **kajian kes** yang membantu anda memahami konsep ini dalam konteks dunia nyata. + +### 1. Prinsip Etika + +Setiap strategi etika data bermula dengan mentakrifkan _prinsip etika_ - "nilai bersama" yang menerangkan tingkah laku yang boleh diterima, dan membimbing tindakan yang mematuhi, dalam projek data & AI kita. Anda boleh mentakrifkan ini di peringkat individu atau pasukan. Walau bagaimanapun, kebanyakan organisasi besar menggariskan ini dalam pernyataan misi atau rangka kerja _AI yang beretika_ yang ditakrifkan di peringkat korporat dan dikuatkuasakan secara konsisten di semua pasukan. + +**Contoh:** Pernyataan misi [AI Bertanggungjawab](https://www.microsoft.com/en-us/ai/responsible-ai) Microsoft berbunyi: _"Kami komited kepada kemajuan AI yang didorong oleh prinsip etika yang meletakkan manusia di tempat pertama"_ - mengenal pasti 6 prinsip etika dalam rangka kerja di bawah: + +![AI Bertanggungjawab di Microsoft](https://docs.microsoft.com/en-gb/azure/cognitive-services/personalizer/media/ethics-and-responsible-use/ai-values-future-computed.png) + +Mari kita terokai prinsip-prinsip ini secara ringkas. _Ketelusan_ dan _akauntabiliti_ adalah nilai asas yang menjadi asas kepada prinsip lain - jadi mari kita mulakan di sana: + +* [**Akauntabiliti**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) menjadikan pengamal _bertanggungjawab_ untuk operasi data & AI mereka, dan pematuhan kepada prinsip etika ini. +* [**Ketelusan**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) memastikan bahawa tindakan data dan AI _difahami_ (boleh ditafsirkan) oleh pengguna, menjelaskan apa dan mengapa di sebalik keputusan. +* [**Keadilan**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1%3aprimaryr6) - memberi tumpuan kepada memastikan AI melayan _semua orang_ secara adil, menangani sebarang bias sosio-teknikal sistemik atau tersirat dalam data dan sistem. +* [**Kebolehpercayaan & Keselamatan**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) - memastikan bahawa AI berkelakuan _konsisten_ dengan nilai yang ditentukan, meminimumkan potensi bahaya atau akibat yang tidak diingini. +* [**Privasi & Keselamatan**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) - adalah tentang memahami asal-usul data, dan menyediakan _privasi data dan perlindungan berkaitan_ kepada pengguna. +* [**Keterangkuman**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) - adalah tentang mereka bentuk penyelesaian AI dengan niat, menyesuaikannya untuk memenuhi _pelbagai keperluan_ dan keupayaan manusia. + +> 🚨 Fikirkan tentang apa yang boleh menjadi pernyataan misi etika data anda. Terokai rangka kerja AI beretika daripada organisasi lain - berikut adalah contoh daripada [IBM](https://www.ibm.com/cloud/learn/ai-ethics), [Google](https://ai.google/principles), dan [Facebook](https://ai.facebook.com/blog/facebooks-five-pillars-of-responsible-ai/). Apakah nilai bersama yang mereka miliki? Bagaimana prinsip-prinsip ini berkaitan dengan produk AI atau industri yang mereka ceburi? + +### 2. Cabaran Etika + +Setelah kita mentakrifkan prinsip etika, langkah seterusnya adalah menilai tindakan data dan AI kita untuk melihat sama ada ia selaras dengan nilai bersama tersebut. Fikirkan tentang tindakan anda dalam dua kategori: _pengumpulan data_ dan _reka bentuk algoritma_. + +Dalam pengumpulan data, tindakan mungkin melibatkan **data peribadi** atau maklumat peribadi yang boleh dikenal pasti (PII) untuk individu yang boleh dikenal pasti. Ini termasuk [pelbagai item data bukan peribadi](https://ec.europa.eu/info/law/law-topic/data-protection/reform/what-personal-data_en) yang _secara kolektif_ mengenal pasti individu. Cabaran etika boleh berkaitan dengan _privasi data_, _pemilikan data_, dan topik berkaitan seperti _persetujuan yang dimaklumkan_ dan _hak harta intelek_ untuk pengguna. + +Dalam reka bentuk algoritma, tindakan akan melibatkan pengumpulan & kurasi **set data**, kemudian menggunakannya untuk melatih & menggunakan **model data** yang meramalkan hasil atau mengautomasikan keputusan dalam konteks dunia nyata. Cabaran etika boleh timbul daripada _bias set data_, isu _kualiti data_, _ketidakadilan_, dan _salah tafsir_ dalam algoritma - termasuk beberapa isu yang bersifat sistemik. + +Dalam kedua-dua kes, cabaran etika menyerlahkan kawasan di mana tindakan kita mungkin bertentangan dengan nilai bersama kita. Untuk mengesan, mengurangkan, meminimumkan, atau menghapuskan kebimbangan ini - kita perlu bertanya soalan moral "ya/tidak" berkaitan dengan tindakan kita, kemudian mengambil tindakan pembetulan yang diperlukan. Mari kita lihat beberapa cabaran etika dan soalan moral yang mereka timbulkan: + +#### 2.1 Pemilikan Data + +Pengumpulan data sering melibatkan data peribadi yang boleh mengenal pasti subjek data. [Pemilikan data](https://permission.io/blog/data-ownership) adalah tentang _kawalan_ dan [_hak pengguna_](https://permission.io/blog/data-ownership) berkaitan dengan penciptaan, pemprosesan, dan penyebaran data. + +Soalan moral yang perlu kita tanya ialah: + * Siapa yang memiliki data? (pengguna atau organisasi) + * Hak apa yang dimiliki oleh subjek data? (contoh: akses, pemadaman, kebolehangkutan) + * Hak apa yang dimiliki oleh organisasi? (contoh: membetulkan ulasan pengguna yang berniat jahat) + +#### 2.2 Persetujuan yang Dimaklumkan + +[Persetujuan yang dimaklumkan](https://legaldictionary.net/informed-consent/) mentakrifkan tindakan pengguna bersetuju dengan tindakan (seperti pengumpulan data) dengan _pemahaman penuh_ tentang fakta yang relevan termasuk tujuan, risiko yang berpotensi, dan alternatif. + +Soalan untuk diterokai di sini ialah: + * Adakah pengguna (subjek data) memberikan kebenaran untuk pengambilan dan penggunaan data? + * Adakah pengguna memahami tujuan data itu dikumpulkan? + * Adakah pengguna memahami risiko yang berpotensi daripada penyertaan mereka? + +#### 2.3 Harta Intelek + +[Harta intelek](https://en.wikipedia.org/wiki/Intellectual_property) merujuk kepada ciptaan tidak ketara yang terhasil daripada inisiatif manusia, yang mungkin _mempunyai nilai ekonomi_ kepada individu atau perniagaan. + +Soalan untuk diterokai di sini ialah: + * Adakah data yang dikumpulkan mempunyai nilai ekonomi kepada pengguna atau perniagaan? + * Adakah **pengguna** mempunyai harta intelek di sini? + * Adakah **organisasi** mempunyai harta intelek di sini? + * Jika hak ini wujud, bagaimana kita melindunginya? + +#### 2.4 Privasi Data + +[Privasi data](https://www.northeastern.edu/graduate/blog/what-is-data-privacy/) atau privasi maklumat merujuk kepada pemeliharaan privasi pengguna dan perlindungan identiti pengguna berkaitan dengan maklumat yang boleh dikenal pasti secara peribadi. + +Soalan untuk diterokai di sini ialah: + * Adakah data (peribadi) pengguna dilindungi daripada penggodaman dan kebocoran? + * Adakah data pengguna hanya boleh diakses oleh pengguna dan konteks yang dibenarkan? + * Adakah anonimiti pengguna dipelihara apabila data dikongsi atau disebarkan? + * Bolehkah pengguna dinyahkenal pasti daripada set data yang dianonimkan? + +#### 2.5 Hak Untuk Dilupakan + +[Hak Untuk Dilupakan](https://en.wikipedia.org/wiki/Right_to_be_forgotten) atau [Hak untuk Pemadaman](https://www.gdpreu.org/right-to-be-forgotten/) memberikan perlindungan tambahan kepada data peribadi pengguna. Secara khusus, ia memberikan hak kepada pengguna untuk meminta pemadaman atau penghapusan data peribadi daripada carian Internet dan lokasi lain, _dalam keadaan tertentu_ - membolehkan mereka memulakan semula dalam talian tanpa tindakan masa lalu dipegang terhadap mereka. + +Soalan untuk diterokai di sini ialah: + * Adakah sistem membenarkan subjek data meminta pemadaman? + * Adakah penarikan balik persetujuan pengguna mencetuskan pemadaman automatik? + * Adakah data dikumpulkan tanpa persetujuan atau dengan cara yang tidak sah? + * Adakah kita mematuhi peraturan kerajaan untuk privasi data? + +#### 2.6 Bias Set Data + +Bias set data atau [Bias Pengumpulan](http://researcharticles.com/index.php/bias-in-data-collection-in-research/) adalah tentang memilih subset data yang _tidak mewakili_ untuk pembangunan algoritma, mencipta potensi ketidakadilan dalam hasil keputusan untuk kumpulan yang pelbagai. Jenis bias termasuk bias pemilihan atau pensampelan, bias sukarela, dan bias instrumen. + +Soalan untuk diterokai di sini ialah: + * Adakah kita merekrut set subjek data yang mewakili? + * Adakah kita menguji set data yang dikumpulkan atau dikurasi untuk pelbagai bias? + * Bolehkah kita mengurangkan atau menghapuskan sebarang bias yang ditemui? + +#### 2.7 Kualiti Data + +[Kualiti Data](https://lakefs.io/data-quality-testing/) melihat kesahihan set data yang dikurasi yang digunakan untuk membangunkan algoritma kita, memeriksa untuk melihat sama ada ciri dan rekod memenuhi keperluan untuk tahap ketepatan dan konsistensi yang diperlukan untuk tujuan AI kita. + +Soalan untuk diterokai di sini ialah: + * Adakah kita menangkap ciri _sah_ untuk kes penggunaan kita? + * Adakah data ditangkap _secara konsisten_ merentasi pelbagai sumber data? + * Adakah set data _lengkap_ untuk pelbagai keadaan atau senario? + * Adakah maklumat yang ditangkap _tepat_ dalam mencerminkan realiti? + +#### 2.8 Keadilan Algoritma +[Algorithm Fairness](https://towardsdatascience.com/what-is-algorithm-fairness-3182e161cf9f) memeriksa sama ada reka bentuk algoritma secara sistematik mendiskriminasi kumpulan subjek data tertentu, yang membawa kepada [kemungkinan bahaya](https://docs.microsoft.com/en-us/azure/machine-learning/concept-fairness-ml) dalam _pengagihan_ (di mana sumber dinafikan atau ditahan daripada kumpulan tersebut) dan _kualiti perkhidmatan_ (di mana AI kurang tepat untuk beberapa kumpulan berbanding yang lain). + +Soalan untuk diterokai di sini adalah: + * Adakah kita menilai ketepatan model untuk pelbagai kumpulan dan keadaan? + * Adakah kita menyemak sistem untuk kemungkinan bahaya (contohnya, stereotaip)? + * Bolehkah kita menyemak semula data atau melatih semula model untuk mengurangkan bahaya yang dikenal pasti? + +Terokai sumber seperti [AI Fairness checklists](https://query.prod.cms.rt.microsoft.com/cms/api/am/binary/RE4t6dA) untuk mengetahui lebih lanjut. + +#### 2.9 Salah Representasi + +[Salah Representasi Data](https://www.sciencedirect.com/topics/computer-science/misrepresentation) adalah tentang bertanya sama ada kita menyampaikan pandangan daripada data yang dilaporkan dengan jujur secara menipu untuk menyokong naratif yang diingini. + +Soalan untuk diterokai di sini adalah: + * Adakah kita melaporkan data yang tidak lengkap atau tidak tepat? + * Adakah kita menggambarkan data dengan cara yang membawa kepada kesimpulan yang mengelirukan? + * Adakah kita menggunakan teknik statistik terpilih untuk memanipulasi hasil? + * Adakah terdapat penjelasan alternatif yang mungkin menawarkan kesimpulan yang berbeza? + +#### 2.10 Pilihan Bebas +[Ilusi Pilihan Bebas](https://www.datasciencecentral.com/profiles/blogs/the-illusion-of-choice) berlaku apabila "senibina pilihan" sistem menggunakan algoritma membuat keputusan untuk mendorong orang ke arah hasil yang diingini sambil kelihatan memberi mereka pilihan dan kawalan. [Corak gelap](https://www.darkpatterns.org/) ini boleh menyebabkan bahaya sosial dan ekonomi kepada pengguna. Oleh kerana keputusan pengguna mempengaruhi profil tingkah laku, tindakan ini berpotensi mendorong pilihan masa depan yang boleh memperkuat atau memperluaskan kesan bahaya ini. + +Soalan untuk diterokai di sini adalah: + * Adakah pengguna memahami implikasi membuat pilihan itu? + * Adakah pengguna sedar tentang pilihan (alternatif) dan kebaikan & keburukan setiap satu? + * Bolehkah pengguna membatalkan pilihan automatik atau yang dipengaruhi kemudian? + +### 3. Kajian Kes + +Untuk meletakkan cabaran etika ini dalam konteks dunia sebenar, ia membantu untuk melihat kajian kes yang menonjolkan potensi bahaya dan akibat kepada individu dan masyarakat apabila pelanggaran etika ini diabaikan. + +Berikut adalah beberapa contoh: + +| Cabaran Etika | Kajian Kes | +|--- |--- | +| **Persetujuan Maklum** | 1972 - [Kajian Sifilis Tuskegee](https://en.wikipedia.org/wiki/Tuskegee_Syphilis_Study) - Lelaki Afrika-Amerika yang menyertai kajian ini dijanjikan rawatan perubatan percuma _tetapi ditipu_ oleh penyelidik yang gagal memaklumkan subjek tentang diagnosis mereka atau tentang ketersediaan rawatan. Ramai subjek meninggal dunia & pasangan atau anak-anak mereka terjejas; kajian ini berlangsung selama 40 tahun. | +| **Privasi Data** | 2007 - [Hadiah data Netflix](https://www.wired.com/2007/12/why-anonymous-data-sometimes-isnt/) memberikan penyelidik _10 juta penilaian filem tanpa nama daripada 50 ribu pelanggan_ untuk membantu meningkatkan algoritma cadangan. Walau bagaimanapun, penyelidik dapat mengaitkan data tanpa nama dengan data yang boleh dikenal pasti secara peribadi dalam _set data luaran_ (contohnya, komen IMDb) - secara efektif "membatalkan tanpa nama" beberapa pelanggan Netflix.| +| **Bias Pengumpulan** | 2013 - Bandar Boston [membangunkan Street Bump](https://www.boston.gov/transportation/street-bump), sebuah aplikasi yang membolehkan warga melaporkan lubang jalan, memberikan data jalan raya yang lebih baik kepada bandar untuk mencari dan membaiki isu. Walau bagaimanapun, [orang dalam kumpulan berpendapatan rendah mempunyai akses yang kurang kepada kereta dan telefon](https://hbr.org/2013/04/the-hidden-biases-in-big-data), menjadikan isu jalan raya mereka tidak kelihatan dalam aplikasi ini. Pembangun bekerjasama dengan ahli akademik untuk menangani isu _akses saksama dan jurang digital_ demi keadilan. | +| **Keadilan Algoritma** | 2018 - Kajian MIT [Gender Shades](http://gendershades.org/overview.html) menilai ketepatan produk AI klasifikasi jantina, mendedahkan jurang ketepatan untuk wanita dan orang berwarna. [Kad Apple 2019](https://www.wired.com/story/the-apple-card-didnt-see-genderand-thats-the-problem/) kelihatan menawarkan kredit yang lebih rendah kepada wanita berbanding lelaki. Kedua-duanya menggambarkan isu bias algoritma yang membawa kepada bahaya sosio-ekonomi.| +| **Salah Representasi Data** | 2020 - [Jabatan Kesihatan Awam Georgia mengeluarkan carta COVID-19](https://www.vox.com/covid-19-coronavirus-us-response-trump/2020/5/18/21262265/georgia-covid-19-cases-declining-reopening) yang kelihatan mengelirukan warga tentang trend kes yang disahkan dengan susunan tidak kronologi pada paksi-x. Ini menggambarkan salah representasi melalui helah visualisasi. | +| **Ilusi pilihan bebas** | 2020 - Aplikasi pembelajaran [ABCmouse membayar $10 juta untuk menyelesaikan aduan FTC](https://www.washingtonpost.com/business/2020/09/04/abcmouse-10-million-ftc-settlement/) di mana ibu bapa terperangkap membayar langganan yang mereka tidak dapat batalkan. Ini menggambarkan corak gelap dalam senibina pilihan, di mana pengguna didorong ke arah pilihan yang berpotensi berbahaya. | +| **Privasi Data & Hak Pengguna** | 2021 - [Kebocoran Data Facebook](https://www.npr.org/2021/04/09/986005820/after-data-breach-exposes-530-million-facebook-says-it-will-not-notify-users) mendedahkan data daripada 530 juta pengguna, mengakibatkan penyelesaian $5 bilion kepada FTC. Walau bagaimanapun, ia enggan memberitahu pengguna tentang kebocoran tersebut, melanggar hak pengguna berkaitan ketelusan data dan akses. | + +Ingin meneroka lebih banyak kajian kes? Lihat sumber ini: +* [Ethics Unwrapped](https://ethicsunwrapped.utexas.edu/case-studies) - dilema etika merentasi pelbagai industri. +* [Kursus Etika Data Sains](https://www.coursera.org/learn/data-science-ethics#syllabus) - kajian kes penting diterokai. +* [Di mana perkara menjadi salah](https://deon.drivendata.org/examples/) - senarai semak deon dengan contoh. + +> 🚨 Fikirkan tentang kajian kes yang anda lihat - adakah anda pernah mengalami, atau terjejas oleh, cabaran etika yang serupa dalam hidup anda? Bolehkah anda memikirkan sekurang-kurangnya satu lagi kajian kes yang menggambarkan salah satu cabaran etika yang telah kita bincangkan dalam bahagian ini? + +## Etika Terapan + +Kita telah bercakap tentang konsep etika, cabaran, dan kajian kes dalam konteks dunia sebenar. Tetapi bagaimana kita memulakan _menerapkan_ prinsip dan amalan etika dalam projek kita? Dan bagaimana kita _mengoperasikan_ amalan ini untuk tadbir urus yang lebih baik? Mari kita terokai beberapa penyelesaian dunia sebenar: + +### 1. Kod Profesional + +Kod Profesional menawarkan satu pilihan untuk organisasi "mendorong" ahli untuk menyokong prinsip etika dan pernyataan misi mereka. Kod adalah _panduan moral_ untuk tingkah laku profesional, membantu pekerja atau ahli membuat keputusan yang selaras dengan prinsip organisasi mereka. Ia hanya sebaik pematuhan sukarela daripada ahli; walau bagaimanapun, banyak organisasi menawarkan ganjaran dan penalti tambahan untuk memotivasi pematuhan daripada ahli. + +Contoh termasuk: + + * [Oxford Munich](http://www.code-of-ethics.org/code-of-conduct/) Kod Etika + * [Persatuan Data Sains](http://datascienceassn.org/code-of-conduct.html) Kod Tingkah Laku (dicipta 2013) + * [Kod Etika dan Tingkah Laku Profesional ACM](https://www.acm.org/code-of-ethics) (sejak 1993) + +> 🚨 Adakah anda tergolong dalam organisasi kejuruteraan atau data sains profesional? Terokai laman web mereka untuk melihat sama ada mereka mentakrifkan kod etika profesional. Apa yang dikatakan tentang prinsip etika mereka? Bagaimana mereka "mendorong" ahli untuk mengikuti kod tersebut? + +### 2. Senarai Semak Etika + +Walaupun kod profesional mentakrifkan _tingkah laku etika_ yang diperlukan daripada pengamal, ia [mempunyai batasan yang diketahui](https://resources.oreilly.com/examples/0636920203964/blob/master/of_oaths_and_checklists.md) dalam penguatkuasaan, terutamanya dalam projek berskala besar. Sebaliknya, ramai pakar data sains [menganjurkan senarai semak](https://resources.oreilly.com/examples/0636920203964/blob/master/of_oaths_and_checklists.md), yang boleh **menghubungkan prinsip kepada amalan** dengan cara yang lebih deterministik dan boleh diambil tindakan. + +Senarai semak menukar soalan kepada tugas "ya/tidak" yang boleh dioperasikan, membolehkan ia dijejaki sebagai sebahagian daripada aliran kerja pelepasan produk standard. + +Contoh termasuk: + * [Deon](https://deon.drivendata.org/) - senarai semak etika data tujuan umum yang dicipta daripada [cadangan industri](https://deon.drivendata.org/#checklist-citations) dengan alat baris arahan untuk integrasi mudah. + * [Senarai Semak Audit Privasi](https://cyber.harvard.edu/ecommerce/privacyaudit.html) - memberikan panduan umum untuk amalan pengendalian maklumat dari perspektif pendedahan undang-undang dan sosial. + * [Senarai Semak Keadilan AI](https://www.microsoft.com/en-us/research/project/ai-fairness-checklist/) - dicipta oleh pengamal AI untuk menyokong penerapan dan integrasi pemeriksaan keadilan ke dalam kitaran pembangunan AI. + * [22 soalan untuk etika dalam data dan AI](https://medium.com/the-organization/22-questions-for-ethics-in-data-and-ai-efb68fd19429) - rangka kerja yang lebih terbuka, berstruktur untuk penerokaan awal isu etika dalam reka bentuk, pelaksanaan, dan konteks organisasi. + +### 3. Peraturan Etika + +Etika adalah tentang mentakrifkan nilai bersama dan melakukan perkara yang betul secara _sukarela_. **Pematuhan** adalah tentang _mengikuti undang-undang_ jika dan di mana ia ditakrifkan. **Tadbir urus** secara amnya merangkumi semua cara organisasi beroperasi untuk menguatkuasakan prinsip etika dan mematuhi undang-undang yang ditetapkan. + +Hari ini, tadbir urus mengambil dua bentuk dalam organisasi. Pertama, ia adalah tentang mentakrifkan prinsip **AI etika** dan mewujudkan amalan untuk mengoperasikan penerapan merentasi semua projek berkaitan AI dalam organisasi. Kedua, ia adalah tentang mematuhi semua peraturan perlindungan data yang diwajibkan oleh kerajaan untuk wilayah yang ia beroperasi. + +Contoh peraturan perlindungan dan privasi data: + + * `1974`, [Akta Privasi AS](https://www.justice.gov/opcl/privacy-act-1974) - mengawal selia pengumpulan, penggunaan, dan pendedahan maklumat peribadi oleh _kerajaan persekutuan_. + * `1996`, [Akta Kebolehpasaran dan Akauntabiliti Insurans Kesihatan AS (HIPAA)](https://www.cdc.gov/phlp/publications/topic/hipaa.html) - melindungi data kesihatan peribadi. + * `1998`, [Akta Perlindungan Privasi Dalam Talian Kanak-kanak AS (COPPA)](https://www.ftc.gov/enforcement/rules/rulemaking-regulatory-reform-proceedings/childrens-online-privacy-protection-rule) - melindungi privasi data kanak-kanak di bawah umur 13 tahun. + * `2018`, [Peraturan Perlindungan Data Umum (GDPR)](https://gdpr-info.eu/) - menyediakan hak pengguna, perlindungan data, dan privasi. + * `2018`, [Akta Privasi Pengguna California (CCPA)](https://www.oag.ca.gov/privacy/ccpa) memberikan pengguna lebih banyak _hak_ ke atas data (peribadi) mereka. + * `2021`, [Undang-undang Perlindungan Maklumat Peribadi China](https://www.reuters.com/world/china/china-passes-new-personal-data-privacy-law-take-effect-nov-1-2021-08-20/) baru sahaja diluluskan, mewujudkan salah satu peraturan privasi data dalam talian terkuat di dunia. + +> 🚨 Kesatuan Eropah mentakrifkan GDPR (Peraturan Perlindungan Data Umum) kekal sebagai salah satu peraturan privasi data yang paling berpengaruh hari ini. Adakah anda tahu ia juga mentakrifkan [8 hak pengguna](https://www.freeprivacypolicy.com/blog/8-user-rights-gdpr) untuk melindungi privasi digital dan data peribadi warganegara? Ketahui tentang apa hak ini, dan mengapa ia penting. + +### 4. Budaya Etika + +Perhatikan bahawa masih terdapat jurang tidak ketara antara _pematuhan_ (melakukan cukup untuk memenuhi "huruf undang-undang") dan menangani [isu sistemik](https://www.coursera.org/learn/data-science-ethics/home/week/4) (seperti pengukuhan, asimetri maklumat, dan ketidakadilan pengagihan) yang boleh mempercepatkan penggunaan AI untuk tujuan yang salah. + +Yang terakhir memerlukan [pendekatan kolaboratif untuk mentakrifkan budaya etika](https://towardsdatascience.com/why-ai-ethics-requires-a-culture-driven-approach-26f451afa29f) yang membina hubungan emosi dan nilai bersama yang konsisten _merentasi organisasi_ dalam industri. Ini memerlukan lebih banyak [budaya etika data yang diformalkan](https://www.codeforamerica.org/news/formalizing-an-ethical-data-culture/) dalam organisasi - membolehkan _sesiapa sahaja_ untuk [menarik tali Andon](https://en.wikipedia.org/wiki/Andon_(manufacturing)) (untuk membangkitkan kebimbangan etika lebih awal dalam proses) dan menjadikan _penilaian etika_ (contohnya, dalam pengambilan pekerja) sebagai kriteria teras pembentukan pasukan dalam projek AI. + +--- +## [Kuiz selepas kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/3) 🎯 +## Ulasan & Kajian Kendiri + +Kursus dan buku membantu memahami konsep dan cabaran etika teras, manakala kajian kes dan alat membantu dengan amalan etika terapan dalam konteks dunia sebenar. Berikut adalah beberapa sumber untuk bermula. + +* [Pembelajaran Mesin Untuk Pemula](https://github.com/microsoft/ML-For-Beginners/blob/main/1-Introduction/3-fairness/README.md) - pelajaran tentang Keadilan, daripada Microsoft. +* [Prinsip AI Bertanggungjawab](https://docs.microsoft.com/en-us/learn/modules/responsible-ai-principles/) - laluan pembelajaran percuma dari Microsoft Learn. +* [Etika dan Sains Data](https://resources.oreilly.com/examples/0636920203964) - EBook O'Reilly (M. Loukides, H. Mason et. al) +* [Etika Sains Data](https://www.coursera.org/learn/data-science-ethics#syllabus) - kursus dalam talian dari Universiti Michigan. +* [Ethics Unwrapped](https://ethicsunwrapped.utexas.edu/case-studies) - kajian kes dari Universiti Texas. + +# Tugasan + +[Tulis Kajian Kes Etika Data](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/1-Introduction/02-ethics/assignment.md b/translations/ms/1-Introduction/02-ethics/assignment.md new file mode 100644 index 00000000..849ef4f2 --- /dev/null +++ b/translations/ms/1-Introduction/02-ethics/assignment.md @@ -0,0 +1,35 @@ + +## Tulis Kajian Kes Etika Data + +## Arahan + +Anda telah mempelajari pelbagai [Cabaran Etika Data](README.md#2-ethics-challenges) dan melihat beberapa contoh [Kajian Kes](README.md#3-case-studies) yang mencerminkan cabaran etika data dalam konteks dunia sebenar. + +Dalam tugasan ini, anda akan menulis kajian kes anda sendiri yang mencerminkan cabaran etika data berdasarkan pengalaman anda sendiri, atau dari konteks dunia sebenar yang anda kenali. Ikuti langkah-langkah berikut: + +1. `Pilih Cabaran Etika Data`. Lihat [contoh dalam pelajaran](README.md#2-ethics-challenges) atau terokai contoh dalam talian seperti [Senarai Semak Deon](https://deon.drivendata.org/examples/) untuk mendapatkan inspirasi. + +2. `Huraikan Contoh Dunia Sebenar`. Fikirkan tentang situasi yang pernah anda dengar (berita utama, kajian penyelidikan, dll.) atau alami (komuniti setempat), di mana cabaran ini berlaku. Fikirkan tentang persoalan etika data yang berkaitan dengan cabaran tersebut - dan bincangkan potensi bahaya atau akibat yang tidak disengajakan yang timbul akibat isu ini. Bonus: fikirkan tentang penyelesaian atau proses yang boleh digunakan di sini untuk membantu menghapuskan atau mengurangkan kesan buruk cabaran ini. + +3. `Sediakan Senarai Sumber Berkaitan`. Kongsi satu atau lebih sumber (pautan ke artikel, catatan blog peribadi atau imej, kertas penyelidikan dalam talian, dll.) untuk membuktikan bahawa ini adalah kejadian dunia sebenar. Bonus: kongsi sumber yang juga menunjukkan potensi bahaya & akibat daripada insiden tersebut, atau menyerlahkan langkah positif yang diambil untuk mencegah ia berulang. + + + +## Rubrik + +Cemerlang | Memadai | Perlu Penambahbaikan +--- | --- | -- | +Satu atau lebih cabaran etika data dikenal pasti.

Kajian kes dengan jelas menerangkan insiden dunia sebenar yang mencerminkan cabaran tersebut, dan menyerlahkan akibat atau bahaya yang tidak diingini yang disebabkannya.

Terdapat sekurang-kurangnya satu sumber yang dipautkan untuk membuktikan kejadian ini berlaku. | Satu cabaran etika data dikenal pasti.

Sekurang-kurangnya satu bahaya atau akibat yang relevan dibincangkan secara ringkas.

Walau bagaimanapun, perbincangan adalah terhad atau kekurangan bukti kejadian dunia sebenar. | Satu cabaran data dikenal pasti.

Walau bagaimanapun, penerangan atau sumber tidak mencerminkan cabaran tersebut dengan secukupnya atau membuktikan kejadian dunia sebenar. | + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/1-Introduction/03-defining-data/README.md b/translations/ms/1-Introduction/03-defining-data/README.md new file mode 100644 index 00000000..b4c63f64 --- /dev/null +++ b/translations/ms/1-Introduction/03-defining-data/README.md @@ -0,0 +1,85 @@ + +# Mendefinisikan Data + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/03-DefiningData.png)| +|:---:| +|Mendefinisikan Data - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +Data adalah fakta, maklumat, pemerhatian dan pengukuran yang digunakan untuk membuat penemuan dan menyokong keputusan yang berinformasi. Titik data adalah unit tunggal data dalam satu set data, yang merupakan koleksi titik data. Set data boleh datang dalam pelbagai format dan struktur, dan biasanya berdasarkan sumbernya, atau dari mana data itu berasal. Sebagai contoh, pendapatan bulanan sebuah syarikat mungkin dalam bentuk spreadsheet tetapi data kadar denyutan jantung setiap jam dari jam tangan pintar mungkin dalam format [JSON](https://stackoverflow.com/a/383699). Adalah biasa bagi saintis data untuk bekerja dengan pelbagai jenis data dalam satu set data. + +Pelajaran ini memberi tumpuan kepada mengenal pasti dan mengklasifikasikan data berdasarkan ciri-cirinya dan sumbernya. + +## [Kuiz Pra-Kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/4) + +## Bagaimana Data Diterangkan + +### Data Mentah +Data mentah adalah data yang datang dari sumbernya dalam keadaan asal dan belum dianalisis atau diatur. Untuk memahami apa yang berlaku dengan satu set data, ia perlu diatur dalam format yang boleh difahami oleh manusia serta teknologi yang mungkin mereka gunakan untuk menganalisisnya lebih lanjut. Struktur satu set data menerangkan bagaimana ia diatur dan boleh diklasifikasikan sebagai berstruktur, tidak berstruktur, dan separa berstruktur. Jenis struktur ini akan berbeza, bergantung pada sumbernya tetapi akhirnya akan sesuai dengan tiga kategori ini. + +### Data Kuantitatif +Data kuantitatif adalah pemerhatian berangka dalam satu set data dan biasanya boleh dianalisis, diukur, dan digunakan secara matematik. Beberapa contoh data kuantitatif adalah: populasi sesebuah negara, ketinggian seseorang, atau pendapatan suku tahunan sebuah syarikat. Dengan analisis tambahan, data kuantitatif boleh digunakan untuk menemui tren musiman Indeks Kualiti Udara (AQI) atau menganggarkan kebarangkalian kesesakan lalu lintas pada hari kerja biasa. + +### Data Kualitatif +Data kualitatif, juga dikenali sebagai data kategori, adalah data yang tidak boleh diukur secara objektif seperti pemerhatian data kuantitatif. Ia biasanya dalam pelbagai format data subjektif yang menangkap kualiti sesuatu, seperti produk atau proses. Kadang-kadang, data kualitatif adalah berangka tetapi tidak biasanya digunakan secara matematik, seperti nombor telefon atau cap waktu. Beberapa contoh data kualitatif adalah: komen video, jenama dan model kereta, atau warna kegemaran rakan terdekat anda. Data kualitatif boleh digunakan untuk memahami produk mana yang paling disukai pengguna atau mengenal pasti kata kunci popular dalam resume permohonan kerja. + +### Data Berstruktur +Data berstruktur adalah data yang diatur dalam baris dan lajur, di mana setiap baris akan mempunyai set lajur yang sama. Lajur mewakili nilai jenis tertentu dan akan dikenalpasti dengan nama yang menerangkan apa yang diwakili oleh nilai tersebut, sementara baris mengandungi nilai sebenar. Lajur sering mempunyai set peraturan atau sekatan tertentu pada nilai, untuk memastikan nilai tersebut mewakili lajur dengan tepat. Sebagai contoh, bayangkan spreadsheet pelanggan di mana setiap baris mesti mempunyai nombor telefon dan nombor telefon tersebut tidak pernah mengandungi aksara abjad. Mungkin ada peraturan yang diterapkan pada lajur nombor telefon untuk memastikan ia tidak pernah kosong dan hanya mengandungi nombor. + +Kelebihan data berstruktur adalah ia boleh diatur sedemikian rupa sehingga boleh berkaitan dengan data berstruktur lain. Walau bagaimanapun, kerana data direka untuk diatur dengan cara tertentu, membuat perubahan pada struktur keseluruhannya boleh memerlukan banyak usaha. Sebagai contoh, menambah lajur e-mel pada spreadsheet pelanggan yang tidak boleh kosong bermaksud anda perlu memikirkan bagaimana anda akan menambah nilai ini pada baris pelanggan yang sedia ada dalam set data. + +Contoh data berstruktur: spreadsheet, pangkalan data relasi, nombor telefon, penyata bank. + +### Data Tidak Berstruktur +Data tidak berstruktur biasanya tidak boleh dikategorikan ke dalam baris atau lajur dan tidak mengandungi format atau set peraturan untuk diikuti. Oleh kerana data tidak berstruktur mempunyai sekatan yang lebih sedikit pada strukturnya, lebih mudah untuk menambah maklumat baru berbanding dengan set data berstruktur. Jika sensor yang menangkap data tekanan barometrik setiap 2 minit telah menerima kemas kini yang kini membolehkannya mengukur dan merekodkan suhu, ia tidak memerlukan perubahan pada data sedia ada jika ia tidak berstruktur. Walau bagaimanapun, ini mungkin membuat analisis atau penyiasatan jenis data ini mengambil masa lebih lama. Sebagai contoh, seorang saintis yang ingin mencari suhu purata bulan sebelumnya dari data sensor, tetapi mendapati bahawa sensor merekodkan "e" dalam beberapa datanya untuk menunjukkan ia rosak dan bukannya nombor biasa, yang bermaksud data tersebut tidak lengkap. + +Contoh data tidak berstruktur: fail teks, mesej teks, fail video. + +### Data Separa Berstruktur +Data separa berstruktur mempunyai ciri-ciri yang menjadikannya gabungan data berstruktur dan tidak berstruktur. Ia biasanya tidak mematuhi format baris dan lajur tetapi diatur dengan cara yang dianggap berstruktur dan mungkin mengikuti format tetap atau set peraturan. Struktur akan berbeza antara sumber, seperti hierarki yang ditentukan dengan baik kepada sesuatu yang lebih fleksibel yang membolehkan integrasi maklumat baru dengan mudah. Metadata adalah indikator yang membantu menentukan bagaimana data diatur dan disimpan dan akan mempunyai pelbagai nama, berdasarkan jenis data. Beberapa nama umum untuk metadata adalah tag, elemen, entiti, dan atribut. Sebagai contoh, mesej e-mel biasa akan mempunyai subjek, badan, dan set penerima dan boleh diatur berdasarkan siapa atau bila ia dihantar. + +Contoh data separa berstruktur: HTML, fail CSV, JavaScript Object Notation (JSON). + +## Sumber Data + +Sumber data adalah lokasi awal di mana data dihasilkan, atau di mana ia "berada" dan akan berbeza berdasarkan bagaimana dan bila ia dikumpulkan. Data yang dihasilkan oleh penggunanya dikenali sebagai data primer sementara data sekunder berasal dari sumber yang telah mengumpulkan data untuk kegunaan umum. Sebagai contoh, sekumpulan saintis yang mengumpulkan pemerhatian di hutan hujan akan dianggap sebagai data primer dan jika mereka memutuskan untuk berkongsi dengan saintis lain, ia akan dianggap sebagai data sekunder bagi mereka yang menggunakannya. + +Pangkalan data adalah sumber yang biasa dan bergantung pada sistem pengurusan pangkalan data untuk menjadi tuan rumah dan mengekalkan data di mana pengguna menggunakan arahan yang dipanggil kueri untuk meneroka data. Fail sebagai sumber data boleh berupa fail audio, imej, dan video serta spreadsheet seperti Excel. Sumber internet adalah lokasi biasa untuk menjadi tuan rumah data, di mana pangkalan data serta fail boleh ditemui. Antara muka pengaturcaraan aplikasi, juga dikenali sebagai API, membolehkan pengaturcara mencipta cara untuk berkongsi data dengan pengguna luaran melalui internet, sementara proses web scraping mengekstrak data dari halaman web. [Pelajaran dalam Bekerja dengan Data](../../../../../../../../../2-Working-With-Data) memberi tumpuan kepada cara menggunakan pelbagai sumber data. + +## Kesimpulan + +Dalam pelajaran ini kita telah mempelajari: + +- Apa itu data +- Bagaimana data diterangkan +- Bagaimana data diklasifikasikan dan dikategorikan +- Di mana data boleh ditemui + +## 🚀 Cabaran + +Kaggle adalah sumber yang sangat baik untuk set data terbuka. Gunakan [alat carian set data](https://www.kaggle.com/datasets) untuk mencari beberapa set data yang menarik dan klasifikasikan 3-5 set data dengan kriteria ini: + +- Adakah data kuantitatif atau kualitatif? +- Adakah data berstruktur, tidak berstruktur, atau separa berstruktur? + +## [Kuiz Pasca-Kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/5) + +## Kajian & Pembelajaran Kendiri + +- Unit Microsoft Learn ini, bertajuk [Classify your Data](https://docs.microsoft.com/en-us/learn/modules/choose-storage-approach-in-azure/2-classify-data) mempunyai pecahan terperinci tentang data berstruktur, separa berstruktur, dan tidak berstruktur. + +## Tugasan + +[Classifying Datasets](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/1-Introduction/03-defining-data/assignment.md b/translations/ms/1-Introduction/03-defining-data/assignment.md new file mode 100644 index 00000000..f9991fbc --- /dev/null +++ b/translations/ms/1-Introduction/03-defining-data/assignment.md @@ -0,0 +1,79 @@ + +# Mengklasifikasikan Set Data + +## Arahan + +Ikuti arahan dalam tugasan ini untuk mengenal pasti dan mengklasifikasikan data dengan satu daripada setiap jenis data berikut: + +**Jenis Struktur**: Berstruktur, Separuh Berstruktur, atau Tidak Berstruktur + +**Jenis Nilai**: Kualitatif atau Kuantitatif + +**Jenis Sumber**: Primer atau Sekunder + +1. Sebuah syarikat telah diambil alih dan kini mempunyai syarikat induk. Saintis data telah menerima hamparan nombor telefon pelanggan daripada syarikat induk. + +Jenis Struktur: + +Jenis Nilai: + +Jenis Sumber: + +--- + +2. Sebuah jam pintar telah mengumpulkan data kadar denyutan jantung daripada pemakainya, dan data mentah tersebut berada dalam format JSON. + +Jenis Struktur: + +Jenis Nilai: + +Jenis Sumber: + +--- + +3. Tinjauan tempat kerja mengenai semangat pekerja yang disimpan dalam fail CSV. + +Jenis Struktur: + +Jenis Nilai: + +Jenis Sumber: + +--- + +4. Ahli astrofizik sedang mengakses pangkalan data galaksi yang telah dikumpulkan oleh sebuah probe angkasa. Data tersebut mengandungi bilangan planet dalam setiap galaksi. + +Jenis Struktur: + +Jenis Nilai: + +Jenis Sumber: + +--- + +5. Aplikasi kewangan peribadi menggunakan API untuk menyambung ke akaun kewangan pengguna bagi mengira nilai bersih mereka. Mereka boleh melihat semua transaksi mereka dalam format baris dan lajur yang kelihatan serupa dengan hamparan. + +Jenis Struktur: + +Jenis Nilai: + +Jenis Sumber: + +## Rubrik + +Cemerlang | Memadai | Perlu Penambahbaikan +--- | --- | -- | +Mengenal pasti dengan betul semua struktur, nilai, dan sumber |Mengenal pasti dengan betul 3 struktur, nilai, dan sumber|Mengenal pasti dengan betul 2 atau kurang struktur, nilai, dan sumber| + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/1-Introduction/04-stats-and-probability/README.md b/translations/ms/1-Introduction/04-stats-and-probability/README.md new file mode 100644 index 00000000..c2871a7e --- /dev/null +++ b/translations/ms/1-Introduction/04-stats-and-probability/README.md @@ -0,0 +1,276 @@ + +# Pengenalan Ringkas kepada Statistik dan Kebarangkalian + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/04-Statistics-Probability.png)| +|:---:| +| Statistik dan Kebarangkalian - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +Teori Statistik dan Kebarangkalian adalah dua cabang Matematik yang sangat berkait rapat dan amat relevan dalam Sains Data. Walaupun anda boleh bekerja dengan data tanpa pengetahuan matematik yang mendalam, adalah lebih baik untuk mengetahui sekurang-kurangnya beberapa konsep asas. Di sini, kami akan memberikan pengenalan ringkas untuk membantu anda bermula. + +[![Video Pengenalan](../../../../translated_images/video-prob-and-stats.e4282e5efa2f2543400843ed98b1057065c9600cebfc8a728e8931b5702b2ae4.ms.png)](https://youtu.be/Z5Zy85g4Yjw) + +## [Kuiz Pra-Kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/6) + +## Kebarangkalian dan Pemboleh Ubah Rawak + +**Kebarangkalian** ialah nombor antara 0 dan 1 yang menunjukkan sejauh mana sesuatu **peristiwa** itu mungkin berlaku. Ia ditakrifkan sebagai bilangan hasil positif (yang membawa kepada peristiwa tersebut), dibahagikan dengan jumlah keseluruhan hasil, dengan syarat semua hasil adalah sama kebarangkaliannya. Sebagai contoh, apabila kita melontar dadu, kebarangkalian untuk mendapat nombor genap ialah 3/6 = 0.5. + +Apabila kita bercakap tentang peristiwa, kita menggunakan **pemboleh ubah rawak**. Sebagai contoh, pemboleh ubah rawak yang mewakili nombor yang diperoleh apabila melontar dadu akan mengambil nilai dari 1 hingga 6. Set nombor dari 1 hingga 6 ini dipanggil **ruang sampel**. Kita boleh bercakap tentang kebarangkalian pemboleh ubah rawak mengambil nilai tertentu, contohnya P(X=3)=1/6. + +Pemboleh ubah rawak dalam contoh sebelumnya dipanggil **diskret**, kerana ia mempunyai ruang sampel yang boleh dikira, iaitu terdapat nilai-nilai yang berasingan yang boleh disenaraikan. Terdapat kes di mana ruang sampel adalah julat nombor nyata, atau keseluruhan set nombor nyata. Pemboleh ubah seperti ini dipanggil **berterusan**. Contoh yang baik ialah masa ketibaan bas. + +## Taburan Kebarangkalian + +Dalam kes pemboleh ubah rawak diskret, adalah mudah untuk menerangkan kebarangkalian setiap peristiwa dengan fungsi P(X). Untuk setiap nilai *s* dari ruang sampel *S*, ia akan memberikan nombor dari 0 hingga 1, dengan syarat jumlah semua nilai P(X=s) untuk semua peristiwa adalah 1. + +Taburan diskret yang paling terkenal ialah **taburan seragam**, di mana terdapat ruang sampel dengan N elemen, dengan kebarangkalian yang sama iaitu 1/N untuk setiap elemen. + +Lebih sukar untuk menerangkan taburan kebarangkalian pemboleh ubah berterusan, dengan nilai yang diambil dari beberapa selang [a,b], atau keseluruhan set nombor nyata ℝ. Pertimbangkan kes masa ketibaan bas. Sebenarnya, untuk setiap masa ketibaan tepat *t*, kebarangkalian bas tiba pada masa itu adalah 0! + +> Kini anda tahu bahawa peristiwa dengan kebarangkalian 0 boleh berlaku, dan ia berlaku dengan kerap! Sekurang-kurangnya setiap kali bas tiba! + +Kita hanya boleh bercakap tentang kebarangkalian pemboleh ubah jatuh dalam selang nilai tertentu, contohnya P(t1≤X2). Dalam kes ini, taburan kebarangkalian diterangkan oleh **fungsi ketumpatan kebarangkalian** p(x), dengan syarat + +![P(t_1\le X1, x2, ..., xn. Kita boleh mentakrifkan nilai **min** (atau **purata aritmetik**) urutan tersebut dengan cara tradisional sebagai (x1+x2+xn)/n. Apabila kita meningkatkan saiz sampel (iaitu mengambil had dengan n→∞), kita akan memperoleh min (juga dipanggil **jangkaan**) taburan. Kita akan menandakan jangkaan ini dengan **E**(x). + +> Ia boleh ditunjukkan bahawa untuk mana-mana taburan diskret dengan nilai {x1, x2, ..., xN} dan kebarangkalian yang sepadan p1, p2, ..., pN, jangkaan adalah sama dengan E(X)=x1p1+x2p2+...+xNpN. + +Untuk mengenal pasti sejauh mana nilai-nilai tersebar, kita boleh mengira varians σ2 = ∑(xi - μ)2/n, di mana μ ialah min urutan tersebut. Nilai σ dipanggil **sisihan piawai**, dan σ2 dipanggil **varians**. + +## Mod, Median dan Kuartil + +Kadangkala, min tidak cukup mewakili nilai "tipikal" untuk data. Sebagai contoh, apabila terdapat beberapa nilai ekstrem yang sangat jauh dari julat, ia boleh mempengaruhi min. Satu lagi petunjuk yang baik ialah **median**, iaitu nilai di mana separuh daripada data berada di bawahnya, dan separuh lagi berada di atasnya. + +Untuk membantu kita memahami taburan data, adalah berguna untuk bercakap tentang **kuartil**: + +* Kuartil pertama, atau Q1, ialah nilai di mana 25% data berada di bawahnya +* Kuartil ketiga, atau Q3, ialah nilai di mana 75% data berada di bawahnya + +Secara grafik, kita boleh mewakili hubungan antara median dan kuartil dalam diagram yang dipanggil **plot kotak**: + + + +Di sini kita juga mengira **julat antara kuartil** IQR=Q3-Q1, dan nilai yang dipanggil **outlier** - nilai yang berada di luar sempadan [Q1-1.5*IQR,Q3+1.5*IQR]. + +Untuk taburan terhingga yang mengandungi bilangan nilai yang kecil, nilai "tipikal" yang baik ialah nilai yang paling kerap muncul, yang dipanggil **mod**. Ia sering digunakan untuk data kategori, seperti warna. Pertimbangkan situasi di mana kita mempunyai dua kumpulan orang - satu kumpulan yang sangat menyukai warna merah, dan satu lagi yang menyukai warna biru. Jika kita mengekod warna dengan nombor, nilai min untuk warna kegemaran mungkin berada di spektrum oren-hijau, yang tidak menunjukkan keutamaan sebenar mana-mana kumpulan. Walau bagaimanapun, mod akan menjadi salah satu warna tersebut, atau kedua-duanya, jika bilangan orang yang memilihnya adalah sama (dalam kes ini kita memanggil sampel tersebut **multimodal**). + +## Data Dunia Sebenar + +Apabila kita menganalisis data dari dunia sebenar, data tersebut selalunya bukan pemboleh ubah rawak dalam erti kata bahawa kita tidak menjalankan eksperimen dengan hasil yang tidak diketahui. Sebagai contoh, pertimbangkan pasukan pemain besbol, dan data tubuh mereka, seperti ketinggian, berat dan umur. Nombor-nombor ini tidak sepenuhnya rawak, tetapi kita masih boleh menggunakan konsep matematik yang sama. Sebagai contoh, urutan berat badan orang boleh dianggap sebagai urutan nilai yang diambil daripada pemboleh ubah rawak tertentu. Berikut ialah urutan berat badan pemain besbol sebenar dari [Major League Baseball](http://mlb.mlb.com/index.jsp), diambil daripada [set data ini](http://wiki.stat.ucla.edu/socr/index.php/SOCR_Data_MLB_HeightsWeights) (untuk kemudahan anda, hanya 20 nilai pertama ditunjukkan): + +``` +[180.0, 215.0, 210.0, 210.0, 188.0, 176.0, 209.0, 200.0, 231.0, 180.0, 188.0, 180.0, 185.0, 160.0, 180.0, 185.0, 197.0, 189.0, 185.0, 219.0] +``` + +> **Nota**: Untuk melihat contoh bekerja dengan set data ini, lihat [notebook yang disertakan](notebook.ipynb). Terdapat juga beberapa cabaran sepanjang pelajaran ini, dan anda boleh melengkapkannya dengan menambah kod pada notebook tersebut. Jika anda tidak pasti bagaimana untuk mengendalikan data, jangan risau - kita akan kembali kepada bekerja dengan data menggunakan Python pada masa akan datang. Jika anda tidak tahu cara menjalankan kod dalam Jupyter Notebook, lihat [artikel ini](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). + +Berikut ialah plot kotak yang menunjukkan min, median dan kuartil untuk data kita: + +![Plot Kotak Berat](../../../../translated_images/weight-boxplot.1dbab1c03af26f8a008fff4e17680082c8ab147d6df646cbac440bbf8f5b9c42.ms.png) + +Memandangkan data kita mengandungi maklumat tentang **peranan** pemain yang berbeza, kita juga boleh membuat plot kotak mengikut peranan - ini akan membolehkan kita mendapatkan idea tentang bagaimana nilai parameter berbeza mengikut peranan. Kali ini kita akan mempertimbangkan ketinggian: + +![Plot kotak mengikut peranan](../../../../translated_images/boxplot_byrole.036b27a1c3f52d42f66fba2324ec5cde0a1bca6a01a619eeb0ce7cd054b2527b.ms.png) + +Diagram ini mencadangkan bahawa, secara purata, ketinggian pemain bas pertama lebih tinggi daripada ketinggian pemain bas kedua. Kemudian dalam pelajaran ini kita akan belajar bagaimana kita boleh menguji hipotesis ini dengan lebih formal, dan bagaimana untuk menunjukkan bahawa data kita adalah signifikan secara statistik untuk membuktikannya. + +> Apabila bekerja dengan data dunia sebenar, kita menganggap bahawa semua titik data adalah sampel yang diambil daripada beberapa taburan kebarangkalian. Andaian ini membolehkan kita menggunakan teknik pembelajaran mesin dan membina model ramalan yang berfungsi. + +Untuk melihat bagaimana taburan data kita, kita boleh melukis graf yang dipanggil **histogram**. Paksi X akan mengandungi bilangan selang berat yang berbeza (dipanggil **bin**), dan paksi menegak akan menunjukkan bilangan kali sampel pemboleh ubah rawak berada dalam selang tertentu. + +![Histogram data dunia sebenar](../../../../translated_images/weight-histogram.bfd00caf7fc30b145b21e862dba7def41c75635d5280de25d840dd7f0b00545e.ms.png) + +Daripada histogram ini, anda boleh melihat bahawa semua nilai berpusat di sekitar berat purata tertentu, dan semakin jauh kita pergi dari berat tersebut - semakin sedikit berat dengan nilai itu ditemui. Iaitu, sangat tidak mungkin bahawa berat pemain besbol akan sangat berbeza daripada berat purata. Varians berat menunjukkan sejauh mana berat cenderung berbeza daripada purata. + +> Jika kita mengambil berat orang lain, bukan dari liga besbol, taburan mungkin berbeza. Walau bagaimanapun, bentuk taburan akan sama, tetapi purata dan varians akan berubah. Jadi, jika kita melatih model kita pada pemain besbol, ia mungkin memberikan hasil yang salah apabila digunakan pada pelajar universiti, kerana taburan asasnya berbeza. + +## Taburan Normal + +Taburan berat yang kita lihat di atas adalah sangat tipikal, dan banyak ukuran dari dunia sebenar mengikuti jenis taburan yang sama, tetapi dengan purata dan varians yang berbeza. Taburan ini dipanggil **taburan normal**, dan ia memainkan peranan yang sangat penting dalam statistik. + +Menggunakan taburan normal adalah cara yang betul untuk menjana berat rawak pemain besbol yang berpotensi. Setelah kita mengetahui berat purata `mean` dan sisihan piawai `std`, kita boleh menjana 1000 sampel berat dengan cara berikut: +```python +samples = np.random.normal(mean,std,1000) +``` + +Jika kita melukis histogram sampel yang dijana, kita akan melihat gambar yang sangat serupa dengan yang ditunjukkan di atas. Dan jika kita meningkatkan bilangan sampel dan bilangan bin, kita boleh menjana gambar taburan normal yang lebih hampir kepada ideal: + +![Taburan Normal dengan purata=0 dan sisihan piawai=1](../../../../translated_images/normal-histogram.dfae0d67c202137d552d0015fb87581eca263925e512404f3c12d8885315432e.ms.png) + +*Taburan Normal dengan purata=0 dan sisihan piawai=1* + +## Selang Keyakinan + +Apabila kita bercakap tentang berat pemain besbol, kita mengandaikan bahawa terdapat **pemboleh ubah rawak W** tertentu yang sepadan dengan taburan kebarangkalian ideal berat semua pemain besbol (dipanggil **populasi**). Urutan berat kita sepadan dengan subset semua pemain besbol yang kita panggil **sampel**. Satu soalan menarik ialah, bolehkah kita mengetahui parameter taburan W, iaitu purata dan varians populasi? + +Jawapan paling mudah ialah mengira purata dan varians sampel kita. Walau bagaimanapun, mungkin berlaku bahawa sampel rawak kita tidak mewakili populasi secara tepat. Oleh itu, adalah masuk akal untuk bercakap tentang **selang keyakinan**. +> **Selang keyakinan** ialah anggaran bagi min sebenar populasi berdasarkan sampel kita, yang tepat dengan kebarangkalian tertentu (atau **tahap keyakinan**). +Anggap kita mempunyai sampel X1, ..., Xn daripada taburan kita. Setiap kali kita mengambil sampel daripada taburan kita, kita akan mendapat nilai purata μ yang berbeza. Oleh itu, μ boleh dianggap sebagai pemboleh ubah rawak. **Selang keyakinan** dengan keyakinan p adalah sepasang nilai (Lp,Rp), di mana **P**(Lp≤μ≤Rp) = p, iaitu kebarangkalian nilai purata yang diukur berada dalam selang tersebut adalah sama dengan p. + +Ia melangkaui pengenalan ringkas kita untuk membincangkan secara terperinci bagaimana selang keyakinan ini dikira. Beberapa butiran lanjut boleh didapati [di Wikipedia](https://en.wikipedia.org/wiki/Confidence_interval). Secara ringkas, kita mentakrifkan taburan purata sampel yang dikira berbanding purata sebenar populasi, yang dipanggil **taburan pelajar**. + +> **Fakta menarik**: Taburan pelajar dinamakan sempena ahli matematik William Sealy Gosset, yang menerbitkan kertas kerjanya di bawah nama samaran "Student". Beliau bekerja di kilang bir Guinness, dan, menurut salah satu versi, majikannya tidak mahu orang awam mengetahui bahawa mereka menggunakan ujian statistik untuk menentukan kualiti bahan mentah. + +Jika kita ingin menganggarkan purata μ populasi kita dengan keyakinan p, kita perlu mengambil *(1-p)/2-th percentile* daripada taburan pelajar A, yang boleh diperoleh daripada jadual, atau dikira menggunakan beberapa fungsi terbina dalam perisian statistik (contohnya Python, R, dll.). Kemudian selang untuk μ akan diberikan oleh X±A*D/√n, di mana X adalah purata sampel yang diperoleh, D adalah sisihan piawai. + +> **Nota**: Kita juga mengabaikan perbincangan tentang konsep penting [darjah kebebasan](https://en.wikipedia.org/wiki/Degrees_of_freedom_(statistics)), yang penting berkaitan dengan taburan pelajar. Anda boleh merujuk kepada buku statistik yang lebih lengkap untuk memahami konsep ini dengan lebih mendalam. + +Contoh pengiraan selang keyakinan untuk berat dan tinggi diberikan dalam [notebook yang disertakan](notebook.ipynb). + +| p | Purata Berat | +|-----|-----------| +| 0.85 | 201.73±0.94 | +| 0.90 | 201.73±1.08 | +| 0.95 | 201.73±1.28 | + +Perhatikan bahawa semakin tinggi kebarangkalian keyakinan, semakin luas selang keyakinan. + +## Ujian Hipotesis + +Dalam dataset pemain besbol kita, terdapat pelbagai peranan pemain, yang boleh diringkaskan seperti berikut (lihat [notebook yang disertakan](notebook.ipynb) untuk melihat bagaimana jadual ini boleh dikira): + +| Peranan | Tinggi | Berat | Bilangan | +|------|--------|--------|-------| +| Catcher | 72.723684 | 204.328947 | 76 | +| Designated_Hitter | 74.222222 | 220.888889 | 18 | +| First_Baseman | 74.000000 | 213.109091 | 55 | +| Outfielder | 73.010309 | 199.113402 | 194 | +| Relief_Pitcher | 74.374603 | 203.517460 | 315 | +| Second_Baseman | 71.362069 | 184.344828 | 58 | +| Shortstop | 71.903846 | 182.923077 | 52 | +| Starting_Pitcher | 74.719457 | 205.163636 | 221 | +| Third_Baseman | 73.044444 | 200.955556 | 45 | + +Kita boleh perhatikan bahawa purata tinggi pemain first basemen lebih tinggi daripada pemain second basemen. Oleh itu, kita mungkin tergoda untuk membuat kesimpulan bahawa **first basemen lebih tinggi daripada second basemen**. + +> Pernyataan ini dipanggil **hipotesis**, kerana kita tidak tahu sama ada fakta ini benar atau tidak. + +Walau bagaimanapun, tidak selalu jelas sama ada kita boleh membuat kesimpulan ini. Daripada perbincangan di atas, kita tahu bahawa setiap purata mempunyai selang keyakinan yang berkaitan, dan oleh itu perbezaan ini mungkin hanya kesilapan statistik. Kita memerlukan cara yang lebih formal untuk menguji hipotesis kita. + +Mari kita kira selang keyakinan secara berasingan untuk tinggi pemain first dan second basemen: + +| Keyakinan | First Basemen | Second Basemen | +|------------|---------------|----------------| +| 0.85 | 73.62..74.38 | 71.04..71.69 | +| 0.90 | 73.56..74.44 | 70.99..71.73 | +| 0.95 | 73.47..74.53 | 70.92..71.81 | + +Kita boleh lihat bahawa di bawah semua tahap keyakinan, selang tidak bertindih. Ini membuktikan hipotesis kita bahawa first basemen lebih tinggi daripada second basemen. + +Secara lebih formal, masalah yang kita selesaikan adalah untuk melihat sama ada **dua taburan kebarangkalian adalah sama**, atau sekurang-kurangnya mempunyai parameter yang sama. Bergantung pada taburan, kita perlu menggunakan ujian yang berbeza untuk itu. Jika kita tahu bahawa taburan kita adalah normal, kita boleh menggunakan **[Student t-test](https://en.wikipedia.org/wiki/Student%27s_t-test)**. + +Dalam Student t-test, kita mengira **nilai-t**, yang menunjukkan perbezaan antara purata, dengan mengambil kira varians. Ia ditunjukkan bahawa nilai-t mengikuti **taburan pelajar**, yang membolehkan kita mendapatkan nilai ambang untuk tahap keyakinan **p** tertentu (ini boleh dikira, atau dirujuk dalam jadual numerik). Kita kemudian membandingkan nilai-t dengan ambang ini untuk meluluskan atau menolak hipotesis. + +Dalam Python, kita boleh menggunakan pakej **SciPy**, yang termasuk fungsi `ttest_ind` (selain daripada banyak fungsi statistik berguna lain!). Ia mengira nilai-t untuk kita, dan juga melakukan carian terbalik nilai p-keyakinan, supaya kita hanya perlu melihat keyakinan untuk membuat kesimpulan. + +Sebagai contoh, perbandingan kita antara tinggi pemain first dan second basemen memberikan hasil berikut: +```python +from scipy.stats import ttest_ind + +tval, pval = ttest_ind(df.loc[df['Role']=='First_Baseman',['Height']], df.loc[df['Role']=='Designated_Hitter',['Height']],equal_var=False) +print(f"T-value = {tval[0]:.2f}\nP-value: {pval[0]}") +``` +``` +T-value = 7.65 +P-value: 9.137321189738925e-12 +``` +Dalam kes kita, nilai p sangat rendah, yang bermaksud terdapat bukti kukuh yang menyokong bahawa first basemen lebih tinggi. + +Terdapat juga pelbagai jenis hipotesis lain yang mungkin kita ingin uji, contohnya: +* Untuk membuktikan bahawa sampel tertentu mengikuti taburan tertentu. Dalam kes kita, kita telah mengandaikan bahawa tinggi adalah taburan normal, tetapi itu memerlukan pengesahan statistik formal. +* Untuk membuktikan bahawa nilai purata sampel sepadan dengan nilai yang telah ditetapkan +* Untuk membandingkan purata beberapa sampel (contohnya, apakah perbezaan tahap kebahagiaan antara kumpulan umur yang berbeza) + +## Hukum Bilangan Besar dan Teorem Had Pusat + +Salah satu sebab mengapa taburan normal sangat penting adalah **teorem had pusat**. Anggap kita mempunyai sampel besar N nilai X1, ..., XN, yang diambil daripada mana-mana taburan dengan purata μ dan varians σ2. Kemudian, untuk N yang cukup besar (dengan kata lain, apabila N→∞), purata ΣiXi akan menjadi taburan normal, dengan purata μ dan varians σ2/N. + +> Cara lain untuk mentafsirkan teorem had pusat adalah dengan mengatakan bahawa tanpa mengira taburan, apabila anda mengira purata jumlah mana-mana nilai pemboleh ubah rawak, anda akan mendapat taburan normal. + +Daripada teorem had pusat, ia juga mengikuti bahawa, apabila N→∞, kebarangkalian purata sampel sama dengan μ menjadi 1. Ini dikenali sebagai **hukum bilangan besar**. + +## Kovarians dan Korelasi + +Salah satu perkara yang dilakukan oleh Sains Data adalah mencari hubungan antara data. Kita mengatakan bahawa dua urutan **berkorelasi** apabila mereka menunjukkan tingkah laku yang serupa pada masa yang sama, iaitu mereka sama-sama meningkat/menurun serentak, atau satu urutan meningkat apabila yang lain menurun dan sebaliknya. Dengan kata lain, nampaknya terdapat hubungan antara dua urutan. + +> Korelasi tidak semestinya menunjukkan hubungan sebab-akibat antara dua urutan; kadang-kadang kedua-dua pemboleh ubah boleh bergantung pada sebab luaran, atau ia boleh berlaku secara kebetulan bahawa kedua-dua urutan berkorelasi. Walau bagaimanapun, korelasi matematik yang kuat adalah petunjuk yang baik bahawa dua pemboleh ubah mempunyai hubungan tertentu. + +Secara matematik, konsep utama yang menunjukkan hubungan antara dua pemboleh ubah rawak adalah **kovarians**, yang dikira seperti ini: Cov(X,Y) = **E**\[(X-**E**(X))(Y-**E**(Y))\]. Kita mengira sisihan kedua-dua pemboleh ubah daripada nilai purata mereka, dan kemudian hasil sisihan tersebut. Jika kedua-dua pemboleh ubah menyimpang bersama, hasilnya akan sentiasa menjadi nilai positif, yang akan menambah kepada kovarians positif. Jika kedua-dua pemboleh ubah menyimpang tidak selaras (iaitu satu jatuh di bawah purata apabila yang lain meningkat di atas purata), kita akan sentiasa mendapat nombor negatif, yang akan menambah kepada kovarians negatif. Jika sisihan tidak bergantung, ia akan menambah kepada kira-kira sifar. + +Nilai mutlak kovarians tidak banyak memberitahu kita tentang sejauh mana korelasi itu, kerana ia bergantung pada magnitud nilai sebenar. Untuk menormalkannya, kita boleh membahagikan kovarians dengan sisihan piawai kedua-dua pemboleh ubah, untuk mendapatkan **korelasi**. Perkara yang baik ialah korelasi sentiasa dalam julat [-1,1], di mana 1 menunjukkan korelasi positif yang kuat antara nilai, -1 - korelasi negatif yang kuat, dan 0 - tiada korelasi sama sekali (pemboleh ubah adalah bebas). + +**Contoh**: Kita boleh mengira korelasi antara berat dan tinggi pemain besbol daripada dataset yang disebutkan di atas: +```python +print(np.corrcoef(weights,heights)) +``` +Hasilnya, kita mendapat **matriks korelasi** seperti ini: +``` +array([[1. , 0.52959196], + [0.52959196, 1. ]]) +``` + +> Matriks korelasi C boleh dikira untuk sebarang bilangan urutan input S1, ..., Sn. Nilai Cij adalah korelasi antara Si dan Sj, dan elemen diagonal sentiasa 1 (yang juga korelasi diri Si). + +Dalam kes kita, nilai 0.53 menunjukkan bahawa terdapat beberapa korelasi antara berat dan tinggi seseorang. Kita juga boleh membuat plot taburan satu nilai terhadap yang lain untuk melihat hubungan secara visual: + +![Hubungan antara berat dan tinggi](../../../../translated_images/weight-height-relationship.3f06bde4ca2aba9974182c4ef037ed602acd0fbbbbe2ca91cefd838a9e66bcf9.ms.png) + +> Lebih banyak contoh korelasi dan kovarians boleh didapati dalam [notebook yang disertakan](notebook.ipynb). + +## Kesimpulan + +Dalam bahagian ini, kita telah mempelajari: + +* sifat statistik asas data, seperti purata, varians, mod dan kuartil +* pelbagai taburan pemboleh ubah rawak, termasuk taburan normal +* bagaimana mencari korelasi antara pelbagai sifat +* bagaimana menggunakan alat matematik dan statistik untuk membuktikan beberapa hipotesis +* bagaimana mengira selang keyakinan untuk pemboleh ubah rawak berdasarkan sampel data + +Walaupun ini bukan senarai lengkap topik yang wujud dalam kebarangkalian dan statistik, ia sepatutnya cukup untuk memberi anda permulaan yang baik dalam kursus ini. + +## 🚀 Cabaran + +Gunakan kod sampel dalam notebook untuk menguji hipotesis lain bahawa: +1. First basemen lebih tua daripada second basemen +2. First basemen lebih tinggi daripada third basemen +3. Shortstops lebih tinggi daripada second basemen + +## [Kuiz selepas kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/7) + +## Kajian & Pembelajaran Sendiri + +Kebarangkalian dan statistik adalah topik yang sangat luas sehingga ia layak mendapat kursus tersendiri. Jika anda berminat untuk mendalami teori, anda mungkin ingin terus membaca beberapa buku berikut: + +1. [Carlos Fernandez-Granda](https://cims.nyu.edu/~cfgranda/) dari Universiti New York mempunyai nota kuliah yang hebat [Probability and Statistics for Data Science](https://cims.nyu.edu/~cfgranda/pages/stuff/probability_stats_for_DS.pdf) (tersedia dalam talian) +1. [Peter dan Andrew Bruce. Practical Statistics for Data Scientists.](https://www.oreilly.com/library/view/practical-statistics-for/9781491952955/) [[kod sampel dalam R](https://github.com/andrewgbruce/statistics-for-data-scientists)]. +1. [James D. Miller. Statistics for Data Science](https://www.packtpub.com/product/statistics-for-data-science/9781788290678) [[kod sampel dalam R](https://github.com/PacktPublishing/Statistics-for-Data-Science)] + +## Tugasan + +[Small Diabetes Study](assignment.md) + +## Kredit + +Pelajaran ini telah ditulis dengan ♥️ oleh [Dmitry Soshnikov](http://soshnikov.com) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/1-Introduction/04-stats-and-probability/assignment.md b/translations/ms/1-Introduction/04-stats-and-probability/assignment.md new file mode 100644 index 00000000..1c827a91 --- /dev/null +++ b/translations/ms/1-Introduction/04-stats-and-probability/assignment.md @@ -0,0 +1,40 @@ + +# Kajian Kecil Diabetes + +Dalam tugasan ini, kita akan bekerja dengan dataset kecil pesakit diabetes yang diambil dari [sini](https://www4.stat.ncsu.edu/~boos/var.select/diabetes.html). + +| | UMUR | JANTINA | BMI | BP | S1 | S2 | S3 | S4 | S5 | S6 | Y | +|---|------|---------|-----|----|----|----|----|----|----|----|----| +| 0 | 59 | 2 | 32.1 | 101. | 157 | 93.2 | 38.0 | 4. | 4.8598 | 87 | 151 | +| 1 | 48 | 1 | 21.6 | 87.0 | 183 | 103.2 | 70. | 3. | 3.8918 | 69 | 75 | +| 2 | 72 | 2 | 30.5 | 93.0 | 156 | 93.6 | 41.0 | 4.0 | 4. | 85 | 141 | +| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | + +## Arahan + +* Buka [notebook tugasan](assignment.ipynb) dalam persekitaran jupyter notebook +* Lengkapkan semua tugasan yang disenaraikan dalam notebook, iaitu: + * [ ] Kira nilai purata dan varians untuk semua nilai + * [ ] Plotkan boxplot untuk BMI, BP dan Y berdasarkan jantina + * [ ] Apakah taburan bagi pemboleh ubah Umur, Jantina, BMI dan Y? + * [ ] Uji korelasi antara pemboleh ubah yang berbeza dengan perkembangan penyakit (Y) + * [ ] Uji hipotesis bahawa tahap perkembangan diabetes adalah berbeza antara lelaki dan wanita + +## Rubrik + +Cemerlang | Memadai | Perlu Penambahbaikan +--- | --- | --- | +Semua tugasan yang diperlukan lengkap, digambarkan secara grafik dan dijelaskan | Kebanyakan tugasan lengkap, penjelasan atau kesimpulan daripada grafik dan/atau nilai yang diperoleh tidak disertakan | Hanya tugasan asas seperti pengiraan purata/varians dan plot asas lengkap, tiada kesimpulan dibuat daripada data + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/1-Introduction/README.md b/translations/ms/1-Introduction/README.md new file mode 100644 index 00000000..5a9d787c --- /dev/null +++ b/translations/ms/1-Introduction/README.md @@ -0,0 +1,31 @@ + +# Pengenalan kepada Sains Data + +![data in action](../../../translated_images/data.48e22bb7617d8d92188afbc4c48effb920ba79f5cebdc0652cd9f34bbbd90c18.ms.jpg) +> Foto oleh Stephen Dawson di Unsplash + +Dalam pelajaran ini, anda akan meneroka bagaimana Sains Data didefinisikan dan mempelajari tentang pertimbangan etika yang perlu diambil kira oleh seorang saintis data. Anda juga akan mempelajari bagaimana data didefinisikan serta sedikit tentang statistik dan kebarangkalian, bidang akademik teras dalam Sains Data. + +### Topik + +1. [Mendefinisikan Sains Data](01-defining-data-science/README.md) +2. [Etika Sains Data](02-ethics/README.md) +3. [Mendefinisikan Data](03-defining-data/README.md) +4. [Pengenalan kepada Statistik dan Kebarangkalian](04-stats-and-probability/README.md) + +### Kredit + +Pelajaran ini ditulis dengan ❤️ oleh [Nitya Narasimhan](https://twitter.com/nitya) dan [Dmitry Soshnikov](https://twitter.com/shwars). + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/2-Working-With-Data/05-relational-databases/README.md b/translations/ms/2-Working-With-Data/05-relational-databases/README.md new file mode 100644 index 00000000..fd7ed0e2 --- /dev/null +++ b/translations/ms/2-Working-With-Data/05-relational-databases/README.md @@ -0,0 +1,195 @@ + +# Bekerja dengan Data: Pangkalan Data Relasi + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/05-RelationalData.png)| +|:---:| +| Bekerja dengan Data: Pangkalan Data Relasi - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +Kemungkinan besar anda pernah menggunakan hamparan elektronik (spreadsheet) untuk menyimpan maklumat. Anda mempunyai satu set baris dan lajur, di mana baris mengandungi maklumat (atau data), dan lajur menerangkan maklumat tersebut (kadang-kadang dipanggil metadata). Pangkalan data relasi dibina berdasarkan prinsip teras ini, iaitu lajur dan baris dalam jadual, yang membolehkan anda menyebarkan maklumat ke dalam pelbagai jadual. Ini membolehkan anda bekerja dengan data yang lebih kompleks, mengelakkan penduaan, dan mempunyai fleksibiliti dalam cara anda meneroka data. Mari kita terokai konsep pangkalan data relasi. + +## [Kuiz pra-kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/8) + +## Semuanya bermula dengan jadual + +Pangkalan data relasi mempunyai jadual sebagai terasnya. Sama seperti hamparan elektronik, jadual adalah koleksi lajur dan baris. Baris mengandungi data atau maklumat yang ingin kita kerjakan, seperti nama bandar atau jumlah hujan tahunan. Lajur pula menerangkan data yang disimpan. + +Mari kita mulakan penerokaan dengan mencipta jadual untuk menyimpan maklumat tentang bandar. Kita mungkin bermula dengan nama dan negara mereka. Anda boleh menyimpan ini dalam jadual seperti berikut: + +| Bandar | Negara | +| -------- | ------------- | +| Tokyo | Jepun | +| Atlanta | Amerika Syarikat | +| Auckland | New Zealand | + +Perhatikan nama lajur **bandar**, **negara**, dan **populasi** yang menerangkan data yang disimpan, dan setiap baris mempunyai maklumat tentang satu bandar. + +## Kekurangan pendekatan jadual tunggal + +Kemungkinan besar, jadual di atas kelihatan agak biasa bagi anda. Mari kita tambahkan beberapa data tambahan ke dalam pangkalan data kita yang sedang berkembang - hujan tahunan (dalam milimeter). Kita akan fokus pada tahun 2018, 2019, dan 2020. Jika kita menambahkannya untuk Tokyo, ia mungkin kelihatan seperti ini: + +| Bandar | Negara | Tahun | Jumlah | +| ------ | ------ | ----- | ------ | +| Tokyo | Jepun | 2020 | 1690 | +| Tokyo | Jepun | 2019 | 1874 | +| Tokyo | Jepun | 2018 | 1445 | + +Apa yang anda perhatikan tentang jadual kita? Anda mungkin perasan kita mengulang nama dan negara bandar berulang kali. Ini boleh mengambil banyak ruang penyimpanan, dan sebahagian besarnya tidak perlu untuk mempunyai salinan berganda. Lagipun, Tokyo hanya mempunyai satu nama yang kita minati. + +Baiklah, mari kita cuba sesuatu yang lain. Mari kita tambahkan lajur baru untuk setiap tahun: + +| Bandar | Negara | 2018 | 2019 | 2020 | +| -------- | ------------- | ---- | ---- | ---- | +| Tokyo | Jepun | 1445 | 1874 | 1690 | +| Atlanta | Amerika Syarikat | 1779 | 1111 | 1683 | +| Auckland | New Zealand | 1386 | 942 | 1176 | + +Walaupun ini mengelakkan penduaan baris, ia menambah beberapa cabaran lain. Kita perlu mengubah struktur jadual kita setiap kali ada tahun baru. Selain itu, apabila data kita berkembang, mempunyai tahun sebagai lajur akan menjadikannya lebih sukar untuk mendapatkan dan mengira nilai. + +Inilah sebabnya mengapa kita memerlukan pelbagai jadual dan hubungan. Dengan memecahkan data kita, kita boleh mengelakkan penduaan dan mempunyai lebih banyak fleksibiliti dalam cara kita bekerja dengan data. + +## Konsep hubungan + +Mari kita kembali kepada data kita dan tentukan bagaimana kita mahu memecahkannya. Kita tahu kita mahu menyimpan nama dan negara untuk bandar kita, jadi ini mungkin paling sesuai dalam satu jadual. + +| Bandar | Negara | +| -------- | ------------- | +| Tokyo | Jepun | +| Atlanta | Amerika Syarikat | +| Auckland | New Zealand | + +Tetapi sebelum kita mencipta jadual seterusnya, kita perlu memikirkan cara untuk merujuk setiap bandar. Kita memerlukan beberapa bentuk pengenal pasti, ID atau (dalam istilah pangkalan data teknikal) kunci utama. Kunci utama adalah nilai yang digunakan untuk mengenal pasti satu baris tertentu dalam jadual. Walaupun ini boleh berdasarkan nilai itu sendiri (kita boleh menggunakan nama bandar, sebagai contoh), ia hampir selalu harus menjadi nombor atau pengenal pasti lain. Kita tidak mahu ID berubah kerana ia akan merosakkan hubungan. Dalam kebanyakan kes, kunci utama atau ID akan menjadi nombor yang dijana secara automatik. + +> ✅ Kunci utama sering disingkatkan sebagai PK + +### bandar + +| bandar_id | Bandar | Negara | +| --------- | -------- | ------------- | +| 1 | Tokyo | Jepun | +| 2 | Atlanta | Amerika Syarikat | +| 3 | Auckland | New Zealand | + +> ✅ Anda akan perasan kita menggunakan istilah "id" dan "kunci utama" secara bergantian sepanjang pelajaran ini. Konsep ini juga terpakai kepada DataFrames, yang akan anda terokai kemudian. DataFrames tidak menggunakan istilah "kunci utama", namun anda akan perasan ia berfungsi dengan cara yang hampir sama. + +Dengan jadual bandar kita dicipta, mari kita simpan data hujan. Daripada menduplikasi maklumat penuh tentang bandar, kita boleh menggunakan ID. Kita juga harus memastikan jadual yang baru dicipta mempunyai lajur *id* juga, kerana semua jadual harus mempunyai ID atau kunci utama. + +### hujan + +| hujan_id | bandar_id | Tahun | Jumlah | +| -------- | --------- | ----- | ------ | +| 1 | 1 | 2018 | 1445 | +| 2 | 1 | 2019 | 1874 | +| 3 | 1 | 2020 | 1690 | +| 4 | 2 | 2018 | 1779 | +| 5 | 2 | 2019 | 1111 | +| 6 | 2 | 2020 | 1683 | +| 7 | 3 | 2018 | 1386 | +| 8 | 3 | 2019 | 942 | +| 9 | 3 | 2020 | 1176 | + +Perhatikan lajur **bandar_id** dalam jadual **hujan** yang baru dicipta. Lajur ini mengandungi nilai yang merujuk kepada ID dalam jadual **bandar**. Dalam istilah data relasi teknikal, ini dipanggil **kunci asing**; ia adalah kunci utama dari jadual lain. Anda boleh menganggapnya sebagai rujukan atau penunjuk. **bandar_id** 1 merujuk kepada Tokyo. + +> [!NOTE] Kunci asing sering disingkatkan sebagai FK + +## Mendapatkan data + +Dengan data kita dipisahkan ke dalam dua jadual, anda mungkin tertanya-tanya bagaimana kita mendapatkannya semula. Jika kita menggunakan pangkalan data relasi seperti MySQL, SQL Server atau Oracle, kita boleh menggunakan bahasa yang dipanggil Structured Query Language atau SQL. SQL (kadang-kadang disebut sebagai sequel) adalah bahasa standard yang digunakan untuk mendapatkan dan mengubah data dalam pangkalan data relasi. + +Untuk mendapatkan data, anda menggunakan arahan `SELECT`. Pada dasarnya, anda **memilih** lajur yang anda ingin lihat **dari** jadual yang mengandungi mereka. Jika anda ingin memaparkan hanya nama bandar, anda boleh menggunakan yang berikut: + +```sql +SELECT city +FROM cities; + +-- Output: +-- Tokyo +-- Atlanta +-- Auckland +``` + +`SELECT` adalah tempat anda menyenaraikan lajur, dan `FROM` adalah tempat anda menyenaraikan jadual. + +> [NOTE] Sintaks SQL tidak peka huruf besar-kecil, bermakna `select` dan `SELECT` bermaksud perkara yang sama. Walau bagaimanapun, bergantung pada jenis pangkalan data yang anda gunakan, lajur dan jadual mungkin peka huruf besar-kecil. Oleh itu, adalah amalan terbaik untuk sentiasa menganggap segala-galanya dalam pengaturcaraan sebagai peka huruf besar-kecil. Apabila menulis pertanyaan SQL, konvensyen biasa adalah untuk meletakkan kata kunci dalam huruf besar semua. + +Pertanyaan di atas akan memaparkan semua bandar. Bayangkan kita hanya mahu memaparkan bandar di New Zealand. Kita memerlukan beberapa bentuk penapis. Kata kunci SQL untuk ini adalah `WHERE`, atau "di mana sesuatu adalah benar". + +```sql +SELECT city +FROM cities +WHERE country = 'New Zealand'; + +-- Output: +-- Auckland +``` + +## Menggabungkan data + +Sehingga kini kita telah mendapatkan data dari satu jadual. Sekarang kita mahu menggabungkan data dari kedua-dua **bandar** dan **hujan**. Ini dilakukan dengan *menggabungkan* mereka bersama. Anda akan secara efektif mencipta sambungan antara dua jadual, dan memadankan nilai dari satu lajur dari setiap jadual. + +Dalam contoh kita, kita akan memadankan lajur **bandar_id** dalam **hujan** dengan lajur **bandar_id** dalam **bandar**. Ini akan memadankan nilai hujan dengan bandar masing-masing. Jenis gabungan yang akan kita lakukan dipanggil *inner* join, bermakna jika ada baris yang tidak sepadan dengan apa-apa dari jadual lain, ia tidak akan dipaparkan. Dalam kes kita, setiap bandar mempunyai data hujan, jadi semuanya akan dipaparkan. + +Mari kita dapatkan data hujan untuk tahun 2019 untuk semua bandar kita. + +Kita akan melakukannya secara berperingkat. Langkah pertama adalah untuk menggabungkan data bersama dengan menunjukkan lajur untuk sambungan - **bandar_id** seperti yang disorot sebelum ini. + +```sql +SELECT cities.city + rainfall.amount +FROM cities + INNER JOIN rainfall ON cities.city_id = rainfall.city_id +``` + +Kita telah menyorot dua lajur yang kita mahu, dan fakta bahawa kita mahu menggabungkan jadual bersama dengan **bandar_id**. Sekarang kita boleh menambah pernyataan `WHERE` untuk menapis hanya tahun 2019. + +```sql +SELECT cities.city + rainfall.amount +FROM cities + INNER JOIN rainfall ON cities.city_id = rainfall.city_id +WHERE rainfall.year = 2019 + +-- Output + +-- city | amount +-- -------- | ------ +-- Tokyo | 1874 +-- Atlanta | 1111 +-- Auckland | 942 +``` + +## Ringkasan + +Pangkalan data relasi berpusat pada membahagikan maklumat antara pelbagai jadual yang kemudian digabungkan semula untuk paparan dan analisis. Ini memberikan tahap fleksibiliti yang tinggi untuk melakukan pengiraan dan memanipulasi data. Anda telah melihat konsep teras pangkalan data relasi, dan bagaimana untuk melakukan gabungan antara dua jadual. + +## 🚀 Cabaran + +Terdapat banyak pangkalan data relasi yang tersedia di internet. Anda boleh meneroka data dengan menggunakan kemahiran yang telah anda pelajari di atas. + +## Kuiz Pasca-Kuliah + +## [Kuiz pasca-kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/9) + +## Ulasan & Kajian Kendiri + +Terdapat beberapa sumber yang tersedia di [Microsoft Learn](https://docs.microsoft.com/learn?WT.mc_id=academic-77958-bethanycheum) untuk anda meneruskan penerokaan konsep SQL dan pangkalan data relasi + +- [Huraikan konsep data relasi](https://docs.microsoft.com//learn/modules/describe-concepts-of-relational-data?WT.mc_id=academic-77958-bethanycheum) +- [Mula Query dengan Transact-SQL](https://docs.microsoft.com//learn/paths/get-started-querying-with-transact-sql?WT.mc_id=academic-77958-bethanycheum) (Transact-SQL adalah versi SQL) +- [Kandungan SQL di Microsoft Learn](https://docs.microsoft.com/learn/browse/?products=azure-sql-database%2Csql-server&expanded=azure&WT.mc_id=academic-77958-bethanycheum) + +## Tugasan + +[Judul Tugasan](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/2-Working-With-Data/05-relational-databases/assignment.md b/translations/ms/2-Working-With-Data/05-relational-databases/assignment.md new file mode 100644 index 00000000..34425b2a --- /dev/null +++ b/translations/ms/2-Working-With-Data/05-relational-databases/assignment.md @@ -0,0 +1,73 @@ + +# Memaparkan data lapangan terbang + +Anda telah diberikan [pangkalan data](https://raw.githubusercontent.com/Microsoft/Data-Science-For-Beginners/main/2-Working-With-Data/05-relational-databases/airports.db) yang dibina menggunakan [SQLite](https://sqlite.org/index.html) yang mengandungi maklumat tentang lapangan terbang. Skema pangkalan data ditunjukkan di bawah. Anda akan menggunakan [sambungan SQLite](https://marketplace.visualstudio.com/items?itemName=alexcvzz.vscode-sqlite&WT.mc_id=academic-77958-bethanycheum) dalam [Visual Studio Code](https://code.visualstudio.com?WT.mc_id=academic-77958-bethanycheum) untuk memaparkan maklumat tentang lapangan terbang di pelbagai bandar. + +## Arahan + +Untuk memulakan tugasan ini, anda perlu melakukan beberapa langkah. Anda perlu memasang beberapa alat dan memuat turun pangkalan data contoh. + +### Sediakan sistem anda + +Anda boleh menggunakan Visual Studio Code dan sambungan SQLite untuk berinteraksi dengan pangkalan data. + +1. Pergi ke [code.visualstudio.com](https://code.visualstudio.com?WT.mc_id=academic-77958-bethanycheum) dan ikuti arahan untuk memasang Visual Studio Code +1. Pasang sambungan [SQLite extension](https://marketplace.visualstudio.com/items?itemName=alexcvzz.vscode-sqlite&WT.mc_id=academic-77958-bethanycheum) seperti yang diarahkan pada halaman Marketplace + +### Muat turun dan buka pangkalan data + +Seterusnya, anda akan memuat turun dan membuka pangkalan data. + +1. Muat turun [fail pangkalan data dari GitHub](https://raw.githubusercontent.com/Microsoft/Data-Science-For-Beginners/main/2-Working-With-Data/05-relational-databases/airports.db) dan simpan ke dalam direktori +1. Buka Visual Studio Code +1. Buka pangkalan data dalam sambungan SQLite dengan memilih **Ctl-Shift-P** (atau **Cmd-Shift-P** pada Mac) dan taip `SQLite: Open database` +1. Pilih **Choose database from file** dan buka fail **airports.db** yang anda muat turun sebelum ini +1. Selepas membuka pangkalan data (anda tidak akan melihat sebarang kemas kini pada skrin), buat tetingkap pertanyaan baru dengan memilih **Ctl-Shift-P** (atau **Cmd-Shift-P** pada Mac) dan taip `SQLite: New query` + +Setelah dibuka, tetingkap pertanyaan baru boleh digunakan untuk menjalankan pernyataan SQL terhadap pangkalan data. Anda boleh menggunakan arahan **Ctl-Shift-Q** (atau **Cmd-Shift-Q** pada Mac) untuk menjalankan pertanyaan terhadap pangkalan data. + +> [!NOTE] Untuk maklumat lanjut tentang sambungan SQLite, anda boleh merujuk kepada [dokumentasi](https://marketplace.visualstudio.com/items?itemName=alexcvzz.vscode-sqlite&WT.mc_id=academic-77958-bethanycheum) + +## Skema pangkalan data + +Skema pangkalan data adalah reka bentuk dan struktur jadualnya. Pangkalan data **airports** mempunyai dua jadual, `cities`, yang mengandungi senarai bandar di United Kingdom dan Ireland, dan `airports`, yang mengandungi senarai semua lapangan terbang. Oleh kerana beberapa bandar mungkin mempunyai lebih daripada satu lapangan terbang, dua jadual telah dibuat untuk menyimpan maklumat ini. Dalam latihan ini, anda akan menggunakan gabungan (joins) untuk memaparkan maklumat bagi pelbagai bandar. + +| Cities | +| ---------------- | +| id (PK, integer) | +| city (teks) | +| country (teks) | + +| Airports | +| -------------------------------- | +| id (PK, integer) | +| name (teks) | +| code (teks) | +| city_id (FK kepada id dalam **Cities**) | + +## Tugasan + +Cipta pertanyaan untuk mendapatkan maklumat berikut: + +1. semua nama bandar dalam jadual `Cities` +1. semua bandar di Ireland dalam jadual `Cities` +1. semua nama lapangan terbang beserta bandar dan negara mereka +1. semua lapangan terbang di London, United Kingdom + +## Rubrik + +| Cemerlang | Memadai | Perlu Penambahbaikan | +| --------- | -------- | -------------------- | + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/2-Working-With-Data/06-non-relational/README.md b/translations/ms/2-Working-With-Data/06-non-relational/README.md new file mode 100644 index 00000000..845d4ae0 --- /dev/null +++ b/translations/ms/2-Working-With-Data/06-non-relational/README.md @@ -0,0 +1,158 @@ + +# Bekerja dengan Data: Data Tidak Relasional + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/06-NoSQL.png)| +|:---:| +|Bekerja dengan Data NoSQL - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +## [Kuiz Pra-Kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/10) + +Data tidak terhad kepada pangkalan data relasional. Pelajaran ini memberi tumpuan kepada data tidak relasional dan akan merangkumi asas-asas spreadsheet dan NoSQL. + +## Spreadsheet + +Spreadsheet adalah cara yang popular untuk menyimpan dan meneroka data kerana ia memerlukan persediaan yang lebih mudah dan cepat untuk dimulakan. Dalam pelajaran ini, anda akan mempelajari komponen asas spreadsheet, serta formula dan fungsi. Contoh-contoh akan ditunjukkan menggunakan Microsoft Excel, tetapi kebanyakan bahagian dan topik akan mempunyai nama dan langkah yang serupa jika dibandingkan dengan perisian spreadsheet lain. + +![Sebuah buku kerja Microsoft Excel kosong dengan dua helaian kerja](../../../../translated_images/parts-of-spreadsheet.120711c82aa18a45c3e62a491a15bba0a31ab0e9db407ec022702fed8ffd89bf.ms.png) + +Spreadsheet adalah fail yang boleh diakses dalam sistem fail komputer, peranti, atau sistem fail berasaskan awan. Perisian itu sendiri mungkin berasaskan pelayar atau aplikasi yang perlu dipasang pada komputer atau dimuat turun sebagai aplikasi. Dalam Excel, fail-fail ini juga dikenali sebagai **workbook**, dan istilah ini akan digunakan sepanjang pelajaran ini. + +Sebuah workbook mengandungi satu atau lebih **worksheet**, di mana setiap worksheet dilabelkan dengan tab. Dalam sebuah worksheet terdapat segi empat tepat yang dipanggil **cell**, yang mengandungi data sebenar. Sebuah cell adalah persilangan antara baris dan lajur, di mana lajur dilabelkan dengan huruf abjad dan baris dilabelkan secara numerik. Beberapa spreadsheet akan mengandungi header pada beberapa baris pertama untuk menerangkan data dalam cell. + +Dengan elemen asas workbook Excel ini, kita akan menggunakan contoh daripada [Microsoft Templates](https://templates.office.com/) yang berfokus pada inventori untuk meneroka beberapa bahagian tambahan dalam spreadsheet. + +### Menguruskan Inventori + +Fail spreadsheet bernama "InventoryExample" adalah spreadsheet yang diformatkan untuk item dalam inventori yang mengandungi tiga worksheet, di mana tab-tabnya dilabelkan "Inventory List", "Inventory Pick List" dan "Bin Lookup". Baris 4 dalam worksheet Inventory List adalah header, yang menerangkan nilai setiap cell dalam lajur header. + +![Formula yang disorot daripada senarai inventori contoh dalam Microsoft Excel](../../../../translated_images/formula-excel.ad1068c220892f5ead570d12f2394897961d31a5043a1dd4e6fc5d7690c7a14e.ms.png) + +Terdapat situasi di mana sebuah cell bergantung pada nilai cell lain untuk menghasilkan nilainya. Spreadsheet Inventory List menjejaki kos setiap item dalam inventori, tetapi bagaimana jika kita perlu mengetahui nilai keseluruhan inventori? [**Formula**](https://support.microsoft.com/en-us/office/overview-of-formulas-34519a4e-1e8d-4f4b-84d4-d642c4f63263) melaksanakan tindakan pada data cell dan digunakan untuk mengira kos inventori dalam contoh ini. Spreadsheet ini menggunakan formula dalam lajur Inventory Value untuk mengira nilai setiap item dengan mendarabkan kuantiti di bawah header QTY dan kosnya di bawah header COST. Dengan mengklik dua kali atau menyorot sebuah cell, anda akan melihat formula. Anda akan perasan bahawa formula bermula dengan tanda sama dengan, diikuti oleh pengiraan atau operasi. + +![Fungsi yang disorot daripada senarai inventori contoh dalam Microsoft Excel](../../../../translated_images/function-excel.be2ae4feddc10ca089f3d4363040d93b7fd046c8d4f83ba975ec46483ee99895.ms.png) + +Kita boleh menggunakan formula lain untuk menambah semua nilai dalam Inventory Value untuk mendapatkan jumlah keseluruhannya. Ini boleh dikira dengan menambah setiap cell untuk menghasilkan jumlah, tetapi itu boleh menjadi tugas yang membosankan. Excel mempunyai [**fungsi**](https://support.microsoft.com/en-us/office/sum-function-043e1c7d-7726-4e80-8f32-07b23e057f89), atau formula yang telah ditetapkan untuk melaksanakan pengiraan pada nilai cell. Fungsi memerlukan argumen, iaitu nilai yang diperlukan untuk melaksanakan pengiraan ini. Apabila fungsi memerlukan lebih daripada satu argumen, ia perlu disenaraikan dalam susunan tertentu atau fungsi mungkin tidak mengira nilai yang betul. Contoh ini menggunakan fungsi SUM, dan menggunakan nilai dalam Inventory Value sebagai argumen untuk menambah dan menghasilkan jumlah yang disenaraikan di bawah baris 3, lajur B (juga dirujuk sebagai B3). + +## NoSQL + +NoSQL adalah istilah umum untuk pelbagai cara menyimpan data tidak relasional dan boleh ditafsirkan sebagai "non-SQL", "tidak relasional" atau "bukan hanya SQL". Jenis sistem pangkalan data ini boleh dikategorikan kepada 4 jenis. + +![Perwakilan grafik pangkalan data key-value yang menunjukkan 4 kunci unik yang dikaitkan dengan 4 nilai yang berbeza](../../../../translated_images/kv-db.e8f2b75686bbdfcba0c827b9272c10ae0821611ea0fe98429b9d13194383afa6.ms.png) +> Sumber daripada [Blog Michał Białecki](https://www.michalbialecki.com/2018/03/18/azure-cosmos-db-key-value-database-cloud/) + +Pangkalan data [Key-value](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data#keyvalue-data-stores) memadankan kunci unik, yang merupakan pengenal pasti unik yang dikaitkan dengan nilai. Pasangan ini disimpan menggunakan [hash table](https://www.hackerearth.com/practice/data-structures/hash-tables/basics-of-hash-tables/tutorial/) dengan fungsi hashing yang sesuai. + +![Perwakilan grafik pangkalan data graph yang menunjukkan hubungan antara orang, minat mereka dan lokasi](../../../../translated_images/graph-db.d13629152f79a9dac895b20fa7d841d4d4d6f6008b1382227c3bbd200fd4cfa1.ms.png) +> Sumber daripada [Microsoft](https://docs.microsoft.com/en-us/azure/cosmos-db/graph/graph-introduction#graph-database-by-example) + +Pangkalan data [Graph](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data#graph-data-stores) menerangkan hubungan dalam data dan diwakili sebagai koleksi nod dan tepi. Sebuah nod mewakili entiti, sesuatu yang wujud di dunia nyata seperti pelajar atau penyata bank. Tepi mewakili hubungan antara dua entiti. Setiap nod dan tepi mempunyai sifat yang memberikan maklumat tambahan tentang setiap nod dan tepi. + +![Perwakilan grafik pangkalan data columnar yang menunjukkan pangkalan data pelanggan dengan dua keluarga lajur bernama Identity dan Contact Info](../../../../translated_images/columnar-db.ffcfe73c3e9063a8c8f93f8ace85e1200863584b1e324eb5159d8ca10f62ec04.ms.png) + +Pangkalan data [Columnar](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data#columnar-data-stores) menyusun data ke dalam lajur dan baris seperti struktur data relasional tetapi setiap lajur dibahagikan kepada kumpulan yang dipanggil keluarga lajur, di mana semua data di bawah satu lajur berkaitan dan boleh diambil dan diubah dalam satu unit. + +### Pangkalan Data Dokumen dengan Azure Cosmos DB + +Pangkalan data [Dokumen](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data#document-data-stores) dibina berdasarkan konsep pangkalan data key-value dan terdiri daripada siri medan dan objek. Bahagian ini akan meneroka pangkalan data dokumen dengan emulator Cosmos DB. + +Pangkalan data Cosmos DB memenuhi definisi "Bukan Hanya SQL", di mana pangkalan data dokumen Cosmos DB bergantung pada SQL untuk menyoal data. [Pelajaran sebelumnya](../05-relational-databases/README.md) mengenai SQL merangkumi asas-asas bahasa ini, dan kita akan dapat menggunakan beberapa pertanyaan yang sama pada pangkalan data dokumen di sini. Kita akan menggunakan Emulator Cosmos DB, yang membolehkan kita mencipta dan meneroka pangkalan data dokumen secara tempatan pada komputer. Baca lebih lanjut tentang Emulator [di sini](https://docs.microsoft.com/en-us/azure/cosmos-db/local-emulator?tabs=ssl-netstd21). + +Sebuah dokumen adalah koleksi medan dan nilai objek, di mana medan menerangkan apa yang diwakili oleh nilai objek. Di bawah adalah contoh dokumen. + +```json +{ + "firstname": "Eva", + "age": 44, + "id": "8c74a315-aebf-4a16-bb38-2430a9896ce5", + "_rid": "bHwDAPQz8s0BAAAAAAAAAA==", + "_self": "dbs/bHwDAA==/colls/bHwDAPQz8s0=/docs/bHwDAPQz8s0BAAAAAAAAAA==/", + "_etag": "\"00000000-0000-0000-9f95-010a691e01d7\"", + "_attachments": "attachments/", + "_ts": 1630544034 +} +``` + +Medan yang menarik dalam dokumen ini adalah: `firstname`, `id`, dan `age`. Medan lain dengan garis bawah dihasilkan oleh Cosmos DB. + +#### Meneroka Data dengan Emulator Cosmos DB + +Anda boleh memuat turun dan memasang emulator [untuk Windows di sini](https://aka.ms/cosmosdb-emulator). Rujuk [dokumentasi ini](https://docs.microsoft.com/en-us/azure/cosmos-db/local-emulator?tabs=ssl-netstd21#run-on-linux-macos) untuk pilihan cara menjalankan Emulator untuk macOS dan Linux. + +Emulator melancarkan tetingkap pelayar, di mana paparan Explorer membolehkan anda meneroka dokumen. + +![Paparan Explorer Emulator Cosmos DB](../../../../translated_images/cosmosdb-emulator-explorer.a1c80b1347206fe2f30f88fc123821636587d04fc5a56a9eb350c7da6b31f361.ms.png) + +Jika anda mengikuti langkah ini, klik pada "Start with Sample" untuk menjana pangkalan data contoh bernama SampleDB. Jika anda mengembangkan SampleDB dengan mengklik anak panah, anda akan menemui bekas bernama `Persons`, di mana bekas ini memegang koleksi item, iaitu dokumen dalam bekas tersebut. Anda boleh meneroka empat dokumen individu di bawah `Items`. + +![Meneroka data contoh dalam Emulator Cosmos DB](../../../../translated_images/cosmosdb-emulator-persons.bf640586a7077c8985dfd3071946465c8e074c722c7c202d6d714de99a93b90a.ms.png) + +#### Menyoal Data Dokumen dengan Emulator Cosmos DB + +Kita juga boleh menyoal data contoh dengan mengklik butang SQL Query baru (butang kedua dari kiri). + +`SELECT * FROM c` mengembalikan semua dokumen dalam bekas. Mari tambahkan klausa where dan cari semua orang yang berumur di bawah 40 tahun. + +`SELECT * FROM c where c.age < 40` + +![Menjalankan pertanyaan SELECT pada data contoh dalam Emulator Cosmos DB untuk mencari dokumen yang mempunyai nilai medan umur kurang daripada 40](../../../../translated_images/cosmosdb-emulator-persons-query.6905ebb497e3cd047cd96e55a0a03f69ce1b91b2b3d8c147e617b746b22b7e33.ms.png) + +Pertanyaan ini mengembalikan dua dokumen, perhatikan nilai umur untuk setiap dokumen adalah kurang daripada 40. + +#### JSON dan Dokumen + +Jika anda biasa dengan JavaScript Object Notation (JSON), anda akan perasan bahawa dokumen kelihatan serupa dengan JSON. Terdapat fail `PersonsData.json` dalam direktori ini dengan lebih banyak data yang boleh anda muat naik ke bekas Persons dalam Emulator melalui butang `Upload Item`. + +Dalam kebanyakan kes, API yang mengembalikan data JSON boleh dipindahkan dan disimpan secara langsung dalam pangkalan data dokumen. Di bawah adalah dokumen lain, ia mewakili tweet daripada akaun Twitter Microsoft yang diperoleh menggunakan API Twitter, kemudian dimasukkan ke dalam Cosmos DB. + +```json +{ + "created_at": "2021-08-31T19:03:01.000Z", + "id": "1432780985872142341", + "text": "Blank slate. Like this tweet if you’ve ever painted in Microsoft Paint before. https://t.co/cFeEs8eOPK", + "_rid": "dhAmAIUsA4oHAAAAAAAAAA==", + "_self": "dbs/dhAmAA==/colls/dhAmAIUsA4o=/docs/dhAmAIUsA4oHAAAAAAAAAA==/", + "_etag": "\"00000000-0000-0000-9f84-a0958ad901d7\"", + "_attachments": "attachments/", + "_ts": 1630537000 +``` + +Medan yang menarik dalam dokumen ini adalah: `created_at`, `id`, dan `text`. + +## 🚀 Cabaran + +Terdapat fail `TwitterData.json` yang boleh anda muat naik ke pangkalan data SampleDB. Disarankan agar anda menambahkannya ke bekas yang berasingan. Ini boleh dilakukan dengan: + +1. Mengklik butang bekas baru di bahagian atas kanan +1. Memilih pangkalan data sedia ada (SampleDB) dan mencipta id bekas untuk bekas tersebut +1. Menetapkan partition key kepada `/id` +1. Mengklik OK (anda boleh mengabaikan maklumat lain dalam paparan ini kerana ini adalah set data kecil yang dijalankan secara tempatan pada mesin anda) +1. Membuka bekas baru anda dan memuat naik fail Twitter Data dengan butang `Upload Item` + +Cuba jalankan beberapa pertanyaan SELECT untuk mencari dokumen yang mempunyai perkataan Microsoft dalam medan teks. Petunjuk: cuba gunakan [kata kunci LIKE](https://docs.microsoft.com/en-us/azure/cosmos-db/sql/sql-query-keywords#using-like-with-the--wildcard-character) + +## [Kuiz Pasca-Kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/11) + +## Ulasan & Kajian Kendiri + +- Terdapat beberapa pemformatan dan ciri tambahan yang ditambah pada spreadsheet ini yang tidak diliputi dalam pelajaran ini. Microsoft mempunyai [perpustakaan dokumentasi dan video yang besar](https://support.microsoft.com/excel) tentang Excel jika anda berminat untuk belajar lebih lanjut. + +- Dokumentasi seni bina ini memperincikan ciri-ciri dalam pelbagai jenis data tidak relasional: [Data Tidak Relasional dan NoSQL](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data) + +- Cosmos DB adalah pangkalan data tidak relasional berasaskan awan yang juga boleh menyimpan pelbagai jenis NoSQL yang disebutkan dalam pelajaran ini. Ketahui lebih lanjut tentang jenis-jenis ini dalam [Modul Pembelajaran Microsoft Cosmos DB](https://docs.microsoft.com/en-us/learn/paths/work-with-nosql-data-in-azure-cosmos-db/) + +## Tugasan + +[Soda Profits](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/2-Working-With-Data/06-non-relational/assignment.md b/translations/ms/2-Working-With-Data/06-non-relational/assignment.md new file mode 100644 index 00000000..6d85dc5d --- /dev/null +++ b/translations/ms/2-Working-With-Data/06-non-relational/assignment.md @@ -0,0 +1,33 @@ + +# Keuntungan Soda + +## Arahan + +[Spreadsheet Coca Cola Co](../../../../2-Working-With-Data/06-non-relational/CocaColaCo.xlsx) kekurangan beberapa pengiraan. Tugas anda adalah: + +1. Kira Keuntungan Kasar bagi FY '15, '16, '17, dan '18 + - Keuntungan Kasar = Hasil Operasi Bersih - Kos Barang Dijual +1. Kira purata semua keuntungan kasar. Cuba lakukan ini dengan fungsi. + - Purata = Jumlah keuntungan kasar dibahagi dengan bilangan tahun fiskal (10) + - Dokumentasi mengenai [fungsi AVERAGE](https://support.microsoft.com/en-us/office/average-function-047bac88-d466-426c-a32b-8f33eb960cf6) +1. Ini adalah fail Excel, tetapi ia sepatutnya boleh disunting dalam mana-mana platform spreadsheet + +[Kredit sumber data kepada Yiyi Wang](https://www.kaggle.com/yiyiwang0826/cocacola-excel) + +## Rubrik + +Cemerlang | Memadai | Perlu Penambahbaikan +--- | --- | --- + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/2-Working-With-Data/07-python/README.md b/translations/ms/2-Working-With-Data/07-python/README.md new file mode 100644 index 00000000..c3f7eb1d --- /dev/null +++ b/translations/ms/2-Working-With-Data/07-python/README.md @@ -0,0 +1,292 @@ + +# Bekerja dengan Data: Python dan Perpustakaan Pandas + +| ![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png) | +| :-------------------------------------------------------------------------------------------------------: | +| Bekerja dengan Python - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +[![Video Pengenalan](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.ms.png)](https://youtu.be/dZjWOGbsN4Y) + +Walaupun pangkalan data menawarkan cara yang sangat cekap untuk menyimpan data dan membuat pertanyaan menggunakan bahasa pertanyaan, cara yang paling fleksibel untuk memproses data adalah dengan menulis program anda sendiri untuk memanipulasi data. Dalam banyak kes, membuat pertanyaan pangkalan data adalah cara yang lebih berkesan. Namun, dalam beberapa kes di mana pemprosesan data yang lebih kompleks diperlukan, ia tidak dapat dilakukan dengan mudah menggunakan SQL. +Pemprosesan data boleh diprogramkan dalam mana-mana bahasa pengaturcaraan, tetapi terdapat bahasa tertentu yang lebih tinggi tahapnya dalam bekerja dengan data. Saintis data biasanya memilih salah satu daripada bahasa berikut: + +* **[Python](https://www.python.org/)**, bahasa pengaturcaraan serba guna, yang sering dianggap sebagai salah satu pilihan terbaik untuk pemula kerana kesederhanaannya. Python mempunyai banyak perpustakaan tambahan yang boleh membantu anda menyelesaikan banyak masalah praktikal, seperti mengekstrak data anda dari arkib ZIP, atau menukar gambar kepada skala kelabu. Selain sains data, Python juga sering digunakan untuk pembangunan web. +* **[R](https://www.r-project.org/)** adalah alat tradisional yang dibangunkan dengan pemprosesan data statistik dalam fikiran. Ia juga mengandungi repositori perpustakaan yang besar (CRAN), menjadikannya pilihan yang baik untuk pemprosesan data. Walau bagaimanapun, R bukan bahasa pengaturcaraan serba guna, dan jarang digunakan di luar domain sains data. +* **[Julia](https://julialang.org/)** adalah bahasa lain yang dibangunkan khusus untuk sains data. Ia bertujuan untuk memberikan prestasi yang lebih baik daripada Python, menjadikannya alat yang hebat untuk eksperimen saintifik. + +Dalam pelajaran ini, kita akan memberi tumpuan kepada penggunaan Python untuk pemprosesan data ringkas. Kami akan mengandaikan anda mempunyai pengetahuan asas tentang bahasa ini. Jika anda ingin mendalami Python, anda boleh merujuk kepada salah satu sumber berikut: + +* [Belajar Python dengan Cara Menyeronokkan menggunakan Grafik Turtle dan Fraktal](https://github.com/shwars/pycourse) - Kursus pengenalan ringkas berasaskan GitHub ke dalam Pengaturcaraan Python +* [Ambil Langkah Pertama Anda dengan Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Laluan Pembelajaran di [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) + +Data boleh datang dalam pelbagai bentuk. Dalam pelajaran ini, kita akan mempertimbangkan tiga bentuk data - **data tabular**, **teks**, dan **imej**. + +Kami akan memberi tumpuan kepada beberapa contoh pemprosesan data, bukannya memberikan gambaran keseluruhan penuh tentang semua perpustakaan berkaitan. Ini akan membolehkan anda memahami idea utama tentang apa yang mungkin dilakukan, dan meninggalkan anda dengan pemahaman tentang di mana untuk mencari penyelesaian kepada masalah anda apabila anda memerlukannya. + +> **Nasihat paling berguna**. Apabila anda perlu melakukan operasi tertentu pada data yang anda tidak tahu bagaimana untuk melakukannya, cuba cari di internet. [Stackoverflow](https://stackoverflow.com/) biasanya mengandungi banyak contoh kod berguna dalam Python untuk banyak tugas biasa. + + + +## [Kuiz Pra-Kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/12) + +## Data Tabular dan Dataframe + +Anda sudah bertemu dengan data tabular apabila kita bercakap tentang pangkalan data relasi. Apabila anda mempunyai banyak data, dan ia terkandung dalam banyak jadual yang saling berkaitan, ia sememangnya masuk akal untuk menggunakan SQL untuk bekerja dengannya. Walau bagaimanapun, terdapat banyak kes di mana kita mempunyai jadual data, dan kita perlu mendapatkan **pemahaman** atau **wawasan** tentang data ini, seperti taburan, korelasi antara nilai, dan sebagainya. Dalam sains data, terdapat banyak kes di mana kita perlu melakukan beberapa transformasi data asal, diikuti dengan visualisasi. Kedua-dua langkah ini boleh dilakukan dengan mudah menggunakan Python. + +Terdapat dua perpustakaan paling berguna dalam Python yang boleh membantu anda menangani data tabular: +* **[Pandas](https://pandas.pydata.org/)** membolehkan anda memanipulasi **Dataframe**, yang serupa dengan jadual relasi. Anda boleh mempunyai lajur bernama, dan melakukan pelbagai operasi pada baris, lajur, dan dataframe secara umum. +* **[Numpy](https://numpy.org/)** adalah perpustakaan untuk bekerja dengan **tensor**, iaitu **array** pelbagai dimensi. Array mempunyai nilai jenis asas yang sama, dan ia lebih ringkas daripada dataframe, tetapi ia menawarkan lebih banyak operasi matematik, dan menghasilkan kurang overhead. + +Terdapat juga beberapa perpustakaan lain yang anda patut tahu: +* **[Matplotlib](https://matplotlib.org/)** adalah perpustakaan yang digunakan untuk visualisasi data dan melukis graf +* **[SciPy](https://www.scipy.org/)** adalah perpustakaan dengan beberapa fungsi saintifik tambahan. Kita sudah menemui perpustakaan ini semasa bercakap tentang kebarangkalian dan statistik + +Berikut adalah sekeping kod yang biasanya anda gunakan untuk mengimport perpustakaan ini pada permulaan program Python anda: +```python +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt +from scipy import ... # you need to specify exact sub-packages that you need +``` + +Pandas berpusat pada beberapa konsep asas. + +### Siri + +**Siri** adalah urutan nilai, serupa dengan senarai atau array numpy. Perbezaan utama adalah siri juga mempunyai **indeks**, dan apabila kita beroperasi pada siri (contohnya, menambahnya), indeks diambil kira. Indeks boleh sesederhana nombor baris integer (ia adalah indeks yang digunakan secara lalai apabila mencipta siri daripada senarai atau array), atau ia boleh mempunyai struktur yang kompleks, seperti selang tarikh. + +> **Nota**: Terdapat beberapa kod pengenalan Pandas dalam buku nota yang disertakan [`notebook.ipynb`](notebook.ipynb). Kami hanya menggariskan beberapa contoh di sini, dan anda dialu-alukan untuk melihat buku nota penuh. + +Pertimbangkan contoh: kita ingin menganalisis jualan kedai aiskrim kita. Mari kita hasilkan siri nombor jualan (bilangan item yang dijual setiap hari) untuk beberapa tempoh masa: + +```python +start_date = "Jan 1, 2020" +end_date = "Mar 31, 2020" +idx = pd.date_range(start_date,end_date) +print(f"Length of index is {len(idx)}") +items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx) +items_sold.plot() +``` +![Plot Siri Masa](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.ms.png) + +Sekarang anggaplah setiap minggu kita menganjurkan pesta untuk rakan-rakan, dan kita mengambil tambahan 10 pek aiskrim untuk pesta. Kita boleh mencipta siri lain, diindeks mengikut minggu, untuk menunjukkan itu: +```python +additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W")) +``` +Apabila kita menambah dua siri bersama, kita mendapat jumlah keseluruhan: +```python +total_items = items_sold.add(additional_items,fill_value=0) +total_items.plot() +``` +![Plot Siri Masa](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.ms.png) + +> **Nota** bahawa kita tidak menggunakan sintaks mudah `total_items+additional_items`. Jika kita melakukannya, kita akan mendapat banyak nilai `NaN` (*Not a Number*) dalam siri hasil. Ini kerana terdapat nilai yang hilang untuk beberapa titik indeks dalam siri `additional_items`, dan menambah `NaN` kepada apa-apa akan menghasilkan `NaN`. Oleh itu, kita perlu menentukan parameter `fill_value` semasa penambahan. + +Dengan siri masa, kita juga boleh **menyampel semula** siri dengan selang masa yang berbeza. Sebagai contoh, anggaplah kita ingin mengira purata jumlah jualan bulanan. Kita boleh menggunakan kod berikut: +```python +monthly = total_items.resample("1M").mean() +ax = monthly.plot(kind='bar') +``` +![Purata Siri Masa Bulanan](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.ms.png) + +### DataFrame + +DataFrame pada dasarnya adalah koleksi siri dengan indeks yang sama. Kita boleh menggabungkan beberapa siri bersama menjadi DataFrame: +```python +a = pd.Series(range(1,10)) +b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9)) +df = pd.DataFrame([a,b]) +``` +Ini akan mencipta jadual mendatar seperti ini: +| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | +| --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- | +| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | +| 1 | I | like | to | use | Python | and | Pandas | very | much | + +Kita juga boleh menggunakan Siri sebagai lajur, dan menentukan nama lajur menggunakan kamus: +```python +df = pd.DataFrame({ 'A' : a, 'B' : b }) +``` +Ini akan memberikan kita jadual seperti ini: + +| | A | B | +| --- | --- | ------ | +| 0 | 1 | I | +| 1 | 2 | like | +| 2 | 3 | to | +| 3 | 4 | use | +| 4 | 5 | Python | +| 5 | 6 | and | +| 6 | 7 | Pandas | +| 7 | 8 | very | +| 8 | 9 | much | + +**Nota** bahawa kita juga boleh mendapatkan susun atur jadual ini dengan mentransposkan jadual sebelumnya, contohnya dengan menulis +```python +df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' }) +``` +Di sini `.T` bermaksud operasi mentransposkan DataFrame, iaitu menukar baris dan lajur, dan operasi `rename` membolehkan kita menamakan semula lajur untuk sepadan dengan contoh sebelumnya. + +Berikut adalah beberapa operasi paling penting yang boleh kita lakukan pada DataFrame: + +**Pemilihan lajur**. Kita boleh memilih lajur individu dengan menulis `df['A']` - operasi ini mengembalikan Siri. Kita juga boleh memilih subset lajur ke dalam DataFrame lain dengan menulis `df[['B','A']]` - ini mengembalikan DataFrame lain. + +**Penapisan** hanya baris tertentu berdasarkan kriteria. Sebagai contoh, untuk meninggalkan hanya baris dengan lajur `A` lebih besar daripada 5, kita boleh menulis `df[df['A']>5]`. + +> **Nota**: Cara penapisan berfungsi adalah seperti berikut. Ungkapan `df['A']<5` mengembalikan siri boolean, yang menunjukkan sama ada ungkapan itu `True` atau `False` untuk setiap elemen siri asal `df['A']`. Apabila siri boolean digunakan sebagai indeks, ia mengembalikan subset baris dalam DataFrame. Oleh itu, tidak mungkin menggunakan ungkapan boolean Python sewenang-wenangnya, contohnya, menulis `df[df['A']>5 and df['A']<7]` adalah salah. Sebaliknya, anda harus menggunakan operasi khas `&` pada siri boolean, menulis `df[(df['A']>5) & (df['A']<7)]` (*kurungan adalah penting di sini*). + +**Mencipta lajur boleh kira baru**. Kita boleh dengan mudah mencipta lajur boleh kira baru untuk DataFrame kita dengan menggunakan ungkapan intuitif seperti ini: +```python +df['DivA'] = df['A']-df['A'].mean() +``` +Contoh ini mengira perbezaan A daripada nilai puratanya. Apa yang sebenarnya berlaku di sini ialah kita mengira siri, dan kemudian menetapkan siri ini ke sebelah kiri, mencipta lajur lain. Oleh itu, kita tidak boleh menggunakan sebarang operasi yang tidak serasi dengan siri, contohnya, kod di bawah adalah salah: +```python +# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi" +df['LenB'] = len(df['B']) # <- Wrong result +``` +Contoh terakhir, walaupun secara sintaksis betul, memberikan kita hasil yang salah, kerana ia menetapkan panjang siri `B` kepada semua nilai dalam lajur, dan bukan panjang elemen individu seperti yang kita maksudkan. + +Jika kita perlu mengira ungkapan kompleks seperti ini, kita boleh menggunakan fungsi `apply`. Contoh terakhir boleh ditulis seperti berikut: +```python +df['LenB'] = df['B'].apply(lambda x : len(x)) +# or +df['LenB'] = df['B'].apply(len) +``` + +Selepas operasi di atas, kita akan mendapat DataFrame berikut: + +| | A | B | DivA | LenB | +| --- | --- | ------ | ---- | ---- | +| 0 | 1 | I | -4.0 | 1 | +| 1 | 2 | like | -3.0 | 4 | +| 2 | 3 | to | -2.0 | 2 | +| 3 | 4 | use | -1.0 | 3 | +| 4 | 5 | Python | 0.0 | 6 | +| 5 | 6 | and | 1.0 | 3 | +| 6 | 7 | Pandas | 2.0 | 6 | +| 7 | 8 | very | 3.0 | 4 | +| 8 | 9 | much | 4.0 | 4 | + +**Memilih baris berdasarkan nombor** boleh dilakukan menggunakan konstruk `iloc`. Sebagai contoh, untuk memilih 5 baris pertama dari DataFrame: +```python +df.iloc[:5] +``` + +**Pengelompokan** sering digunakan untuk mendapatkan hasil yang serupa dengan *jadual pangsi* dalam Excel. Anggaplah kita ingin mengira nilai purata lajur `A` untuk setiap nombor `LenB` yang diberikan. Kemudian kita boleh mengelompokkan DataFrame kita mengikut `LenB`, dan memanggil `mean`: +```python +df.groupby(by='LenB').mean() +``` +Jika kita perlu mengira purata dan bilangan elemen dalam kumpulan, maka kita boleh menggunakan fungsi `aggregate` yang lebih kompleks: +```python +df.groupby(by='LenB') \ + .aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \ + .rename(columns={ 'DivA' : 'Count', 'A' : 'Mean'}) +``` +Ini memberikan kita jadual berikut: + +| LenB | Count | Mean | +| ---- | ----- | -------- | +| 1 | 1 | 1.000000 | +| 2 | 1 | 3.000000 | +| 3 | 2 | 5.000000 | +| 4 | 3 | 6.333333 | +| 6 | 2 | 6.000000 | + +### Mendapatkan Data +Kita telah melihat betapa mudahnya membina Series dan DataFrames daripada objek Python. Namun, data biasanya datang dalam bentuk fail teks atau jadual Excel. Nasib baik, Pandas menawarkan cara mudah untuk memuatkan data dari cakera. Sebagai contoh, membaca fail CSV semudah ini: +```python +df = pd.read_csv('file.csv') +``` +Kita akan melihat lebih banyak contoh memuatkan data, termasuk mengambilnya dari laman web luaran, dalam bahagian "Cabaran". + +### Mencetak dan Memplot + +Seorang Saintis Data sering perlu meneroka data, jadi adalah penting untuk dapat memvisualisasikannya. Apabila DataFrame besar, banyak kali kita hanya ingin memastikan kita melakukan semuanya dengan betul dengan mencetak beberapa baris pertama. Ini boleh dilakukan dengan memanggil `df.head()`. Jika anda menjalankannya dari Jupyter Notebook, ia akan mencetak DataFrame dalam bentuk jadual yang kemas. + +Kita juga telah melihat penggunaan fungsi `plot` untuk memvisualisasikan beberapa kolum. Walaupun `plot` sangat berguna untuk banyak tugas, dan menyokong pelbagai jenis graf melalui parameter `kind=`, anda sentiasa boleh menggunakan pustaka `matplotlib` mentah untuk memplot sesuatu yang lebih kompleks. Kita akan membincangkan visualisasi data secara terperinci dalam pelajaran kursus yang berasingan. + +Gambaran keseluruhan ini merangkumi konsep paling penting dalam Pandas, namun, pustaka ini sangat kaya, dan tiada had kepada apa yang boleh anda lakukan dengannya! Mari kita gunakan pengetahuan ini untuk menyelesaikan masalah tertentu. + +## 🚀 Cabaran 1: Menganalisis Penyebaran COVID + +Masalah pertama yang akan kita fokuskan ialah pemodelan penyebaran wabak COVID-19. Untuk melakukannya, kita akan menggunakan data tentang bilangan individu yang dijangkiti di pelbagai negara, yang disediakan oleh [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) di [Johns Hopkins University](https://jhu.edu/). Dataset tersedia di [Repositori GitHub ini](https://github.com/CSSEGISandData/COVID-19). + +Oleh kerana kita ingin menunjukkan cara menangani data, kami mengajak anda untuk membuka [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) dan membacanya dari atas ke bawah. Anda juga boleh melaksanakan sel, dan melakukan beberapa cabaran yang telah kami tinggalkan untuk anda di penghujungnya. + +![COVID Spread](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.ms.png) + +> Jika anda tidak tahu cara menjalankan kod dalam Jupyter Notebook, lihat [artikel ini](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). + +## Bekerja dengan Data Tidak Berstruktur + +Walaupun data sering datang dalam bentuk jadual, dalam beberapa kes kita perlu menangani data yang kurang berstruktur, contohnya, teks atau imej. Dalam kes ini, untuk menerapkan teknik pemprosesan data yang telah kita lihat di atas, kita perlu **mengekstrak** data berstruktur. Berikut adalah beberapa contoh: + +* Mengekstrak kata kunci daripada teks, dan melihat seberapa kerap kata kunci tersebut muncul +* Menggunakan rangkaian neural untuk mengekstrak maklumat tentang objek dalam gambar +* Mendapatkan maklumat tentang emosi orang dalam suapan kamera video + +## 🚀 Cabaran 2: Menganalisis Kertas COVID + +Dalam cabaran ini, kita akan meneruskan topik pandemik COVID, dan fokus pada pemprosesan kertas saintifik mengenai subjek ini. Terdapat [Dataset CORD-19](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) dengan lebih daripada 7000 (pada masa penulisan) kertas mengenai COVID, tersedia dengan metadata dan abstrak (dan untuk kira-kira separuh daripadanya juga disediakan teks penuh). + +Contoh penuh menganalisis dataset ini menggunakan perkhidmatan kognitif [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum) diterangkan [dalam catatan blog ini](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Kita akan membincangkan versi analisis yang dipermudahkan. + +> **NOTE**: Kami tidak menyediakan salinan dataset sebagai sebahagian daripada repositori ini. Anda mungkin perlu memuat turun fail [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) daripada [dataset ini di Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Pendaftaran dengan Kaggle mungkin diperlukan. Anda juga boleh memuat turun dataset tanpa pendaftaran [di sini](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), tetapi ia akan termasuk semua teks penuh selain daripada fail metadata. + +Buka [`notebook-papers.ipynb`](notebook-papers.ipynb) dan bacalah dari atas ke bawah. Anda juga boleh melaksanakan sel, dan melakukan beberapa cabaran yang telah kami tinggalkan untuk anda di penghujungnya. + +![Covid Medical Treatment](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.ms.png) + +## Memproses Data Imej + +Baru-baru ini, model AI yang sangat berkuasa telah dibangunkan yang membolehkan kita memahami imej. Terdapat banyak tugas yang boleh diselesaikan menggunakan rangkaian neural yang telah dilatih, atau perkhidmatan awan. Beberapa contoh termasuk: + +* **Pengelasan Imej**, yang boleh membantu anda mengkategorikan imej ke dalam salah satu kelas yang telah ditentukan. Anda boleh melatih pengelas imej anda sendiri dengan mudah menggunakan perkhidmatan seperti [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) +* **Pengesanan Objek** untuk mengesan objek yang berbeza dalam imej. Perkhidmatan seperti [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) boleh mengesan sejumlah objek biasa, dan anda boleh melatih model [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) untuk mengesan beberapa objek tertentu yang menarik. +* **Pengesanan Wajah**, termasuk pengesanan Umur, Jantina dan Emosi. Ini boleh dilakukan melalui [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum). + +Semua perkhidmatan awan ini boleh dipanggil menggunakan [Python SDKs](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum), dan dengan itu boleh dimasukkan dengan mudah ke dalam aliran kerja penerokaan data anda. + +Berikut adalah beberapa contoh penerokaan data daripada sumber data imej: +* Dalam catatan blog [Cara Belajar Sains Data Tanpa Pengekodan](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) kami meneroka foto Instagram, cuba memahami apa yang membuatkan orang memberikan lebih banyak suka kepada foto. Kami mula-mula mengekstrak sebanyak mungkin maklumat daripada gambar menggunakan [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), dan kemudian menggunakan [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) untuk membina model yang boleh ditafsirkan. +* Dalam [Bengkel Kajian Wajah](https://github.com/CloudAdvocacy/FaceStudies) kami menggunakan [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) untuk mengekstrak emosi orang dalam gambar dari acara, untuk cuba memahami apa yang membuatkan orang gembira. + +## Kesimpulan + +Sama ada anda sudah mempunyai data berstruktur atau tidak berstruktur, menggunakan Python anda boleh melakukan semua langkah berkaitan pemprosesan dan pemahaman data. Ia mungkin cara paling fleksibel untuk pemprosesan data, dan itulah sebabnya majoriti saintis data menggunakan Python sebagai alat utama mereka. Mempelajari Python secara mendalam mungkin idea yang baik jika anda serius tentang perjalanan sains data anda! + +## [Kuiz selepas kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/13) + +## Ulasan & Kajian Kendiri + +**Buku** +* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662) + +**Sumber Dalam Talian** +* Tutorial rasmi [10 minutes to Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) +* [Dokumentasi tentang Visualisasi Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html) + +**Belajar Python** +* [Belajar Python dengan Cara Menarik menggunakan Turtle Graphics dan Fractals](https://github.com/shwars/pycourse) +* [Ambil Langkah Pertama Anda dengan Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Laluan Pembelajaran di [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) + +## Tugasan + +[Lakukan kajian data yang lebih terperinci untuk cabaran di atas](assignment.md) + +## Kredit + +Pelajaran ini telah ditulis dengan ♥️ oleh [Dmitry Soshnikov](http://soshnikov.com) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/2-Working-With-Data/07-python/assignment.md b/translations/ms/2-Working-With-Data/07-python/assignment.md new file mode 100644 index 00000000..a9822cde --- /dev/null +++ b/translations/ms/2-Working-With-Data/07-python/assignment.md @@ -0,0 +1,37 @@ + +# Tugasan untuk Pemprosesan Data dalam Python + +Dalam tugasan ini, kami akan meminta anda untuk menghuraikan kod yang telah kami mula bangunkan dalam cabaran kami. Tugasan ini terdiri daripada dua bahagian: + +## Pemodelan Penyebaran COVID-19 + + - [ ] Plot graf *R* untuk 5-6 negara berbeza dalam satu plot untuk perbandingan, atau menggunakan beberapa plot bersebelahan. + - [ ] Lihat bagaimana bilangan kematian dan pemulihan berkorelasi dengan bilangan kes jangkitan. + - [ ] Ketahui berapa lama penyakit biasa berlangsung dengan mengaitkan kadar jangkitan dan kadar kematian secara visual dan mencari beberapa anomali. Anda mungkin perlu melihat negara yang berbeza untuk mengetahuinya. + - [ ] Kira kadar kematian dan bagaimana ia berubah dari masa ke masa. *Anda mungkin ingin mengambil kira tempoh penyakit dalam beberapa hari untuk mengalihkan satu siri masa sebelum melakukan pengiraan.* + +## Analisis Kertas COVID-19 + +- [ ] Bina matriks kehadiran bersama untuk pelbagai ubat, dan lihat ubat mana yang sering muncul bersama (iaitu disebut dalam satu abstrak). Anda boleh mengubah kod untuk membina matriks kehadiran bersama untuk ubat dan diagnosis. +- [ ] Visualisasikan matriks ini menggunakan peta haba. +- [ ] Sebagai matlamat tambahan, visualisasikan kehadiran bersama ubat menggunakan [chord diagram](https://en.wikipedia.org/wiki/Chord_diagram). [Perpustakaan ini](https://pypi.org/project/chord/) mungkin membantu anda melukis chord diagram. +- [ ] Sebagai satu lagi matlamat tambahan, ekstrak dos pelbagai ubat (seperti **400mg** dalam *ambil 400mg chloroquine setiap hari*) menggunakan ungkapan biasa, dan bina dataframe yang menunjukkan dos berbeza untuk ubat yang berbeza. **Nota**: pertimbangkan nilai berangka yang berada dalam jarak teks yang dekat dengan nama ubat. + +## Rubrik + +Cemerlang | Memadai | Perlu Penambahbaikan +--- | --- | -- | +Semua tugasan selesai, digambarkan secara grafik dan dijelaskan, termasuk sekurang-kurangnya satu daripada dua matlamat tambahan | Lebih daripada 5 tugasan selesai, tiada matlamat tambahan dicuba, atau hasilnya tidak jelas | Kurang daripada 5 (tetapi lebih daripada 3) tugasan selesai, visualisasi tidak membantu untuk menunjukkan maksud + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/2-Working-With-Data/08-data-preparation/README.md b/translations/ms/2-Working-With-Data/08-data-preparation/README.md new file mode 100644 index 00000000..f5fe9132 --- /dev/null +++ b/translations/ms/2-Working-With-Data/08-data-preparation/README.md @@ -0,0 +1,346 @@ + +# Bekerja dengan Data: Penyediaan Data + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/08-DataPreparation.png)| +|:---:| +|Penyediaan Data - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +## [Kuiz Pra-Kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/14) + +Bergantung kepada sumbernya, data mentah mungkin mengandungi beberapa ketidakkonsistenan yang boleh menyebabkan cabaran dalam analisis dan pemodelan. Dalam erti kata lain, data ini boleh dikategorikan sebagai "kotor" dan perlu dibersihkan. Pelajaran ini memberi tumpuan kepada teknik untuk membersihkan dan mengubah data bagi menangani cabaran data yang hilang, tidak tepat, atau tidak lengkap. Topik yang dibincangkan dalam pelajaran ini akan menggunakan Python dan pustaka Pandas dan akan [ditunjukkan dalam notebook](notebook.ipynb) dalam direktori ini. + +## Kepentingan membersihkan data + +- **Kemudahan penggunaan dan pengulangan**: Apabila data disusun dan dinormalisasi dengan betul, ia lebih mudah untuk dicari, digunakan, dan dikongsi dengan orang lain. + +- **Konsistensi**: Sains data sering memerlukan kerja dengan lebih daripada satu set data, di mana set data dari pelbagai sumber perlu digabungkan. Memastikan setiap set data individu mempunyai standardisasi yang sama akan memastikan data masih berguna apabila digabungkan menjadi satu set data. + +- **Ketepatan model**: Data yang telah dibersihkan meningkatkan ketepatan model yang bergantung padanya. + +## Matlamat dan strategi pembersihan yang biasa + +- **Meneroka set data**: Penerokaan data, yang dibincangkan dalam [pelajaran kemudian](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/4-Data-Science-Lifecycle/15-analyzing), boleh membantu anda mengenal pasti data yang perlu dibersihkan. Melihat nilai secara visual dalam set data boleh menetapkan jangkaan tentang bagaimana selebihnya akan kelihatan, atau memberikan idea tentang masalah yang boleh diselesaikan. Penerokaan boleh melibatkan pertanyaan asas, visualisasi, dan pensampelan. + +- **Pemformatan**: Bergantung kepada sumbernya, data boleh mempunyai ketidakkonsistenan dalam cara ia disampaikan. Ini boleh menyebabkan masalah dalam mencari dan mewakili nilai, di mana ia dilihat dalam set data tetapi tidak diwakili dengan betul dalam visualisasi atau hasil pertanyaan. Masalah pemformatan biasa melibatkan penyelesaian ruang kosong, tarikh, dan jenis data. Menyelesaikan isu pemformatan biasanya bergantung kepada orang yang menggunakan data. Sebagai contoh, standard tentang cara tarikh dan nombor dipersembahkan boleh berbeza mengikut negara. + +- **Penduaan**: Data yang mempunyai lebih daripada satu kejadian boleh menghasilkan keputusan yang tidak tepat dan biasanya perlu dibuang. Ini boleh berlaku apabila menggabungkan dua atau lebih set data. Walau bagaimanapun, terdapat keadaan di mana penduaan dalam set data gabungan mengandungi bahagian yang boleh memberikan maklumat tambahan dan mungkin perlu dikekalkan. + +- **Data yang hilang**: Data yang hilang boleh menyebabkan ketidaktepatan serta keputusan yang lemah atau berat sebelah. Kadangkala ini boleh diselesaikan dengan "memuat semula" data, mengisi nilai yang hilang dengan pengiraan dan kod seperti Python, atau hanya membuang nilai dan data yang berkaitan. Terdapat banyak sebab mengapa data mungkin hilang dan tindakan yang diambil untuk menyelesaikan nilai yang hilang ini boleh bergantung kepada bagaimana dan mengapa ia hilang. + +## Meneroka maklumat DataFrame +> **Matlamat pembelajaran:** Pada akhir subseksyen ini, anda seharusnya selesa mencari maklumat umum tentang data yang disimpan dalam DataFrame pandas. + +Setelah anda memuatkan data anda ke dalam pandas, ia kemungkinan besar akan berada dalam DataFrame (rujuk [pelajaran sebelumnya](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/2-Working-With-Data/07-python#dataframe) untuk gambaran terperinci). Walau bagaimanapun, jika set data dalam DataFrame anda mempunyai 60,000 baris dan 400 lajur, bagaimana anda mula memahami apa yang anda sedang kerjakan? Nasib baik, [pandas](https://pandas.pydata.org/) menyediakan beberapa alat yang mudah untuk melihat maklumat keseluruhan tentang DataFrame selain daripada beberapa baris pertama dan terakhir. + +Untuk meneroka fungsi ini, kita akan mengimport pustaka Python scikit-learn dan menggunakan set data ikonik: **set data Iris**. + +```python +import pandas as pd +from sklearn.datasets import load_iris + +iris = load_iris() +iris_df = pd.DataFrame(data=iris['data'], columns=iris['feature_names']) +``` +| |panjang sepal (cm)|lebar sepal (cm)|panjang petal (cm)|lebar petal (cm)| +|----------------------------------------|------------------|----------------|------------------|----------------| +|0 |5.1 |3.5 |1.4 |0.2 | +|1 |4.9 |3.0 |1.4 |0.2 | +|2 |4.7 |3.2 |1.3 |0.2 | +|3 |4.6 |3.1 |1.5 |0.2 | +|4 |5.0 |3.6 |1.4 |0.2 | + +- **DataFrame.info**: Untuk memulakan, kaedah `info()` digunakan untuk mencetak ringkasan kandungan yang terdapat dalam `DataFrame`. Mari kita lihat set data ini untuk melihat apa yang kita ada: +```python +iris_df.info() +``` +``` +RangeIndex: 150 entries, 0 to 149 +Data columns (total 4 columns): + # Column Non-Null Count Dtype +--- ------ -------------- ----- + 0 sepal length (cm) 150 non-null float64 + 1 sepal width (cm) 150 non-null float64 + 2 petal length (cm) 150 non-null float64 + 3 petal width (cm) 150 non-null float64 +dtypes: float64(4) +memory usage: 4.8 KB +``` +Daripada ini, kita tahu bahawa set data *Iris* mempunyai 150 entri dalam empat lajur tanpa entri null. Semua data disimpan sebagai nombor titik terapung 64-bit. + +- **DataFrame.head()**: Seterusnya, untuk memeriksa kandungan sebenar `DataFrame`, kita menggunakan kaedah `head()`. Mari lihat beberapa baris pertama `iris_df` kita: +```python +iris_df.head() +``` +``` + sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) +0 5.1 3.5 1.4 0.2 +1 4.9 3.0 1.4 0.2 +2 4.7 3.2 1.3 0.2 +3 4.6 3.1 1.5 0.2 +4 5.0 3.6 1.4 0.2 +``` +- **DataFrame.tail()**: Sebaliknya, untuk memeriksa beberapa baris terakhir `DataFrame`, kita menggunakan kaedah `tail()`: +```python +iris_df.tail() +``` +``` + sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) +145 6.7 3.0 5.2 2.3 +146 6.3 2.5 5.0 1.9 +147 6.5 3.0 5.2 2.0 +148 6.2 3.4 5.4 2.3 +149 5.9 3.0 5.1 1.8 +``` +> **Kesimpulan:** Walaupun hanya dengan melihat metadata tentang maklumat dalam DataFrame atau beberapa nilai pertama dan terakhir, anda boleh mendapatkan idea segera tentang saiz, bentuk, dan kandungan data yang anda sedang kerjakan. + +## Menangani Data yang Hilang +> **Matlamat pembelajaran:** Pada akhir subseksyen ini, anda seharusnya tahu cara menggantikan atau membuang nilai null daripada DataFrame. + +Kebanyakan masa, set data yang anda ingin gunakan (atau perlu gunakan) mempunyai nilai yang hilang di dalamnya. Cara data yang hilang ditangani membawa kompromi halus yang boleh mempengaruhi analisis akhir anda dan hasil dunia sebenar. + +Pandas menangani nilai yang hilang dengan dua cara. Yang pertama telah anda lihat sebelum ini dalam bahagian sebelumnya: `NaN`, atau Not a Number. Ini sebenarnya adalah nilai khas yang merupakan sebahagian daripada spesifikasi titik terapung IEEE dan hanya digunakan untuk menunjukkan nilai titik terapung yang hilang. + +Untuk nilai yang hilang selain daripada titik terapung, pandas menggunakan objek Python `None`. Walaupun mungkin kelihatan mengelirukan bahawa anda akan menemui dua jenis nilai yang pada dasarnya mengatakan perkara yang sama, terdapat alasan programatik yang kukuh untuk pilihan reka bentuk ini dan, dalam praktiknya, pendekatan ini membolehkan pandas memberikan kompromi yang baik untuk kebanyakan kes. Walau bagaimanapun, kedua-dua `None` dan `NaN` membawa sekatan yang perlu anda perhatikan berkaitan dengan cara ia boleh digunakan. + +Ketahui lebih lanjut tentang `NaN` dan `None` daripada [notebook](https://github.com/microsoft/Data-Science-For-Beginners/blob/main/4-Data-Science-Lifecycle/15-analyzing/notebook.ipynb)! + +- **Mengesan nilai null**: Dalam `pandas`, kaedah `isnull()` dan `notnull()` adalah kaedah utama anda untuk mengesan data null. Kedua-duanya mengembalikan topeng Boolean ke atas data anda. Kita akan menggunakan `numpy` untuk nilai `NaN`: +```python +import numpy as np + +example1 = pd.Series([0, np.nan, '', None]) +example1.isnull() +``` +``` +0 False +1 True +2 False +3 True +dtype: bool +``` +Perhatikan dengan teliti outputnya. Adakah ada yang mengejutkan anda? Walaupun `0` adalah null aritmetik, ia tetap merupakan integer yang sah dan pandas menganggapnya sebagai sedemikian. `''` sedikit lebih halus. Walaupun kita menggunakannya dalam Bahagian 1 untuk mewakili nilai string kosong, ia tetap merupakan objek string dan bukan representasi null seperti yang dianggap oleh pandas. + +Sekarang, mari kita balikkan ini dan gunakan kaedah ini dengan cara yang lebih seperti yang akan anda gunakan dalam praktik. Anda boleh menggunakan topeng Boolean secara langsung sebagai indeks ``Series`` atau ``DataFrame``, yang boleh berguna apabila cuba bekerja dengan nilai yang hilang (atau hadir) secara terasing. + +> **Kesimpulan**: Kedua-dua kaedah `isnull()` dan `notnull()` menghasilkan hasil yang serupa apabila anda menggunakannya dalam `DataFrame`: ia menunjukkan hasil dan indeks hasil tersebut, yang akan sangat membantu anda semasa anda bergelut dengan data anda. + +- **Membuang nilai null**: Selain mengenal pasti nilai yang hilang, pandas menyediakan cara yang mudah untuk membuang nilai null daripada `Series` dan `DataFrame`. (Terutamanya pada set data yang besar, lebih disarankan untuk hanya membuang nilai [NA] yang hilang daripada analisis anda daripada menanganinya dengan cara lain.) Untuk melihat ini dalam tindakan, mari kembali ke `example1`: +```python +example1 = example1.dropna() +example1 +``` +``` +0 0 +2 +dtype: object +``` +Perhatikan bahawa ini sepatutnya kelihatan seperti output anda daripada `example3[example3.notnull()]`. Perbezaannya di sini ialah, daripada hanya mengindeks pada nilai yang bertopeng, `dropna` telah membuang nilai yang hilang daripada `Series` `example1`. + +Oleh kerana `DataFrame` mempunyai dua dimensi, ia memberikan lebih banyak pilihan untuk membuang data. + +```python +example2 = pd.DataFrame([[1, np.nan, 7], + [2, 5, 8], + [np.nan, 6, 9]]) +example2 +``` +| | 0 | 1 | 2 | +|------|---|---|---| +|0 |1.0|NaN|7 | +|1 |2.0|5.0|8 | +|2 |NaN|6.0|9 | + +(Adakah anda perasan bahawa pandas menaikkan dua lajur kepada titik terapung untuk menampung `NaN`?) + +Anda tidak boleh membuang satu nilai daripada `DataFrame`, jadi anda perlu membuang baris atau lajur penuh. Bergantung pada apa yang anda lakukan, anda mungkin ingin melakukan salah satu atau yang lain, dan oleh itu pandas memberikan anda pilihan untuk kedua-duanya. Oleh kerana dalam sains data, lajur biasanya mewakili pembolehubah dan baris mewakili pemerhatian, anda lebih cenderung untuk membuang baris data; tetapan lalai untuk `dropna()` adalah untuk membuang semua baris yang mengandungi sebarang nilai null: + +```python +example2.dropna() +``` +``` + 0 1 2 +1 2.0 5.0 8 +``` +Jika perlu, anda boleh membuang nilai NA daripada lajur. Gunakan `axis=1` untuk melakukannya: +```python +example2.dropna(axis='columns') +``` +``` + 2 +0 7 +1 8 +2 9 +``` +Perhatikan bahawa ini boleh membuang banyak data yang mungkin anda ingin simpan, terutamanya dalam set data yang lebih kecil. Bagaimana jika anda hanya ingin membuang baris atau lajur yang mengandungi beberapa atau bahkan semua nilai null? Anda menentukan tetapan tersebut dalam `dropna` dengan parameter `how` dan `thresh`. + +Secara lalai, `how='any'` (jika anda ingin memeriksa sendiri atau melihat parameter lain yang dimiliki oleh kaedah, jalankan `example4.dropna?` dalam sel kod). Anda boleh menentukan `how='all'` sebagai alternatif untuk hanya membuang baris atau lajur yang mengandungi semua nilai null. Mari kita kembangkan contoh `DataFrame` kita untuk melihat ini dalam tindakan. + +```python +example2[3] = np.nan +example2 +``` +| |0 |1 |2 |3 | +|------|---|---|---|---| +|0 |1.0|NaN|7 |NaN| +|1 |2.0|5.0|8 |NaN| +|2 |NaN|6.0|9 |NaN| + +Parameter `thresh` memberikan anda kawalan yang lebih terperinci: anda menetapkan bilangan nilai *bukan null* yang baris atau lajur perlu ada untuk dikekalkan: +```python +example2.dropna(axis='rows', thresh=3) +``` +``` + 0 1 2 3 +1 2.0 5.0 8 NaN +``` +Di sini, baris pertama dan terakhir telah dibuang, kerana ia hanya mengandungi dua nilai bukan null. + +- **Mengisi nilai null**: Bergantung pada set data anda, kadangkala lebih masuk akal untuk mengisi nilai null dengan nilai yang sah daripada membuangnya. Anda boleh menggunakan `isnull` untuk melakukan ini secara langsung, tetapi itu boleh menjadi membebankan, terutamanya jika anda mempunyai banyak nilai untuk diisi. Oleh kerana ini adalah tugas yang biasa dalam sains data, pandas menyediakan `fillna`, yang mengembalikan salinan `Series` atau `DataFrame` dengan nilai yang hilang digantikan dengan nilai pilihan anda. Mari buat contoh `Series` lain untuk melihat bagaimana ini berfungsi dalam praktik. +```python +example3 = pd.Series([1, np.nan, 2, None, 3], index=list('abcde')) +example3 +``` +``` +a 1.0 +b NaN +c 2.0 +d NaN +e 3.0 +dtype: float64 +``` +Anda boleh mengisi semua entri null dengan satu nilai, seperti `0`: +```python +example3.fillna(0) +``` +``` +a 1.0 +b 0.0 +c 2.0 +d 0.0 +e 3.0 +dtype: float64 +``` +Anda boleh **mengisi ke depan** nilai null, iaitu menggunakan nilai sah terakhir untuk mengisi null: +```python +example3.fillna(method='ffill') +``` +``` +a 1.0 +b 1.0 +c 2.0 +d 2.0 +e 3.0 +dtype: float64 +``` +Anda juga boleh **mengisi ke belakang** untuk menyebarkan nilai sah seterusnya ke belakang untuk mengisi null: +```python +example3.fillna(method='bfill') +``` +``` +a 1.0 +b 2.0 +c 2.0 +d 3.0 +e 3.0 +dtype: float64 +``` +Seperti yang anda mungkin jangkakan, ini berfungsi sama dengan `DataFrame`, tetapi anda juga boleh menentukan `axis` di sepanjang mana untuk mengisi nilai null. Menggunakan semula `example2` yang digunakan sebelum ini: +```python +example2.fillna(method='ffill', axis=1) +``` +``` + 0 1 2 3 +0 1.0 1.0 7.0 7.0 +1 2.0 5.0 8.0 8.0 +2 NaN 6.0 9.0 9.0 +``` +Perhatikan bahawa apabila nilai sebelumnya tidak tersedia untuk pengisian ke depan, nilai null tetap ada. +> **Intipati Penting:** Terdapat pelbagai cara untuk menangani nilai yang hilang dalam set data anda. Strategi khusus yang anda gunakan (menghapusnya, menggantikannya, atau bagaimana anda menggantikannya) harus ditentukan oleh keunikan data tersebut. Anda akan mengembangkan pemahaman yang lebih baik tentang cara menangani nilai yang hilang semakin banyak anda berinteraksi dengan set data. + +## Menghapus Data Pendua + +> **Matlamat Pembelajaran:** Pada akhir subseksyen ini, anda seharusnya selesa mengenal pasti dan menghapus nilai pendua daripada DataFrame. + +Selain data yang hilang, anda juga sering akan menemui data pendua dalam set data dunia nyata. Nasib baik, `pandas` menyediakan cara mudah untuk mengesan dan menghapus entri pendua. + +- **Mengenal pasti pendua: `duplicated`**: Anda boleh dengan mudah mengenal pasti nilai pendua menggunakan kaedah `duplicated` dalam pandas, yang mengembalikan topeng Boolean yang menunjukkan sama ada entri dalam `DataFrame` adalah pendua daripada entri sebelumnya. Mari kita cipta satu lagi contoh `DataFrame` untuk melihat ini dalam tindakan. +```python +example4 = pd.DataFrame({'letters': ['A','B'] * 2 + ['B'], + 'numbers': [1, 2, 1, 3, 3]}) +example4 +``` +| |letters|numbers| +|------|-------|-------| +|0 |A |1 | +|1 |B |2 | +|2 |A |1 | +|3 |B |3 | +|4 |B |3 | + +```python +example4.duplicated() +``` +``` +0 False +1 False +2 True +3 False +4 True +dtype: bool +``` +- **Menghapus pendua: `drop_duplicates`:** hanya mengembalikan salinan data di mana semua nilai `duplicated` adalah `False`: +```python +example4.drop_duplicates() +``` +``` + letters numbers +0 A 1 +1 B 2 +3 B 3 +``` +Kedua-dua `duplicated` dan `drop_duplicates` secara lalai mempertimbangkan semua lajur tetapi anda boleh menentukan bahawa mereka hanya memeriksa subset lajur dalam `DataFrame` anda: +```python +example4.drop_duplicates(['letters']) +``` +``` +letters numbers +0 A 1 +1 B 2 +``` + +> **Intipati Penting:** Menghapus data pendua adalah bahagian penting dalam hampir setiap projek sains data. Data pendua boleh mengubah hasil analisis anda dan memberikan keputusan yang tidak tepat! + + +## 🚀 Cabaran + +Semua bahan yang dibincangkan disediakan sebagai [Jupyter Notebook](https://github.com/microsoft/Data-Science-For-Beginners/blob/main/2-Working-With-Data/08-data-preparation/notebook.ipynb). Selain itu, terdapat latihan selepas setiap bahagian, cubalah! + +## [Kuiz Selepas Kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/15) + + + +## Ulasan & Kajian Kendiri + +Terdapat banyak cara untuk meneroka dan mendekati penyediaan data anda untuk analisis dan pemodelan, dan membersihkan data adalah langkah penting yang memerlukan pengalaman "praktikal". Cuba cabaran ini dari Kaggle untuk meneroka teknik yang tidak dibincangkan dalam pelajaran ini. + +- [Cabaran Pembersihan Data: Parsing Dates](https://www.kaggle.com/rtatman/data-cleaning-challenge-parsing-dates/) + +- [Cabaran Pembersihan Data: Skala dan Normalisasi Data](https://www.kaggle.com/rtatman/data-cleaning-challenge-scale-and-normalize-data) + + +## Tugasan + +[Menilai Data daripada Borang](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/2-Working-With-Data/08-data-preparation/assignment.md b/translations/ms/2-Working-With-Data/08-data-preparation/assignment.md new file mode 100644 index 00000000..51ab4c6b --- /dev/null +++ b/translations/ms/2-Working-With-Data/08-data-preparation/assignment.md @@ -0,0 +1,28 @@ + +# Menilai Data daripada Borang + +Seorang pelanggan telah menguji [borang kecil](../../../../2-Working-With-Data/08-data-preparation/index.html) untuk mengumpulkan beberapa data asas tentang pangkalan pelanggan mereka. Mereka telah membawa penemuan mereka kepada anda untuk mengesahkan data yang telah mereka kumpulkan. Anda boleh membuka halaman `index.html` dalam pelayar untuk melihat borang tersebut. + +Anda telah diberikan [set data rekod csv](../../../../data/form.csv) yang mengandungi entri daripada borang serta beberapa visualisasi asas. Pelanggan menunjukkan bahawa beberapa visualisasi kelihatan tidak betul tetapi mereka tidak pasti bagaimana untuk menyelesaikannya. Anda boleh menerokainya dalam [notebook tugasan](assignment.ipynb). + +## Arahan + +Gunakan teknik dalam pelajaran ini untuk membuat cadangan tentang borang supaya ia dapat menangkap maklumat yang tepat dan konsisten. + +## Rubrik + +Cemerlang | Memadai | Perlu Penambahbaikan +--- | --- | --- | + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/2-Working-With-Data/README.md b/translations/ms/2-Working-With-Data/README.md new file mode 100644 index 00000000..23e98f25 --- /dev/null +++ b/translations/ms/2-Working-With-Data/README.md @@ -0,0 +1,31 @@ + +# Bekerja dengan Data + +![data love](../../../translated_images/data-love.a22ef29e6742c852505ada062920956d3d7604870b281a8ca7c7ac6f37381d5a.ms.jpg) +> Foto oleh Alexander Sinn di Unsplash + +Dalam pelajaran ini, anda akan mempelajari beberapa cara data boleh diuruskan, dimanipulasi, dan digunakan dalam aplikasi. Anda akan belajar tentang pangkalan data relasi dan bukan relasi serta bagaimana data boleh disimpan di dalamnya. Anda akan mempelajari asas-asas bekerja dengan Python untuk mengurus data, dan anda akan menemui beberapa cara yang pelbagai untuk bekerja dengan Python dalam mengurus dan melombong data. + +### Topik + +1. [Pangkalan data relasi](05-relational-databases/README.md) +2. [Pangkalan data bukan relasi](06-non-relational/README.md) +3. [Bekerja dengan Python](07-python/README.md) +4. [Menyediakan data](08-data-preparation/README.md) + +### Kredit + +Pelajaran ini ditulis dengan ❤️ oleh [Christopher Harrison](https://twitter.com/geektrainer), [Dmitry Soshnikov](https://twitter.com/shwars) dan [Jasmine Greenaway](https://twitter.com/paladique) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/3-Data-Visualization/09-visualization-quantities/README.md b/translations/ms/3-Data-Visualization/09-visualization-quantities/README.md new file mode 100644 index 00000000..7b90a4a5 --- /dev/null +++ b/translations/ms/3-Data-Visualization/09-visualization-quantities/README.md @@ -0,0 +1,218 @@ + +# Memvisualkan Kuantiti + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/09-Visualizing-Quantities.png)| +|:---:| +| Memvisualkan Kuantiti - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +Dalam pelajaran ini, anda akan meneroka cara menggunakan salah satu daripada banyak perpustakaan Python yang tersedia untuk belajar bagaimana mencipta visualisasi menarik berkaitan konsep kuantiti. Dengan menggunakan dataset yang telah dibersihkan tentang burung di Minnesota, anda boleh mempelajari banyak fakta menarik tentang hidupan liar tempatan. +## [Kuiz pra-pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/16) + +## Perhatikan lebar sayap dengan Matplotlib + +Satu perpustakaan yang sangat baik untuk mencipta plot dan carta yang mudah serta canggih adalah [Matplotlib](https://matplotlib.org/stable/index.html). Secara umum, proses memplot data menggunakan perpustakaan ini melibatkan mengenal pasti bahagian dataframe yang ingin anda sasarkan, melakukan sebarang transformasi data yang diperlukan, menetapkan nilai paksi x dan y, memutuskan jenis plot yang ingin ditunjukkan, dan kemudian memaparkan plot tersebut. Matplotlib menawarkan pelbagai jenis visualisasi, tetapi untuk pelajaran ini, mari kita fokus pada jenis yang paling sesuai untuk memvisualkan kuantiti: carta garis, scatterplot, dan bar plot. + +> ✅ Gunakan carta terbaik yang sesuai dengan struktur data anda dan cerita yang ingin anda sampaikan. +> - Untuk menganalisis trend dari masa ke masa: garis +> - Untuk membandingkan nilai: bar, kolum, pai, scatterplot +> - Untuk menunjukkan bagaimana bahagian berkaitan dengan keseluruhan: pai +> - Untuk menunjukkan taburan data: scatterplot, bar +> - Untuk menunjukkan trend: garis, kolum +> - Untuk menunjukkan hubungan antara nilai: garis, scatterplot, bubble + +Jika anda mempunyai dataset dan perlu mengetahui berapa banyak item tertentu yang termasuk, salah satu tugas pertama yang perlu dilakukan adalah memeriksa nilainya. + +✅ Terdapat 'cheat sheets' yang sangat baik tersedia untuk Matplotlib [di sini](https://matplotlib.org/cheatsheets/cheatsheets.pdf). + +## Bina plot garis tentang nilai lebar sayap burung + +Buka fail `notebook.ipynb` di root folder pelajaran ini dan tambahkan sel. + +> Nota: data disimpan di root repo ini dalam folder `/data`. + +```python +import pandas as pd +import matplotlib.pyplot as plt +birds = pd.read_csv('../../data/birds.csv') +birds.head() +``` +Data ini adalah campuran teks dan nombor: + + +| | Nama | NamaSaintifik | Kategori | Order | Famili | Genus | StatusKonservasi | MinPanjang | MaxPanjang | MinBeratBadan | MaxBeratBadan | MinLebarSayap | MaxLebarSayap | +| ---: | :--------------------------- | :--------------------- | :-------------------- | :----------- | :------- | :---------- | :----------------- | --------: | --------: | ----------: | ----------: | ----------: | ----------: | +| 0 | Itik bersiul perut hitam | Dendrocygna autumnalis | Itik/Angsa/BurungAir | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 | +| 1 | Itik bersiul fulvous | Dendrocygna bicolor | Itik/Angsa/BurungAir | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 | +| 2 | Angsa salji | Anser caerulescens | Itik/Angsa/BurungAir | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 | +| 3 | Angsa Ross | Anser rossii | Itik/Angsa/BurungAir | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 | +| 4 | Angsa putih besar | Anser albifrons | Itik/Angsa/BurungAir | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 | + +Mari kita mulakan dengan memplot beberapa data numerik menggunakan plot garis asas. Katakan anda ingin melihat lebar sayap maksimum untuk burung-burung menarik ini. + +```python +wingspan = birds['MaxWingspan'] +wingspan.plot() +``` +![Max Wingspan](../../../../translated_images/max-wingspan-02.e79fd847b2640b89e21e340a3a9f4c5d4b224c4fcd65f54385e84f1c9ed26d52.ms.png) + +Apa yang anda perhatikan dengan segera? Nampaknya terdapat sekurang-kurangnya satu outlier - itu lebar sayap yang sangat besar! Lebar sayap 2300 sentimeter bersamaan dengan 23 meter - adakah terdapat Pterodactyl berkeliaran di Minnesota? Mari kita selidiki. + +Walaupun anda boleh melakukan sort cepat dalam Excel untuk mencari outlier tersebut, yang mungkin adalah kesilapan, teruskan proses visualisasi dengan bekerja dari dalam plot. + +Tambahkan label pada paksi x untuk menunjukkan jenis burung yang dimaksudkan: + +``` +plt.title('Max Wingspan in Centimeters') +plt.ylabel('Wingspan (CM)') +plt.xlabel('Birds') +plt.xticks(rotation=45) +x = birds['Name'] +y = birds['MaxWingspan'] + +plt.plot(x, y) + +plt.show() +``` +![wingspan with labels](../../../../translated_images/max-wingspan-labels-02.aa90e826ca49a9d1dde78075e9755c1849ef56a4e9ec60f7e9f3806daf9283e2.ms.png) + +Walaupun dengan putaran label ditetapkan pada 45 darjah, terlalu banyak untuk dibaca. Mari cuba strategi yang berbeza: label hanya outlier tersebut dan tetapkan label dalam carta. Anda boleh menggunakan scatter chart untuk membuat lebih banyak ruang untuk pelabelan: + +```python +plt.title('Max Wingspan in Centimeters') +plt.ylabel('Wingspan (CM)') +plt.tick_params(axis='both',which='both',labelbottom=False,bottom=False) + +for i in range(len(birds)): + x = birds['Name'][i] + y = birds['MaxWingspan'][i] + plt.plot(x, y, 'bo') + if birds['MaxWingspan'][i] > 500: + plt.text(x, y * (1 - 0.05), birds['Name'][i], fontsize=12) + +plt.show() +``` +Apa yang berlaku di sini? Anda menggunakan `tick_params` untuk menyembunyikan label bawah dan kemudian mencipta gelung pada dataset burung anda. Dengan memplot carta menggunakan titik bulat biru kecil dengan `bo`, anda memeriksa sebarang burung dengan lebar sayap maksimum melebihi 500 dan memaparkan label mereka di sebelah titik jika ada. Anda mengimbangi label sedikit pada paksi y (`y * (1 - 0.05)`) dan menggunakan nama burung sebagai label. + +Apa yang anda temui? + +![outliers](../../../../translated_images/labeled-wingspan-02.6110e2d2401cd5238ccc24dfb6d04a6c19436101f6cec151e3992e719f9f1e1f.ms.png) +## Tapis data anda + +Kedua-dua Bald Eagle dan Prairie Falcon, walaupun mungkin burung yang sangat besar, nampaknya salah label, dengan tambahan `0` pada lebar sayap maksimum mereka. Tidak mungkin anda akan bertemu Bald Eagle dengan lebar sayap 25 meter, tetapi jika ya, sila maklumkan kepada kami! Mari kita cipta dataframe baru tanpa dua outlier tersebut: + +```python +plt.title('Max Wingspan in Centimeters') +plt.ylabel('Wingspan (CM)') +plt.xlabel('Birds') +plt.tick_params(axis='both',which='both',labelbottom=False,bottom=False) +for i in range(len(birds)): + x = birds['Name'][i] + y = birds['MaxWingspan'][i] + if birds['Name'][i] not in ['Bald eagle', 'Prairie falcon']: + plt.plot(x, y, 'bo') +plt.show() +``` + +Dengan menapis outlier, data anda kini lebih kohesif dan mudah difahami. + +![scatterplot of wingspans](../../../../translated_images/scatterplot-wingspan-02.1c33790094ce36a75f5fb45b25ed2cf27f0356ea609e43c11e97a2cedd7011a4.ms.png) + +Sekarang kita mempunyai dataset yang lebih bersih sekurang-kurangnya dari segi lebar sayap, mari kita temui lebih banyak tentang burung-burung ini. + +Walaupun plot garis dan scatter plot boleh memaparkan maklumat tentang nilai data dan taburannya, kita ingin memikirkan nilai-nilai yang wujud dalam dataset ini. Anda boleh mencipta visualisasi untuk menjawab soalan-soalan berikut tentang kuantiti: + +> Berapa banyak kategori burung yang ada, dan berapa jumlahnya? +> Berapa banyak burung yang pupus, terancam, jarang, atau biasa? +> Berapa banyak genus dan order dalam terminologi Linnaeus? +## Teroka carta bar + +Carta bar adalah praktikal apabila anda perlu menunjukkan pengelompokan data. Mari kita teroka kategori burung yang wujud dalam dataset ini untuk melihat mana yang paling biasa berdasarkan jumlah. + +Dalam fail notebook, cipta carta bar asas + +✅ Nota, anda boleh sama ada menapis dua burung outlier yang kami kenal pasti dalam bahagian sebelumnya, mengedit kesilapan dalam lebar sayap mereka, atau biarkan mereka dalam latihan ini yang tidak bergantung pada nilai lebar sayap. + +Jika anda ingin mencipta carta bar, anda boleh memilih data yang ingin anda fokuskan. Carta bar boleh dicipta daripada data mentah: + +```python +birds.plot(x='Category', + kind='bar', + stacked=True, + title='Birds of Minnesota') + +``` +![full data as a bar chart](../../../../translated_images/full-data-bar-02.aaa3fda71c63ed564b917841a1886c177dd9a26424142e510c0c0498fd6ca160.ms.png) + +Namun, carta bar ini tidak dapat dibaca kerana terdapat terlalu banyak data yang tidak dikelompokkan. Anda perlu memilih hanya data yang ingin anda plot, jadi mari kita lihat panjang burung berdasarkan kategori mereka. + +Tapis data anda untuk memasukkan hanya kategori burung. + +✅ Perhatikan bahawa anda menggunakan Pandas untuk mengurus data, dan kemudian membiarkan Matplotlib melakukan pencartaan. + +Oleh kerana terdapat banyak kategori, anda boleh memaparkan carta ini secara menegak dan menyesuaikan ketinggiannya untuk mengambil kira semua data: + +```python +category_count = birds.value_counts(birds['Category'].values, sort=True) +plt.rcParams['figure.figsize'] = [6, 12] +category_count.plot.barh() +``` +![category and length](../../../../translated_images/category-counts-02.0b9a0a4de42275ae5096d0f8da590d8bf520d9e7e40aad5cc4fc8d276480cc32.ms.png) + +Carta bar ini menunjukkan pandangan yang baik tentang jumlah burung dalam setiap kategori. Sekilas pandang, anda melihat bahawa jumlah burung terbesar di kawasan ini adalah dalam kategori Itik/Angsa/BurungAir. Minnesota adalah 'tanah 10,000 tasik' jadi ini tidak mengejutkan! + +✅ Cuba beberapa kiraan lain pada dataset ini. Adakah sesuatu mengejutkan anda? + +## Membandingkan data + +Anda boleh mencuba perbandingan data yang dikelompokkan dengan mencipta paksi baru. Cuba perbandingan MaxLength burung, berdasarkan kategorinya: + +```python +maxlength = birds['MaxLength'] +plt.barh(y=birds['Category'], width=maxlength) +plt.rcParams['figure.figsize'] = [6, 12] +plt.show() +``` +![comparing data](../../../../translated_images/category-length-02.7304bf519375c9807d8165cc7ec60dd2a60f7b365b23098538e287d89adb7d76.ms.png) + +Tiada yang mengejutkan di sini: burung kolibri mempunyai MaxLength paling kecil berbanding Pelikan atau Angsa. Bagus apabila data masuk akal secara logik! + +Anda boleh mencipta visualisasi carta bar yang lebih menarik dengan meletakkan data secara bertindih. Mari kita letakkan Minimum dan Maximum Length pada kategori burung tertentu: + +```python +minLength = birds['MinLength'] +maxLength = birds['MaxLength'] +category = birds['Category'] + +plt.barh(category, maxLength) +plt.barh(category, minLength) + +plt.show() +``` +Dalam plot ini, anda dapat melihat julat per kategori burung untuk Minimum Length dan Maximum Length. Anda boleh mengatakan dengan selamat bahawa, berdasarkan data ini, semakin besar burung, semakin besar julat panjangnya. Menarik! + +![superimposed values](../../../../translated_images/superimposed-02.f03058536baeb2ed7864f01102538464d4c2fd7ade881ddd7d5ba74dc5d2fdae.ms.png) + +## 🚀 Cabaran + +Dataset burung ini menawarkan banyak maklumat tentang pelbagai jenis burung dalam ekosistem tertentu. Cari di internet dan lihat jika anda boleh menemui dataset lain yang berorientasikan burung. Latih diri anda membina carta dan graf tentang burung-burung ini untuk menemui fakta yang tidak anda sedari. +## [Kuiz pasca-pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/17) + +## Ulasan & Kajian Kendiri + +Pelajaran pertama ini telah memberikan anda beberapa maklumat tentang cara menggunakan Matplotlib untuk memvisualkan kuantiti. Lakukan penyelidikan tentang cara lain untuk bekerja dengan dataset untuk visualisasi. [Plotly](https://github.com/plotly/plotly.py) adalah salah satu yang tidak akan kita bahas dalam pelajaran ini, jadi lihat apa yang boleh ditawarkan olehnya. +## Tugasan + +[Lines, Scatters, and Bars](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/3-Data-Visualization/09-visualization-quantities/assignment.md b/translations/ms/3-Data-Visualization/09-visualization-quantities/assignment.md new file mode 100644 index 00000000..5a8544ad --- /dev/null +++ b/translations/ms/3-Data-Visualization/09-visualization-quantities/assignment.md @@ -0,0 +1,25 @@ + +# Garisan, Taburan dan Bar + +## Arahan + +Dalam pelajaran ini, anda telah bekerja dengan carta garisan, plot taburan, dan carta bar untuk menunjukkan fakta menarik tentang dataset ini. Dalam tugasan ini, selami lebih dalam dataset untuk menemui fakta tentang jenis burung tertentu. Sebagai contoh, cipta sebuah notebook yang memvisualkan semua data menarik yang anda boleh temui tentang Snow Geese. Gunakan tiga plot yang disebutkan di atas untuk menceritakan sebuah kisah dalam notebook anda. + +## Rubrik + +Cemerlang | Memadai | Perlu Penambahbaikan +--- | --- | -- | +Notebook disediakan dengan anotasi yang baik, penceritaan yang kukuh, dan graf yang menarik | Notebook kekurangan salah satu elemen ini | Notebook kekurangan dua elemen ini + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/3-Data-Visualization/10-visualization-distributions/README.md b/translations/ms/3-Data-Visualization/10-visualization-distributions/README.md new file mode 100644 index 00000000..3852c045 --- /dev/null +++ b/translations/ms/3-Data-Visualization/10-visualization-distributions/README.md @@ -0,0 +1,216 @@ + +# Memvisualkan Taburan + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/10-Visualizing-Distributions.png)| +|:---:| +| Memvisualkan Taburan - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +Dalam pelajaran sebelumnya, anda telah mempelajari beberapa fakta menarik tentang dataset burung di Minnesota. Anda menemui data yang salah dengan memvisualkan nilai luar biasa dan melihat perbezaan antara kategori burung berdasarkan panjang maksimum mereka. + +## [Kuiz pra-kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/18) +## Terokai dataset burung + +Satu lagi cara untuk menyelidik data adalah dengan melihat taburannya, atau bagaimana data diatur sepanjang paksi. Sebagai contoh, mungkin anda ingin mengetahui taburan umum, untuk dataset ini, bagi lebar sayap maksimum atau jisim badan maksimum burung di Minnesota. + +Mari kita temui beberapa fakta tentang taburan data dalam dataset ini. Dalam fail _notebook.ipynb_ di akar folder pelajaran ini, import Pandas, Matplotlib, dan data anda: + +```python +import pandas as pd +import matplotlib.pyplot as plt +birds = pd.read_csv('../../data/birds.csv') +birds.head() +``` + +| | Nama | NamaSaintifik | Kategori | Order | Keluarga | Genus | StatusKonservasi | MinPanjang | MaxPanjang | MinJisimBadan | MaxJisimBadan | MinLebarSayap | MaxLebarSayap | +| ---: | :--------------------------- | :--------------------- | :-------------------- | :----------- | :------- | :---------- | :----------------- | --------: | --------: | ----------: | ----------: | ----------: | ----------: | +| 0 | Itik bersiul perut hitam | Dendrocygna autumnalis | Itik/Angsa/BurungAir | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 | +| 1 | Itik bersiul fulvous | Dendrocygna bicolor | Itik/Angsa/BurungAir | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 | +| 2 | Angsa salji | Anser caerulescens | Itik/Angsa/BurungAir | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 | +| 3 | Angsa Ross | Anser rossii | Itik/Angsa/BurungAir | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 | +| 4 | Angsa putih besar | Anser albifrons | Itik/Angsa/BurungAir | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 | + +Secara umum, anda boleh melihat dengan cepat cara data ditaburkan dengan menggunakan plot taburan seperti yang kita lakukan dalam pelajaran sebelumnya: + +```python +birds.plot(kind='scatter',x='MaxLength',y='Order',figsize=(12,8)) + +plt.title('Max Length per Order') +plt.ylabel('Order') +plt.xlabel('Max Length') + +plt.show() +``` +![panjang maksimum per order](../../../../translated_images/scatter-wb.9d98b0ed7f0388af979441853361a11df5f518f5307938a503ca7913e986111b.ms.png) + +Ini memberikan gambaran umum tentang taburan panjang badan per Order burung, tetapi ia bukan cara terbaik untuk memaparkan taburan sebenar. Tugas ini biasanya dilakukan dengan mencipta Histogram. +## Bekerja dengan histogram + +Matplotlib menawarkan cara yang sangat baik untuk memvisualkan taburan data menggunakan Histogram. Jenis carta ini seperti carta bar di mana taburan dapat dilihat melalui naik dan turun bar. Untuk membina histogram, anda memerlukan data berangka. Untuk membina Histogram, anda boleh memplot carta dengan mendefinisikan jenis sebagai 'hist' untuk Histogram. Carta ini menunjukkan taburan MaxBodyMass untuk keseluruhan dataset dalam julat data berangka. Dengan membahagikan array data yang diberikan kepada bin yang lebih kecil, ia dapat memaparkan taburan nilai data: + +```python +birds['MaxBodyMass'].plot(kind = 'hist', bins = 10, figsize = (12,12)) +plt.show() +``` +![taburan seluruh dataset](../../../../translated_images/dist1-wb.0d0cac82e2974fbbec635826fefead401af795f82e2279e2e2678bf2c117d827.ms.png) + +Seperti yang anda lihat, kebanyakan daripada 400+ burung dalam dataset ini berada dalam julat di bawah 2000 untuk Max Body Mass mereka. Dapatkan lebih banyak wawasan tentang data dengan menukar parameter `bins` kepada nombor yang lebih tinggi, seperti 30: + +```python +birds['MaxBodyMass'].plot(kind = 'hist', bins = 30, figsize = (12,12)) +plt.show() +``` +![taburan seluruh dataset dengan parameter bin lebih besar](../../../../translated_images/dist2-wb.2c0a7a3499b2fbf561e9f93b69f265dfc538dc78f6de15088ba84a88152e26ba.ms.png) + +Carta ini menunjukkan taburan dengan cara yang lebih terperinci. Carta yang kurang condong ke kiri boleh dibuat dengan memastikan anda hanya memilih data dalam julat tertentu: + +Tapis data anda untuk mendapatkan hanya burung yang jisim badannya di bawah 60, dan tunjukkan 40 `bins`: + +```python +filteredBirds = birds[(birds['MaxBodyMass'] > 1) & (birds['MaxBodyMass'] < 60)] +filteredBirds['MaxBodyMass'].plot(kind = 'hist',bins = 40,figsize = (12,12)) +plt.show() +``` +![histogram yang ditapis](../../../../translated_images/dist3-wb.64b88db7f9780200bd486a2c2a3252548dd439672dbd3f778193db7f654b100c.ms.png) + +✅ Cuba beberapa penapis dan titik data lain. Untuk melihat taburan penuh data, keluarkan penapis `['MaxBodyMass']` untuk menunjukkan taburan berlabel. + +Histogram menawarkan beberapa peningkatan warna dan pelabelan yang menarik untuk dicuba juga: + +Cipta histogram 2D untuk membandingkan hubungan antara dua taburan. Mari bandingkan `MaxBodyMass` vs. `MaxLength`. Matplotlib menawarkan cara terbina dalam untuk menunjukkan pertemuan menggunakan warna yang lebih terang: + +```python +x = filteredBirds['MaxBodyMass'] +y = filteredBirds['MaxLength'] + +fig, ax = plt.subplots(tight_layout=True) +hist = ax.hist2d(x, y) +``` +Nampaknya terdapat korelasi yang dijangka antara dua elemen ini sepanjang paksi yang dijangka, dengan satu titik pertemuan yang sangat kuat: + +![plot 2D](../../../../translated_images/2D-wb.ae22fdd33936507a41e3af22e11e4903b04a9be973b23a4e05214efaccfd66c8.ms.png) + +Histogram berfungsi dengan baik secara lalai untuk data berangka. Bagaimana jika anda perlu melihat taburan mengikut data teks? +## Terokai dataset untuk taburan menggunakan data teks + +Dataset ini juga termasuk maklumat yang baik tentang kategori burung dan genus, spesies, serta keluarga mereka, serta status konservasi mereka. Mari kita selidik maklumat konservasi ini. Apakah taburan burung mengikut status konservasi mereka? + +> ✅ Dalam dataset, beberapa akronim digunakan untuk menerangkan status konservasi. Akronim ini berasal dari [Kategori Senarai Merah IUCN](https://www.iucnredlist.org/), sebuah organisasi yang mengkatalogkan status spesies. +> +> - CR: Kritikal Terancam +> - EN: Terancam +> - EX: Pupus +> - LC: Kurang Prihatin +> - NT: Hampir Terancam +> - VU: Rentan + +Nilai-nilai ini berasaskan teks jadi anda perlu melakukan transformasi untuk mencipta histogram. Menggunakan dataframe filteredBirds, paparkan status konservasi bersama dengan Minimum Wingspan. Apa yang anda lihat? + +```python +x1 = filteredBirds.loc[filteredBirds.ConservationStatus=='EX', 'MinWingspan'] +x2 = filteredBirds.loc[filteredBirds.ConservationStatus=='CR', 'MinWingspan'] +x3 = filteredBirds.loc[filteredBirds.ConservationStatus=='EN', 'MinWingspan'] +x4 = filteredBirds.loc[filteredBirds.ConservationStatus=='NT', 'MinWingspan'] +x5 = filteredBirds.loc[filteredBirds.ConservationStatus=='VU', 'MinWingspan'] +x6 = filteredBirds.loc[filteredBirds.ConservationStatus=='LC', 'MinWingspan'] + +kwargs = dict(alpha=0.5, bins=20) + +plt.hist(x1, **kwargs, color='red', label='Extinct') +plt.hist(x2, **kwargs, color='orange', label='Critically Endangered') +plt.hist(x3, **kwargs, color='yellow', label='Endangered') +plt.hist(x4, **kwargs, color='green', label='Near Threatened') +plt.hist(x5, **kwargs, color='blue', label='Vulnerable') +plt.hist(x6, **kwargs, color='gray', label='Least Concern') + +plt.gca().set(title='Conservation Status', ylabel='Min Wingspan') +plt.legend(); +``` + +![lebar sayap dan kolasi konservasi](../../../../translated_images/histogram-conservation-wb.3c40450eb072c14de7a1a3ec5c0fcba4995531024760741b392911b567fd8b70.ms.png) + +Nampaknya tidak ada korelasi yang baik antara lebar sayap minimum dan status konservasi. Uji elemen lain dalam dataset menggunakan kaedah ini. Anda juga boleh mencuba penapis yang berbeza. Adakah anda menemui sebarang korelasi? + +## Plot ketumpatan + +Anda mungkin telah perasan bahawa histogram yang kita lihat setakat ini adalah 'bertingkat' dan tidak mengalir dengan lancar dalam lengkungan. Untuk menunjukkan carta ketumpatan yang lebih lancar, anda boleh mencuba plot ketumpatan. + +Untuk bekerja dengan plot ketumpatan, biasakan diri dengan pustaka plot baru, [Seaborn](https://seaborn.pydata.org/generated/seaborn.kdeplot.html). + +Memuatkan Seaborn, cuba plot ketumpatan asas: + +```python +import seaborn as sns +import matplotlib.pyplot as plt +sns.kdeplot(filteredBirds['MinWingspan']) +plt.show() +``` +![Plot ketumpatan](../../../../translated_images/density1.8801043bd4af2567b0f706332b5853c7614e5e4b81b457acc27eb4e092a65cbd.ms.png) + +Anda boleh melihat bagaimana plot ini mencerminkan yang sebelumnya untuk data Minimum Wingspan; ia hanya sedikit lebih lancar. Menurut dokumentasi Seaborn, "Berbanding dengan histogram, KDE boleh menghasilkan plot yang kurang berserabut dan lebih mudah ditafsirkan, terutamanya apabila melukis pelbagai taburan. Tetapi ia berpotensi memperkenalkan distorsi jika taburan asas terikat atau tidak lancar. Seperti histogram, kualiti representasi juga bergantung pada pemilihan parameter pelicinan yang baik." [sumber](https://seaborn.pydata.org/generated/seaborn.kdeplot.html) Dengan kata lain, nilai luar biasa seperti biasa akan membuat carta anda berkelakuan buruk. + +Jika anda ingin mengunjungi semula garis MaxBodyMass yang bergerigi dalam carta kedua yang anda bina, anda boleh melicinkannya dengan baik dengan menciptanya semula menggunakan kaedah ini: + +```python +sns.kdeplot(filteredBirds['MaxBodyMass']) +plt.show() +``` +![garis jisim badan yang licin](../../../../translated_images/density2.8e7647257060ff544a1aaded57e8dd1887586bfe340139e9b77ac1e5287f7977.ms.png) + +Jika anda mahukan garis yang licin tetapi tidak terlalu licin, edit parameter `bw_adjust`: + +```python +sns.kdeplot(filteredBirds['MaxBodyMass'], bw_adjust=.2) +plt.show() +``` +![garis jisim badan kurang licin](../../../../translated_images/density3.84ae27da82f31e6b83ad977646f029a1d21186574d7581facd70123b3eb257ee.ms.png) + +✅ Baca tentang parameter yang tersedia untuk jenis plot ini dan bereksperimen! + +Jenis carta ini menawarkan visualisasi yang sangat jelas. Dengan beberapa baris kod, sebagai contoh, anda boleh menunjukkan ketumpatan jisim badan maksimum per Order burung: + +```python +sns.kdeplot( + data=filteredBirds, x="MaxBodyMass", hue="Order", + fill=True, common_norm=False, palette="crest", + alpha=.5, linewidth=0, +) +``` + +![jisim badan per order](../../../../translated_images/density4.e9d6c033f15c500fd33df94cb592b9f5cf1ed2a3d213c448a3f9e97ba39573ce.ms.png) + +Anda juga boleh memetakan ketumpatan beberapa pemboleh ubah dalam satu carta. Uji MaxLength dan MinLength burung berbanding status konservasi mereka: + +```python +sns.kdeplot(data=filteredBirds, x="MinLength", y="MaxLength", hue="ConservationStatus") +``` + +![pelbagai ketumpatan, bertindih](../../../../translated_images/multi.56548caa9eae8d0fd9012a8586295538c7f4f426e2abc714ba070e2e4b1fc2c1.ms.png) + +Mungkin berbaloi untuk menyelidik sama ada kelompok burung 'Rentan' mengikut panjang mereka adalah bermakna atau tidak. + +## 🚀 Cabaran + +Histogram adalah jenis carta yang lebih canggih daripada plot taburan asas, carta bar, atau carta garis. Lakukan carian di internet untuk mencari contoh penggunaan histogram yang baik. Bagaimana ia digunakan, apa yang mereka tunjukkan, dan dalam bidang atau kawasan penyelidikan apa mereka cenderung digunakan? + +## [Kuiz pasca-kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/19) + +## Ulasan & Kajian Kendiri + +Dalam pelajaran ini, anda menggunakan Matplotlib dan mula bekerja dengan Seaborn untuk menunjukkan carta yang lebih canggih. Lakukan penyelidikan tentang `kdeplot` dalam Seaborn, "keluk ketumpatan kebarangkalian berterusan dalam satu atau lebih dimensi". Baca melalui [dokumentasi](https://seaborn.pydata.org/generated/seaborn.kdeplot.html) untuk memahami cara ia berfungsi. + +## Tugasan + +[Gunakan kemahiran anda](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/3-Data-Visualization/10-visualization-distributions/assignment.md b/translations/ms/3-Data-Visualization/10-visualization-distributions/assignment.md new file mode 100644 index 00000000..3a6a8d1d --- /dev/null +++ b/translations/ms/3-Data-Visualization/10-visualization-distributions/assignment.md @@ -0,0 +1,25 @@ + +# Gunakan Kemahiran Anda + +## Arahan + +Setakat ini, anda telah bekerja dengan set data burung Minnesota untuk menemui maklumat tentang kuantiti burung dan kepadatan populasi. Amalkan penerapan teknik-teknik ini dengan mencuba set data yang berbeza, mungkin diperoleh daripada [Kaggle](https://www.kaggle.com/). Bina sebuah notebook untuk menceritakan kisah tentang set data ini, dan pastikan anda menggunakan histogram semasa membincangkannya. + +## Rubrik + +Cemerlang | Memadai | Perlu Penambahbaikan +--- | --- | --- | +Sebuah notebook disediakan dengan anotasi tentang set data ini, termasuk sumbernya, dan menggunakan sekurang-kurangnya 5 histogram untuk menemui fakta tentang data. | Sebuah notebook disediakan dengan anotasi yang tidak lengkap atau terdapat pepijat. | Sebuah notebook disediakan tanpa anotasi dan mengandungi pepijat. + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/3-Data-Visualization/11-visualization-proportions/README.md b/translations/ms/3-Data-Visualization/11-visualization-proportions/README.md new file mode 100644 index 00000000..983ba855 --- /dev/null +++ b/translations/ms/3-Data-Visualization/11-visualization-proportions/README.md @@ -0,0 +1,204 @@ + +# Memvisualkan Perkadaran + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/11-Visualizing-Proportions.png)| +|:---:| +|Memvisualkan Perkadaran - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +Dalam pelajaran ini, anda akan menggunakan set data yang berfokuskan alam semula jadi untuk memvisualkan perkadaran, seperti berapa banyak jenis kulat yang terdapat dalam set data tentang cendawan. Mari kita terokai kulat yang menarik ini menggunakan set data yang diperoleh daripada Audubon yang menyenaraikan butiran tentang 23 spesies cendawan berinsang dalam keluarga Agaricus dan Lepiota. Anda akan bereksperimen dengan visualisasi menarik seperti: + +- Carta pai 🥧 +- Carta donat 🍩 +- Carta waffle 🧇 + +> 💡 Satu projek yang sangat menarik dipanggil [Charticulator](https://charticulator.com) oleh Microsoft Research menawarkan antara muka seret dan lepas percuma untuk visualisasi data. Dalam salah satu tutorial mereka, mereka juga menggunakan set data cendawan ini! Jadi anda boleh meneroka data dan belajar perpustakaan ini pada masa yang sama: [Tutorial Charticulator](https://charticulator.com/tutorials/tutorial4.html). + +## [Kuiz pra-kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/20) + +## Kenali cendawan anda 🍄 + +Cendawan sangat menarik. Mari kita import set data untuk mengkajinya: + +```python +import pandas as pd +import matplotlib.pyplot as plt +mushrooms = pd.read_csv('../../data/mushrooms.csv') +mushrooms.head() +``` +Satu jadual dicetak dengan beberapa data hebat untuk dianalisis: + +| class | cap-shape | cap-surface | cap-color | bruises | odor | gill-attachment | gill-spacing | gill-size | gill-color | stalk-shape | stalk-root | stalk-surface-above-ring | stalk-surface-below-ring | stalk-color-above-ring | stalk-color-below-ring | veil-type | veil-color | ring-number | ring-type | spore-print-color | population | habitat | +| --------- | --------- | ----------- | --------- | ------- | ------- | --------------- | ------------ | --------- | ---------- | ----------- | ---------- | ------------------------ | ------------------------ | ---------------------- | ---------------------- | --------- | ---------- | ----------- | --------- | ----------------- | ---------- | ------- | +| Beracun | Cembung | Licin | Coklat | Lebam | Tajam | Bebas | Rapat | Sempit | Hitam | Membesar | Sama | Licin | Licin | Putih | Putih | Separa | Putih | Satu | Gantung | Hitam | Berselerak | Bandar | +| Boleh dimakan | Cembung | Licin | Kuning | Lebam | Badam | Bebas | Rapat | Lebar | Hitam | Membesar | Kelab | Licin | Licin | Putih | Putih | Separa | Putih | Satu | Gantung | Coklat | Banyak | Rumput | +| Boleh dimakan | Loceng | Licin | Putih | Lebam | Anis | Bebas | Rapat | Lebar | Coklat | Membesar | Kelab | Licin | Licin | Putih | Putih | Separa | Putih | Satu | Gantung | Coklat | Banyak | Padang | +| Beracun | Cembung | Bersisik | Putih | Lebam | Tajam | Bebas | Rapat | Sempit | Coklat | Membesar | Sama | Licin | Licin | Putih | Putih | Separa | Putih | Satu | Gantung | Hitam | Berselerak | Bandar | + +Dengan segera, anda perasan bahawa semua data adalah berbentuk teks. Anda perlu menukar data ini supaya boleh digunakan dalam carta. Kebanyakan data, sebenarnya, diwakili sebagai objek: + +```python +print(mushrooms.select_dtypes(["object"]).columns) +``` + +Hasilnya adalah: + +```output +Index(['class', 'cap-shape', 'cap-surface', 'cap-color', 'bruises', 'odor', + 'gill-attachment', 'gill-spacing', 'gill-size', 'gill-color', + 'stalk-shape', 'stalk-root', 'stalk-surface-above-ring', + 'stalk-surface-below-ring', 'stalk-color-above-ring', + 'stalk-color-below-ring', 'veil-type', 'veil-color', 'ring-number', + 'ring-type', 'spore-print-color', 'population', 'habitat'], + dtype='object') +``` +Ambil data ini dan tukarkan lajur 'class' kepada kategori: + +```python +cols = mushrooms.select_dtypes(["object"]).columns +mushrooms[cols] = mushrooms[cols].astype('category') +``` + +```python +edibleclass=mushrooms.groupby(['class']).count() +edibleclass +``` + +Sekarang, jika anda mencetak data cendawan, anda boleh melihat bahawa ia telah dikelompokkan ke dalam kategori mengikut kelas beracun/boleh dimakan: + +| | cap-shape | cap-surface | cap-color | bruises | odor | gill-attachment | gill-spacing | gill-size | gill-color | stalk-shape | ... | stalk-surface-below-ring | stalk-color-above-ring | stalk-color-below-ring | veil-type | veil-color | ring-number | ring-type | spore-print-color | population | habitat | +| --------- | --------- | ----------- | --------- | ------- | ---- | --------------- | ------------ | --------- | ---------- | ----------- | --- | ------------------------ | ---------------------- | ---------------------- | --------- | ---------- | ----------- | --------- | ----------------- | ---------- | ------- | +| class | | | | | | | | | | | | | | | | | | | | | | +| Boleh dimakan | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | ... | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | +| Beracun | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | ... | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | + +Jika anda mengikuti susunan yang ditunjukkan dalam jadual ini untuk mencipta label kategori kelas anda, anda boleh membina carta pai: + +## Pai! + +```python +labels=['Edible','Poisonous'] +plt.pie(edibleclass['population'],labels=labels,autopct='%.1f %%') +plt.title('Edible?') +plt.show() +``` +Voila, satu carta pai yang menunjukkan perkadaran data ini mengikut dua kelas cendawan ini. Sangat penting untuk mendapatkan susunan label dengan betul, terutamanya di sini, jadi pastikan anda mengesahkan susunan dengan cara label array dibina! + +![carta pai](../../../../translated_images/pie1-wb.e201f2fcc335413143ce37650fb7f5f0bb21358e7823a327ed8644dfb84be9db.ms.png) + +## Donat! + +Carta pai yang lebih menarik secara visual ialah carta donat, iaitu carta pai dengan lubang di tengah. Mari kita lihat data kita menggunakan kaedah ini. + +Lihat pelbagai habitat di mana cendawan tumbuh: + +```python +habitat=mushrooms.groupby(['habitat']).count() +habitat +``` +Di sini, anda mengelompokkan data anda mengikut habitat. Terdapat 7 habitat yang disenaraikan, jadi gunakan itu sebagai label untuk carta donat anda: + +```python +labels=['Grasses','Leaves','Meadows','Paths','Urban','Waste','Wood'] + +plt.pie(habitat['class'], labels=labels, + autopct='%1.1f%%', pctdistance=0.85) + +center_circle = plt.Circle((0, 0), 0.40, fc='white') +fig = plt.gcf() + +fig.gca().add_artist(center_circle) + +plt.title('Mushroom Habitats') + +plt.show() +``` + +![carta donat](../../../../translated_images/donut-wb.be3c12a22712302b5d10c40014d5389d4a1ae4412fe1655b3cf4af57b64f799a.ms.png) + +Kod ini melukis carta dan bulatan tengah, kemudian menambah bulatan tengah itu ke dalam carta. Edit lebar bulatan tengah dengan menukar `0.40` kepada nilai lain. + +Carta donat boleh diubah suai dalam pelbagai cara untuk menukar label. Label khususnya boleh diserlahkan untuk kebolehbacaan. Ketahui lebih lanjut dalam [dokumentasi](https://matplotlib.org/stable/gallery/pie_and_polar_charts/pie_and_donut_labels.html?highlight=donut). + +Sekarang anda tahu cara mengelompokkan data anda dan kemudian memaparkannya sebagai pai atau donat, anda boleh meneroka jenis carta lain. Cuba carta waffle, yang hanya cara berbeza untuk meneroka kuantiti. + +## Waffle! + +Carta jenis 'waffle' adalah cara berbeza untuk memvisualkan kuantiti sebagai susunan 2D petak. Cuba visualkan kuantiti warna topi cendawan yang berbeza dalam set data ini. Untuk melakukannya, anda perlu memasang perpustakaan pembantu yang dipanggil [PyWaffle](https://pypi.org/project/pywaffle/) dan gunakan Matplotlib: + +```python +pip install pywaffle +``` + +Pilih segmen data anda untuk dikelompokkan: + +```python +capcolor=mushrooms.groupby(['cap-color']).count() +capcolor +``` + +Cipta carta waffle dengan mencipta label dan kemudian mengelompokkan data anda: + +```python +import pandas as pd +import matplotlib.pyplot as plt +from pywaffle import Waffle + +data ={'color': ['brown', 'buff', 'cinnamon', 'green', 'pink', 'purple', 'red', 'white', 'yellow'], + 'amount': capcolor['class'] + } + +df = pd.DataFrame(data) + +fig = plt.figure( + FigureClass = Waffle, + rows = 100, + values = df.amount, + labels = list(df.color), + figsize = (30,30), + colors=["brown", "tan", "maroon", "green", "pink", "purple", "red", "whitesmoke", "yellow"], +) +``` + +Menggunakan carta waffle, anda boleh melihat dengan jelas perkadaran warna topi dalam set data cendawan ini. Menariknya, terdapat banyak cendawan bertopi hijau! + +![carta waffle](../../../../translated_images/waffle.5455dbae4ccf17d53bb40ff0a657ecef7b8aa967e27a19cc96325bd81598f65e.ms.png) + +✅ Pywaffle menyokong ikon dalam carta yang menggunakan mana-mana ikon yang tersedia dalam [Font Awesome](https://fontawesome.com/). Lakukan beberapa eksperimen untuk mencipta carta waffle yang lebih menarik menggunakan ikon dan bukannya petak. + +Dalam pelajaran ini, anda telah mempelajari tiga cara untuk memvisualkan perkadaran. Pertama, anda perlu mengelompokkan data anda ke dalam kategori dan kemudian memutuskan cara terbaik untuk memaparkan data tersebut - pai, donat, atau waffle. Semuanya menarik dan memberikan pengguna gambaran segera tentang set data. + +## 🚀 Cabaran + +Cuba cipta semula carta menarik ini dalam [Charticulator](https://charticulator.com). +## [Kuiz pasca-kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/21) + +## Ulasan & Kajian Kendiri + +Kadangkala tidak jelas bila untuk menggunakan carta pai, donat, atau waffle. Berikut adalah beberapa artikel untuk dibaca mengenai topik ini: + +https://www.beautiful.ai/blog/battle-of-the-charts-pie-chart-vs-donut-chart + +https://medium.com/@hypsypops/pie-chart-vs-donut-chart-showdown-in-the-ring-5d24fd86a9ce + +https://www.mit.edu/~mbarker/formula1/f1help/11-ch-c6.htm + +https://medium.datadriveninvestor.com/data-visualization-done-the-right-way-with-tableau-waffle-chart-fdf2a19be402 + +Lakukan penyelidikan untuk mencari lebih banyak maklumat tentang keputusan yang sukar ini. + +## Tugasan + +[Cuba dalam Excel](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/3-Data-Visualization/11-visualization-proportions/assignment.md b/translations/ms/3-Data-Visualization/11-visualization-proportions/assignment.md new file mode 100644 index 00000000..c2031bd1 --- /dev/null +++ b/translations/ms/3-Data-Visualization/11-visualization-proportions/assignment.md @@ -0,0 +1,25 @@ + +# Cuba di Excel + +## Arahan + +Tahukah anda bahawa anda boleh mencipta carta donat, pai, dan wafel dalam Excel? Dengan menggunakan set data pilihan anda, cipta ketiga-tiga carta ini terus dalam hamparan Excel. + +## Rubrik + +| Cemerlang | Memadai | Perlu Penambahbaikan | +| ------------------------------------------------------- | ------------------------------------------------ | ----------------------------------------------------- | +| Hamparan Excel disediakan dengan ketiga-tiga carta | Hamparan Excel disediakan dengan dua carta | Hamparan Excel disediakan dengan hanya satu carta | + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/3-Data-Visualization/12-visualization-relationships/README.md b/translations/ms/3-Data-Visualization/12-visualization-relationships/README.md new file mode 100644 index 00000000..1c06a035 --- /dev/null +++ b/translations/ms/3-Data-Visualization/12-visualization-relationships/README.md @@ -0,0 +1,186 @@ + +# Memvisualkan Hubungan: Semua Tentang Madu 🍯 + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/12-Visualizing-Relationships.png)| +|:---:| +|Memvisualkan Hubungan - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +Meneruskan fokus kajian kita terhadap alam semula jadi, mari kita terokai visualisasi menarik untuk menunjukkan hubungan antara pelbagai jenis madu, berdasarkan dataset yang diperoleh daripada [Jabatan Pertanian Amerika Syarikat](https://www.nass.usda.gov/About_NASS/index.php). + +Dataset ini, yang mengandungi kira-kira 600 item, memaparkan pengeluaran madu di banyak negeri di A.S. Sebagai contoh, anda boleh melihat bilangan koloni, hasil per koloni, jumlah pengeluaran, stok, harga per paun, dan nilai madu yang dihasilkan di negeri tertentu dari tahun 1998-2012, dengan satu baris data untuk setiap tahun bagi setiap negeri. + +Adalah menarik untuk memvisualkan hubungan antara pengeluaran tahunan sesebuah negeri dan, sebagai contoh, harga madu di negeri tersebut. Sebagai alternatif, anda boleh memvisualkan hubungan antara hasil madu per koloni di pelbagai negeri. Tempoh tahun ini meliputi kemunculan pertama 'CCD' atau 'Colony Collapse Disorder' pada tahun 2006 (http://npic.orst.edu/envir/ccd.html), menjadikannya dataset yang menyentuh hati untuk dikaji. 🐝 + +## [Kuiz Pra-Kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/22) + +Dalam pelajaran ini, anda boleh menggunakan Seaborn, yang telah anda gunakan sebelum ini, sebagai perpustakaan yang baik untuk memvisualkan hubungan antara pembolehubah. Yang menarik ialah penggunaan fungsi `relplot` dalam Seaborn yang membolehkan plot taburan dan plot garis untuk memvisualkan '[hubungan statistik](https://seaborn.pydata.org/tutorial/relational.html?highlight=relationships)' dengan cepat, yang membantu saintis data memahami dengan lebih baik bagaimana pembolehubah saling berkaitan. + +## Scatterplots + +Gunakan scatterplot untuk menunjukkan bagaimana harga madu berubah dari tahun ke tahun, mengikut negeri. Seaborn, menggunakan `relplot`, dengan mudah mengelompokkan data negeri dan memaparkan titik data untuk kedua-dua data kategori dan numerik. + +Mari kita mulakan dengan mengimport data dan Seaborn: + +```python +import pandas as pd +import matplotlib.pyplot as plt +import seaborn as sns +honey = pd.read_csv('../../data/honey.csv') +honey.head() +``` +Anda akan perasan bahawa data madu ini mempunyai beberapa lajur menarik, termasuk tahun dan harga per paun. Mari kita terokai data ini, dikelompokkan mengikut negeri di A.S.: + +| state | numcol | yieldpercol | totalprod | stocks | priceperlb | prodvalue | year | +| ----- | ------ | ----------- | --------- | -------- | ---------- | --------- | ---- | +| AL | 16000 | 71 | 1136000 | 159000 | 0.72 | 818000 | 1998 | +| AZ | 55000 | 60 | 3300000 | 1485000 | 0.64 | 2112000 | 1998 | +| AR | 53000 | 65 | 3445000 | 1688000 | 0.59 | 2033000 | 1998 | +| CA | 450000 | 83 | 37350000 | 12326000 | 0.62 | 23157000 | 1998 | +| CO | 27000 | 72 | 1944000 | 1594000 | 0.7 | 1361000 | 1998 | + +Buat scatterplot asas untuk menunjukkan hubungan antara harga per paun madu dan negeri asalnya di A.S. Pastikan paksi `y` cukup tinggi untuk memaparkan semua negeri: + +```python +sns.relplot(x="priceperlb", y="state", data=honey, height=15, aspect=.5); +``` +![scatterplot 1](../../../../translated_images/scatter1.5e1aa5fd6706c5d12b5e503ccb77f8a930f8620f539f524ddf56a16c039a5d2f.ms.png) + +Sekarang, tunjukkan data yang sama dengan skema warna madu untuk menunjukkan bagaimana harga berubah dari tahun ke tahun. Anda boleh melakukannya dengan menambah parameter 'hue' untuk menunjukkan perubahan dari tahun ke tahun: + +> ✅ Ketahui lebih lanjut tentang [palet warna yang boleh anda gunakan dalam Seaborn](https://seaborn.pydata.org/tutorial/color_palettes.html) - cuba skema warna pelangi yang indah! + +```python +sns.relplot(x="priceperlb", y="state", hue="year", palette="YlOrBr", data=honey, height=15, aspect=.5); +``` +![scatterplot 2](../../../../translated_images/scatter2.c0041a58621ca702990b001aa0b20cd68c1e1814417139af8a7211a2bed51c5f.ms.png) + +Dengan perubahan skema warna ini, anda dapat melihat bahawa terdapat peningkatan yang jelas dari tahun ke tahun dalam harga madu per paun. Malah, jika anda melihat set data sampel untuk mengesahkan (pilih satu negeri, contohnya Arizona), anda dapat melihat corak kenaikan harga dari tahun ke tahun, dengan beberapa pengecualian: + +| state | numcol | yieldpercol | totalprod | stocks | priceperlb | prodvalue | year | +| ----- | ------ | ----------- | --------- | ------- | ---------- | --------- | ---- | +| AZ | 55000 | 60 | 3300000 | 1485000 | 0.64 | 2112000 | 1998 | +| AZ | 52000 | 62 | 3224000 | 1548000 | 0.62 | 1999000 | 1999 | +| AZ | 40000 | 59 | 2360000 | 1322000 | 0.73 | 1723000 | 2000 | +| AZ | 43000 | 59 | 2537000 | 1142000 | 0.72 | 1827000 | 2001 | +| AZ | 38000 | 63 | 2394000 | 1197000 | 1.08 | 2586000 | 2002 | +| AZ | 35000 | 72 | 2520000 | 983000 | 1.34 | 3377000 | 2003 | +| AZ | 32000 | 55 | 1760000 | 774000 | 1.11 | 1954000 | 2004 | +| AZ | 36000 | 50 | 1800000 | 720000 | 1.04 | 1872000 | 2005 | +| AZ | 30000 | 65 | 1950000 | 839000 | 0.91 | 1775000 | 2006 | +| AZ | 30000 | 64 | 1920000 | 902000 | 1.26 | 2419000 | 2007 | +| AZ | 25000 | 64 | 1600000 | 336000 | 1.26 | 2016000 | 2008 | +| AZ | 20000 | 52 | 1040000 | 562000 | 1.45 | 1508000 | 2009 | +| AZ | 24000 | 77 | 1848000 | 665000 | 1.52 | 2809000 | 2010 | +| AZ | 23000 | 53 | 1219000 | 427000 | 1.55 | 1889000 | 2011 | +| AZ | 22000 | 46 | 1012000 | 253000 | 1.79 | 1811000 | 2012 | + +Cara lain untuk memvisualkan perkembangan ini adalah dengan menggunakan saiz, bukannya warna. Untuk pengguna yang buta warna, ini mungkin pilihan yang lebih baik. Edit visualisasi anda untuk menunjukkan kenaikan harga dengan peningkatan saiz titik: + +```python +sns.relplot(x="priceperlb", y="state", size="year", data=honey, height=15, aspect=.5); +``` +Anda dapat melihat saiz titik semakin besar secara beransur-ansur. + +![scatterplot 3](../../../../translated_images/scatter3.3c160a3d1dcb36b37900ebb4cf97f34036f28ae2b7b8e6062766c7c1dfc00853.ms.png) + +Adakah ini kes mudah penawaran dan permintaan? Disebabkan faktor seperti perubahan iklim dan keruntuhan koloni, adakah madu semakin kurang tersedia untuk dibeli dari tahun ke tahun, dan oleh itu harga meningkat? + +Untuk mencari korelasi antara beberapa pembolehubah dalam dataset ini, mari kita terokai beberapa carta garis. + +## Carta Garis + +Soalan: Adakah terdapat kenaikan yang jelas dalam harga madu per paun dari tahun ke tahun? Anda boleh menemui jawapan ini dengan mudah dengan mencipta satu carta garis: + +```python +sns.relplot(x="year", y="priceperlb", kind="line", data=honey); +``` +Jawapan: Ya, dengan beberapa pengecualian sekitar tahun 2003: + +![line chart 1](../../../../translated_images/line1.f36eb465229a3b1fe385cdc93861aab3939de987d504b05de0b6cd567ef79f43.ms.png) + +✅ Oleh kerana Seaborn mengagregatkan data di sekitar satu garis, ia memaparkan "pengukuran berganda pada setiap nilai x dengan memplotkan purata dan selang keyakinan 95% di sekitar purata". [Sumber](https://seaborn.pydata.org/tutorial/relational.html). Tingkah laku yang memakan masa ini boleh dilumpuhkan dengan menambah `ci=None`. + +Soalan: Baiklah, pada tahun 2003 adakah kita juga melihat lonjakan dalam bekalan madu? Bagaimana jika anda melihat jumlah pengeluaran dari tahun ke tahun? + +```python +sns.relplot(x="year", y="totalprod", kind="line", data=honey); +``` + +![line chart 2](../../../../translated_images/line2.a5b3493dc01058af6402e657aaa9ae1125fafb5e7d6630c777aa60f900a544e4.ms.png) + +Jawapan: Tidak juga. Jika anda melihat jumlah pengeluaran, ia sebenarnya kelihatan meningkat pada tahun tersebut, walaupun secara amnya jumlah madu yang dihasilkan menurun sepanjang tahun-tahun ini. + +Soalan: Dalam kes itu, apa yang boleh menyebabkan lonjakan harga madu sekitar tahun 2003? + +Untuk menemui ini, anda boleh menerokai grid facet. + +## Grid Facet + +Grid facet mengambil satu aspek dataset anda (dalam kes ini, anda boleh memilih 'tahun' untuk mengelakkan terlalu banyak grid dihasilkan). Seaborn kemudian boleh membuat plot untuk setiap aspek tersebut berdasarkan koordinat x dan y pilihan anda untuk perbandingan visual yang lebih mudah. Adakah tahun 2003 menonjol dalam jenis perbandingan ini? + +Cipta grid facet dengan terus menggunakan `relplot` seperti yang disyorkan oleh [dokumentasi Seaborn](https://seaborn.pydata.org/generated/seaborn.FacetGrid.html?highlight=facetgrid#seaborn.FacetGrid). + +```python +sns.relplot( + data=honey, + x="yieldpercol", y="numcol", + col="year", + col_wrap=3, + kind="line" +``` +Dalam visualisasi ini, anda boleh membandingkan hasil per koloni dan bilangan koloni dari tahun ke tahun, bersebelahan dengan tetapan wrap pada 3 untuk lajur: + +![facet grid](../../../../translated_images/facet.6a34851dcd540050dcc0ead741be35075d776741668dd0e42f482c89b114c217.ms.png) + +Untuk dataset ini, tiada apa-apa yang kelihatan menonjol berkaitan bilangan koloni dan hasilnya, dari tahun ke tahun dan dari negeri ke negeri. Adakah terdapat cara lain untuk mencari korelasi antara kedua-dua pembolehubah ini? + +## Plot Garis Berganda + +Cuba plot multiline dengan meletakkan dua plot garis di atas satu sama lain, menggunakan 'despine' Seaborn untuk menghapuskan tulang belakang atas dan kanan, dan menggunakan `ax.twinx` [yang berasal dari Matplotlib](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.twinx.html). Twinx membolehkan carta berkongsi paksi x dan memaparkan dua paksi y. Jadi, paparkan hasil per koloni dan bilangan koloni, bertindih: + +```python +fig, ax = plt.subplots(figsize=(12,6)) +lineplot = sns.lineplot(x=honey['year'], y=honey['numcol'], data=honey, + label = 'Number of bee colonies', legend=False) +sns.despine() +plt.ylabel('# colonies') +plt.title('Honey Production Year over Year'); + +ax2 = ax.twinx() +lineplot2 = sns.lineplot(x=honey['year'], y=honey['yieldpercol'], ax=ax2, color="r", + label ='Yield per colony', legend=False) +sns.despine(right=False) +plt.ylabel('colony yield') +ax.figure.legend(); +``` +![superimposed plots](../../../../translated_images/dual-line.a4c28ce659603fab2c003f4df816733df2bf41d1facb7de27989ec9afbf01b33.ms.png) + +Walaupun tiada apa-apa yang kelihatan menonjol sekitar tahun 2003, ia membolehkan kita mengakhiri pelajaran ini dengan nota yang sedikit lebih gembira: walaupun terdapat penurunan bilangan koloni secara keseluruhan, bilangan koloni semakin stabil walaupun hasil per koloni semakin menurun. + +Teruskan, lebah, teruskan! + +🐝❤️ +## 🚀 Cabaran + +Dalam pelajaran ini, anda belajar sedikit lagi tentang kegunaan scatterplots dan grid garis, termasuk grid facet. Cabar diri anda untuk mencipta grid facet menggunakan dataset yang berbeza, mungkin yang anda gunakan sebelum pelajaran ini. Perhatikan berapa lama masa yang diambil untuk mencipta dan bagaimana anda perlu berhati-hati tentang bilangan grid yang perlu dilukis menggunakan teknik ini. +## [Kuiz Pasca-Kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/23) + +## Ulasan & Kajian Kendiri + +Carta garis boleh menjadi mudah atau agak kompleks. Lakukan sedikit pembacaan dalam [dokumentasi Seaborn](https://seaborn.pydata.org/generated/seaborn.lineplot.html) tentang pelbagai cara anda boleh membinanya. Cuba tingkatkan carta garis yang anda bina dalam pelajaran ini dengan kaedah lain yang disenaraikan dalam dokumen tersebut. +## Tugasan + +[Selami sarang lebah](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/3-Data-Visualization/12-visualization-relationships/assignment.md b/translations/ms/3-Data-Visualization/12-visualization-relationships/assignment.md new file mode 100644 index 00000000..f25a6421 --- /dev/null +++ b/translations/ms/3-Data-Visualization/12-visualization-relationships/assignment.md @@ -0,0 +1,25 @@ + +# Menyelami Sarang Lebah + +## Arahan + +Dalam pelajaran ini, anda mula melihat dataset mengenai lebah dan pengeluaran madu mereka sepanjang tempoh masa yang menyaksikan penurunan populasi koloni lebah secara keseluruhan. Selami lebih dalam dataset ini dan bina sebuah notebook yang dapat menceritakan kisah kesihatan populasi lebah, negeri demi negeri dan tahun demi tahun. Adakah anda menemui sesuatu yang menarik tentang dataset ini? + +## Rubrik + +| Cemerlang | Memadai | Perlu Penambahbaikan | +| ------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------- | ---------------------------------------- | +| Sebuah notebook disediakan dengan cerita yang disertakan dengan sekurang-kurangnya tiga carta berbeza yang menunjukkan aspek dataset, negeri demi negeri dan tahun demi tahun | Notebook kekurangan salah satu elemen ini | Notebook kekurangan dua elemen ini | + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/3-Data-Visualization/13-meaningful-visualizations/README.md b/translations/ms/3-Data-Visualization/13-meaningful-visualizations/README.md new file mode 100644 index 00000000..8e7d07a3 --- /dev/null +++ b/translations/ms/3-Data-Visualization/13-meaningful-visualizations/README.md @@ -0,0 +1,182 @@ + +# Membuat Visualisasi yang Bermakna + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/13-MeaningfulViz.png)| +|:---:| +| Visualisasi Bermakna - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +> "Jika anda menyeksa data cukup lama, ia akan mengaku apa sahaja" -- [Ronald Coase](https://en.wikiquote.org/wiki/Ronald_Coase) + +Salah satu kemahiran asas seorang saintis data adalah keupayaan untuk mencipta visualisasi data yang bermakna yang membantu menjawab soalan yang mungkin anda ada. Sebelum memvisualisasikan data anda, anda perlu memastikan bahawa ia telah dibersihkan dan disediakan, seperti yang telah anda lakukan dalam pelajaran sebelumnya. Selepas itu, anda boleh mula memutuskan cara terbaik untuk membentangkan data tersebut. + +Dalam pelajaran ini, anda akan mengkaji: + +1. Cara memilih jenis carta yang sesuai +2. Cara mengelakkan carta yang mengelirukan +3. Cara bekerja dengan warna +4. Cara menggayakan carta anda untuk kebolehbacaan +5. Cara membina penyelesaian carta animasi atau 3D +6. Cara membina visualisasi yang kreatif + +## [Kuiz Pra-Kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/24) + +## Pilih jenis carta yang sesuai + +Dalam pelajaran sebelumnya, anda telah bereksperimen dengan membina pelbagai jenis visualisasi data yang menarik menggunakan Matplotlib dan Seaborn untuk carta. Secara umum, anda boleh memilih [jenis carta yang sesuai](https://chartio.com/learn/charts/how-to-select-a-data-vizualization/) untuk soalan yang anda tanyakan menggunakan jadual ini: + +| Anda perlu: | Anda patut gunakan: | +| -------------------------- | ------------------------------- | +| Menunjukkan trend data dari masa ke masa | Garis | +| Membandingkan kategori | Bar, Pai | +| Membandingkan jumlah | Pai, Bar Bertindan | +| Menunjukkan hubungan | Serakan, Garis, Facet, Garis Berganda | +| Menunjukkan taburan | Serakan, Histogram, Kotak | +| Menunjukkan perkadaran | Pai, Donut, Wafel | + +> ✅ Bergantung pada komposisi data anda, anda mungkin perlu menukarnya daripada teks kepada angka untuk menyokong jenis carta tertentu. + +## Elakkan penipuan + +Walaupun seorang saintis data berhati-hati memilih carta yang sesuai untuk data yang betul, terdapat banyak cara data boleh dipaparkan untuk membuktikan sesuatu, sering kali dengan mengorbankan integriti data itu sendiri. Terdapat banyak contoh carta dan infografik yang mengelirukan! + +[![Bagaimana Carta Menipu oleh Alberto Cairo](../../../../translated_images/tornado.9f42168791208f970d6faefc11d1226d7ca89518013b14aa66b1c9edcd7678d2.ms.png)](https://www.youtube.com/watch?v=oX74Nge8Wkw "Bagaimana carta menipu") + +> 🎥 Klik imej di atas untuk ceramah persidangan tentang carta yang mengelirukan + +Carta ini membalikkan paksi X untuk menunjukkan kebalikan daripada kebenaran, berdasarkan tarikh: + +![carta buruk 1](../../../../translated_images/bad-chart-1.93130f495b748bedfb3423d91b1e754d9026e17f94ad967aecdc9ca7203373bf.ms.png) + +[Carta ini](https://media.firstcoastnews.com/assets/WTLV/images/170ae16f-4643-438f-b689-50d66ca6a8d8/170ae16f-4643-438f-b689-50d66ca6a8d8_1140x641.jpg) lebih mengelirukan, kerana mata tertarik ke kanan untuk menyimpulkan bahawa, dari masa ke masa, kes COVID telah menurun di pelbagai daerah. Sebenarnya, jika anda melihat dengan teliti pada tarikh, anda akan mendapati bahawa ia telah disusun semula untuk memberikan trend menurun yang mengelirukan. + +![carta buruk 2](../../../../translated_images/bad-chart-2.c20e36dd4e6f617c0c325878dd421a563885bbf30a394884c147438827254e0e.ms.jpg) + +Contoh terkenal ini menggunakan warna DAN paksi Y yang terbalik untuk menipu: bukannya menyimpulkan bahawa kematian akibat senjata meningkat selepas penggubalan undang-undang mesra senjata, mata sebenarnya tertipu untuk berfikir sebaliknya: + +![carta buruk 3](../../../../translated_images/bad-chart-3.6865d0afac4108d737558d90a61547d23a8722896397ec792264ee51a1be4be5.ms.jpg) + +Carta pelik ini menunjukkan bagaimana perkadaran boleh dimanipulasi, dengan kesan yang lucu: + +![carta buruk 4](../../../../translated_images/bad-chart-4.68cfdf4011b454471053ee1231172747e1fbec2403b4443567f1dc678134f4f2.ms.jpg) + +Membandingkan perkara yang tidak boleh dibandingkan adalah satu lagi helah yang tidak jujur. Terdapat [laman web yang hebat](https://tylervigen.com/spurious-correlations) tentang 'hubungan palsu' yang memaparkan 'fakta' yang mengaitkan perkara seperti kadar perceraian di Maine dan penggunaan marjerin. Kumpulan Reddit juga mengumpulkan [penggunaan data yang buruk](https://www.reddit.com/r/dataisugly/top/?t=all). + +Adalah penting untuk memahami betapa mudahnya mata boleh tertipu oleh carta yang mengelirukan. Walaupun niat saintis data adalah baik, pemilihan jenis carta yang salah, seperti carta pai yang menunjukkan terlalu banyak kategori, boleh mengelirukan. + +## Warna + +Anda telah melihat dalam carta 'keganasan senjata Florida' di atas bagaimana warna boleh memberikan lapisan makna tambahan kepada carta, terutamanya yang tidak direka menggunakan perpustakaan seperti Matplotlib dan Seaborn yang dilengkapi dengan pelbagai perpustakaan warna dan palet yang telah disahkan. Jika anda membuat carta secara manual, lakukan sedikit kajian tentang [teori warna](https://colormatters.com/color-and-design/basic-color-theory). + +> ✅ Sedarilah, semasa mereka bentuk carta, bahawa kebolehcapaian adalah aspek penting dalam visualisasi. Sesetengah pengguna anda mungkin buta warna - adakah carta anda dipaparkan dengan baik untuk pengguna dengan masalah penglihatan? + +Berhati-hati semasa memilih warna untuk carta anda, kerana warna boleh menyampaikan makna yang mungkin tidak anda maksudkan. 'Wanita merah jambu' dalam carta 'ketinggian' di atas menyampaikan makna 'feminin' yang jelas yang menambah keanehan carta itu sendiri. + +Walaupun [makna warna](https://colormatters.com/color-symbolism/the-meanings-of-colors) mungkin berbeza di bahagian dunia yang berlainan, dan cenderung berubah mengikut bayangannya. Secara umum, makna warna termasuk: + +| Warna | Makna | +| ------ | ------------------- | +| merah | kuasa | +| biru | kepercayaan, kesetiaan | +| kuning | kebahagiaan, amaran | +| hijau | ekologi, nasib, cemburu | +| ungu | kebahagiaan | +| jingga | keceriaan | + +Jika anda ditugaskan untuk membina carta dengan warna tersuai, pastikan carta anda boleh diakses dan warna yang anda pilih selaras dengan makna yang anda cuba sampaikan. + +## Menggayakan carta anda untuk kebolehbacaan + +Carta tidak bermakna jika ia tidak boleh dibaca! Luangkan masa untuk mempertimbangkan gaya lebar dan tinggi carta anda supaya ia berskala dengan baik dengan data anda. Jika satu pemboleh ubah (seperti semua 50 negeri) perlu dipaparkan, tunjukkan secara menegak pada paksi Y jika boleh untuk mengelakkan carta yang perlu ditatal secara mendatar. + +Labelkan paksi anda, sediakan legenda jika perlu, dan tawarkan tooltip untuk pemahaman data yang lebih baik. + +Jika data anda berbentuk teks dan panjang pada paksi X, anda boleh memiringkan teks untuk kebolehbacaan yang lebih baik. [Matplotlib](https://matplotlib.org/stable/tutorials/toolkits/mplot3d.html) menawarkan pemplotan 3D, jika data anda menyokongnya. Visualisasi data yang canggih boleh dihasilkan menggunakan `mpl_toolkits.mplot3d`. + +![plot 3d](../../../../translated_images/3d.0cec12bcc60f0ce7284c63baed1411a843e24716f7d7425de878715ebad54a15.ms.png) + +## Paparan carta animasi dan 3D + +Beberapa visualisasi data terbaik hari ini adalah animasi. Shirley Wu mempunyai visualisasi yang menakjubkan menggunakan D3, seperti '[film flowers](http://bl.ocks.org/sxywu/raw/d612c6c653fb8b4d7ff3d422be164a5d/)', di mana setiap bunga adalah visualisasi sebuah filem. Contoh lain untuk Guardian ialah 'bussed out', pengalaman interaktif yang menggabungkan visualisasi dengan Greensock dan D3 serta format artikel scrollytelling untuk menunjukkan bagaimana NYC menangani masalah gelandangan dengan menghantar orang keluar dari bandar. + +![busing](../../../../translated_images/busing.7b9e3b41cd4b981c6d63922cd82004cc1cf18895155536c1d98fcc0999bdd23e.ms.png) + +> "Bussed Out: How America Moves its Homeless" daripada [the Guardian](https://www.theguardian.com/us-news/ng-interactive/2017/dec/20/bussed-out-america-moves-homeless-people-country-study). Visualisasi oleh Nadieh Bremer & Shirley Wu + +Walaupun pelajaran ini tidak mencukupi untuk mengajar perpustakaan visualisasi yang berkuasa ini secara mendalam, cuba gunakan D3 dalam aplikasi Vue.js menggunakan perpustakaan untuk memaparkan visualisasi buku "Dangerous Liaisons" sebagai rangkaian sosial animasi. + +> "Les Liaisons Dangereuses" ialah novel epistolari, atau novel yang disampaikan sebagai siri surat. Ditulis pada tahun 1782 oleh Choderlos de Laclos, ia menceritakan kisah manuver sosial yang kejam dan tidak bermoral oleh dua protagonis yang bersaing dalam kalangan bangsawan Perancis pada akhir abad ke-18, Vicomte de Valmont dan Marquise de Merteuil. Kedua-duanya menemui kehancuran mereka pada akhirnya tetapi tidak tanpa menyebabkan kerosakan sosial yang besar. Novel ini berkembang sebagai siri surat yang ditulis kepada pelbagai orang dalam lingkaran mereka, merancang untuk membalas dendam atau sekadar membuat masalah. Cipta visualisasi surat-surat ini untuk mengenal pasti 'kingpin' utama dalam naratif, secara visual. + +Anda akan melengkapkan aplikasi web yang akan memaparkan pandangan animasi rangkaian sosial ini. Ia menggunakan perpustakaan yang dibina untuk mencipta [visual rangkaian](https://github.com/emiliorizzo/vue-d3-network) menggunakan Vue.js dan D3. Apabila aplikasi berjalan, anda boleh menarik nod di skrin untuk menyusun semula data. + +![liaisons](../../../../translated_images/liaisons.7b440b28f6d07ea430244fdf1fc4c64ff48f473f143b8e921846eda1c302aeba.ms.png) + +## Projek: Bina carta untuk menunjukkan rangkaian menggunakan D3.js + +> Folder pelajaran ini termasuk folder `solution` di mana anda boleh menemui projek yang telah siap, untuk rujukan anda. + +1. Ikuti arahan dalam fail README.md di akar folder pemula. Pastikan anda mempunyai NPM dan Node.js berjalan di mesin anda sebelum memasang kebergantungan projek anda. + +2. Buka folder `starter/src`. Anda akan menemui folder `assets` di mana anda boleh menemui fail .json dengan semua surat dari novel, bernombor, dengan anotasi 'to' dan 'from'. + +3. Lengkapkan kod dalam `components/Nodes.vue` untuk membolehkan visualisasi. Cari kaedah yang dipanggil `createLinks()` dan tambahkan gelung bersarang berikut. + +Gelung melalui objek .json untuk menangkap data 'to' dan 'from' untuk surat-surat dan bina objek `links` supaya perpustakaan visualisasi boleh menggunakannya: + +```javascript +//loop through letters + let f = 0; + let t = 0; + for (var i = 0; i < letters.length; i++) { + for (var j = 0; j < characters.length; j++) { + + if (characters[j] == letters[i].from) { + f = j; + } + if (characters[j] == letters[i].to) { + t = j; + } + } + this.links.push({ sid: f, tid: t }); + } + ``` + +Jalankan aplikasi anda dari terminal (npm run serve) dan nikmati visualisasi! + +## 🚀 Cabaran + +Jelajahi internet untuk mencari visualisasi yang mengelirukan. Bagaimana pengarang menipu pengguna, dan adakah ia disengajakan? Cuba betulkan visualisasi untuk menunjukkan bagaimana ia sepatutnya kelihatan. + +## [Kuiz Pasca-Kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/25) + +## Kajian & Pembelajaran Kendiri + +Berikut adalah beberapa artikel untuk dibaca tentang visualisasi data yang mengelirukan: + +https://gizmodo.com/how-to-lie-with-data-visualization-1563576606 + +http://ixd.prattsi.org/2017/12/visual-lies-usability-in-deceptive-data-visualizations/ + +Lihat visualisasi menarik ini untuk aset dan artifak sejarah: + +https://handbook.pubpub.org/ + +Baca artikel ini tentang bagaimana animasi boleh meningkatkan visualisasi anda: + +https://medium.com/@EvanSinar/use-animation-to-supercharge-data-visualization-cd905a882ad4 + +## Tugasan + +[Bina visualisasi tersuai anda sendiri](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/3-Data-Visualization/13-meaningful-visualizations/assignment.md b/translations/ms/3-Data-Visualization/13-meaningful-visualizations/assignment.md new file mode 100644 index 00000000..363f6d35 --- /dev/null +++ b/translations/ms/3-Data-Visualization/13-meaningful-visualizations/assignment.md @@ -0,0 +1,25 @@ + +# Bina visualisasi tersuai anda sendiri + +## Arahan + +Menggunakan sampel kod dalam projek ini untuk mencipta rangkaian sosial, reka data interaksi sosial anda sendiri. Anda boleh memetakan penggunaan media sosial anda atau membuat diagram ahli keluarga anda. Cipta aplikasi web yang menarik yang menunjukkan visualisasi unik bagi rangkaian sosial. + +## Rubrik + +Cemerlang | Memadai | Perlu Penambahbaikan +--- | --- | --- | +Sebuah repo GitHub disediakan dengan kod yang berfungsi dengan baik (cuba untuk menerapkannya sebagai aplikasi web statik) dan mempunyai README yang diberi anotasi yang menerangkan projek | Repo tidak berfungsi dengan baik atau tidak didokumentasikan dengan baik | Repo tidak berfungsi dengan baik dan tidak didokumentasikan dengan baik + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/3-Data-Visualization/13-meaningful-visualizations/solution/README.md b/translations/ms/3-Data-Visualization/13-meaningful-visualizations/solution/README.md new file mode 100644 index 00000000..cb45cb18 --- /dev/null +++ b/translations/ms/3-Data-Visualization/13-meaningful-visualizations/solution/README.md @@ -0,0 +1,40 @@ + +# Projek visualisasi data Dangerous Liaisons + +Untuk memulakan, pastikan anda mempunyai NPM dan Node yang berjalan di mesin anda. Pasang kebergantungan (npm install) dan kemudian jalankan projek secara tempatan (npm run serve): + +## Persediaan projek +``` +npm install +``` + +### Kompilasi dan muat semula secara automatik untuk pembangunan +``` +npm run serve +``` + +### Kompilasi dan minimakan untuk pengeluaran +``` +npm run build +``` + +### Lakukan lint dan perbaiki fail +``` +npm run lint +``` + +### Sesuaikan konfigurasi +Lihat [Rujukan Konfigurasi](https://cli.vuejs.org/config/). + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/3-Data-Visualization/13-meaningful-visualizations/starter/README.md b/translations/ms/3-Data-Visualization/13-meaningful-visualizations/starter/README.md new file mode 100644 index 00000000..8181284d --- /dev/null +++ b/translations/ms/3-Data-Visualization/13-meaningful-visualizations/starter/README.md @@ -0,0 +1,40 @@ + +# Projek visualisasi data Dangerous Liaisons + +Untuk memulakan, pastikan anda mempunyai NPM dan Node yang berjalan pada mesin anda. Pasang kebergantungan (npm install) dan kemudian jalankan projek secara tempatan (npm run serve): + +## Persediaan projek +``` +npm install +``` + +### Kompilasi dan muat semula secara automatik untuk pembangunan +``` +npm run serve +``` + +### Kompilasi dan minimisasi untuk pengeluaran +``` +npm run build +``` + +### Lint dan pembaikan fail +``` +npm run lint +``` + +### Sesuaikan konfigurasi +Lihat [Rujukan Konfigurasi](https://cli.vuejs.org/config/). + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/3-Data-Visualization/R/09-visualization-quantities/README.md b/translations/ms/3-Data-Visualization/R/09-visualization-quantities/README.md new file mode 100644 index 00000000..96124fff --- /dev/null +++ b/translations/ms/3-Data-Visualization/R/09-visualization-quantities/README.md @@ -0,0 +1,230 @@ + +# Memvisualkan Kuantiti +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](https://github.com/microsoft/Data-Science-For-Beginners/blob/main/sketchnotes/09-Visualizing-Quantities.png)| +|:---:| +| Memvisualkan Kuantiti - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +Dalam pelajaran ini, anda akan meneroka cara menggunakan beberapa perpustakaan pakej R yang tersedia untuk belajar mencipta visualisasi menarik berdasarkan konsep kuantiti. Dengan menggunakan set data yang telah dibersihkan tentang burung di Minnesota, anda boleh mempelajari banyak fakta menarik tentang hidupan liar tempatan. +## [Kuiz pra-kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/16) + +## Perhatikan rentang sayap dengan ggplot2 +Satu perpustakaan yang sangat baik untuk mencipta plot dan carta yang mudah dan canggih adalah [ggplot2](https://cran.r-project.org/web/packages/ggplot2/index.html). Secara umum, proses memplot data menggunakan perpustakaan ini melibatkan mengenal pasti bahagian dalam dataframe yang ingin anda sasarkan, melakukan sebarang transformasi data yang diperlukan, menetapkan nilai paksi x dan y, memilih jenis plot yang ingin ditunjukkan, dan kemudian memaparkan plot tersebut. + +`ggplot2` adalah sistem untuk mencipta grafik secara deklaratif, berdasarkan The Grammar of Graphics. [Grammar of Graphics](https://en.wikipedia.org/wiki/Ggplot2) adalah skema umum untuk visualisasi data yang memecahkan grafik kepada komponen semantik seperti skala dan lapisan. Dalam erti kata lain, kemudahan mencipta plot dan grafik untuk data univariat atau multivariat dengan sedikit kod menjadikan `ggplot2` pakej paling popular untuk visualisasi dalam R. Pengguna memberitahu `ggplot2` bagaimana memetakan pemboleh ubah kepada estetika, primitif grafik yang digunakan, dan `ggplot2` akan menguruskan selebihnya. + +> ✅ Plot = Data + Estetika + Geometri +> - Data merujuk kepada set data +> - Estetika menunjukkan pemboleh ubah yang dikaji (pemboleh ubah x dan y) +> - Geometri merujuk kepada jenis plot (plot garis, plot bar, dll.) + +Pilih geometri terbaik (jenis plot) mengikut data anda dan cerita yang ingin anda sampaikan melalui plot. + +> - Untuk menganalisis trend: garis, lajur +> - Untuk membandingkan nilai: bar, lajur, pai, scatterplot +> - Untuk menunjukkan bagaimana bahagian berkaitan dengan keseluruhan: pai +> - Untuk menunjukkan taburan data: scatterplot, bar +> - Untuk menunjukkan hubungan antara nilai: garis, scatterplot, bubble + +✅ Anda juga boleh melihat [cheatsheet](https://nyu-cdsc.github.io/learningr/assets/data-visualization-2.1.pdf) deskriptif ini untuk ggplot2. + +## Bina plot garis tentang nilai rentang sayap burung + +Buka konsol R dan import set data. +> Nota: Set data disimpan di root repo ini dalam folder `/data`. + +Mari kita import set data dan perhatikan kepala (5 baris teratas) data. + +```r +birds <- read.csv("../../data/birds.csv",fileEncoding="UTF-8-BOM") +head(birds) +``` +Kepala data mengandungi campuran teks dan nombor: + +| | Nama | NamaSaintifik | Kategori | Order | Famili | Genus | StatusKonservasi | PanjangMin | PanjangMax | BeratBadanMin | BeratBadanMax | RentangSayapMin | RentangSayapMax | +| ---: | :--------------------------- | :--------------------- | :-------------------- | :----------- | :------- | :---------- | :----------------- | ----------: | ----------: | -------------: | -------------: | ---------------: | ---------------: | +| 0 | Itik bersiul perut hitam | Dendrocygna autumnalis | Itik/Angsa/BurungAir | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 | +| 1 | Itik bersiul fulvous | Dendrocygna bicolor | Itik/Angsa/BurungAir | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 | +| 2 | Angsa salji | Anser caerulescens | Itik/Angsa/BurungAir | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 | +| 3 | Angsa Ross | Anser rossii | Itik/Angsa/BurungAir | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 | +| 4 | Angsa putih besar | Anser albifrons | Itik/Angsa/BurungAir | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 | + +Mari kita mula memplot beberapa data numerik menggunakan plot garis asas. Katakan anda ingin melihat rentang sayap maksimum untuk burung-burung menarik ini. + +```r +install.packages("ggplot2") +library("ggplot2") +ggplot(data=birds, aes(x=Name, y=MaxWingspan,group=1)) + + geom_line() +``` +Di sini, anda memasang pakej `ggplot2` dan kemudian mengimportnya ke dalam workspace menggunakan arahan `library("ggplot2")`. Untuk memplot sebarang plot dalam ggplot, fungsi `ggplot()` digunakan dan anda menentukan set data, pemboleh ubah x dan y sebagai atribut. Dalam kes ini, kita menggunakan fungsi `geom_line()` kerana kita ingin memplot plot garis. + +![MaxWingspan-lineplot](../../../../../translated_images/MaxWingspan-lineplot.b12169f99d26fdd263f291008dfd73c18a4ba8f3d32b1fda3d74af51a0a28616.ms.png) + +Apa yang anda perhatikan dengan segera? Nampaknya terdapat sekurang-kurangnya satu outlier - itu rentang sayap yang sangat besar! Rentang sayap lebih dari 2000 sentimeter bersamaan lebih dari 20 meter - adakah terdapat Pterodaktil berkeliaran di Minnesota? Mari kita siasat. + +Walaupun anda boleh melakukan pengisihan cepat dalam Excel untuk mencari outlier tersebut, yang mungkin adalah kesalahan taip, teruskan proses visualisasi dengan bekerja dari dalam plot. + +Tambahkan label pada paksi x untuk menunjukkan jenis burung yang dimaksudkan: + +```r +ggplot(data=birds, aes(x=Name, y=MaxWingspan,group=1)) + + geom_line() + + theme(axis.text.x = element_text(angle = 45, hjust=1))+ + xlab("Birds") + + ylab("Wingspan (CM)") + + ggtitle("Max Wingspan in Centimeters") +``` +Kita menentukan sudut dalam `theme` dan menentukan label paksi x dan y dalam `xlab()` dan `ylab()` masing-masing. `ggtitle()` memberikan nama kepada graf/plot. + +![MaxWingspan-lineplot-improved](../../../../../translated_images/MaxWingspan-lineplot-improved.04b73b4d5a59552a6bc7590678899718e1f065abe9eada9ebb4148939b622fd4.ms.png) + +Walaupun dengan putaran label ditetapkan kepada 45 darjah, masih terlalu banyak untuk dibaca. Mari cuba strategi lain: label hanya outlier tersebut dan tetapkan label dalam carta. Anda boleh menggunakan carta scatter untuk memberikan lebih ruang kepada pelabelan: + +```r +ggplot(data=birds, aes(x=Name, y=MaxWingspan,group=1)) + + geom_point() + + geom_text(aes(label=ifelse(MaxWingspan>500,as.character(Name),'')),hjust=0,vjust=0) + + theme(axis.title.x=element_blank(), axis.text.x=element_blank(), axis.ticks.x=element_blank()) + ylab("Wingspan (CM)") + + ggtitle("Max Wingspan in Centimeters") + +``` +Apa yang berlaku di sini? Anda menggunakan fungsi `geom_point()` untuk memplot titik scatter. Dengan ini, anda menambahkan label untuk burung yang mempunyai `MaxWingspan > 500` dan juga menyembunyikan label pada paksi x untuk mengurangkan kekusutan pada plot. + +Apa yang anda temui? + +![MaxWingspan-scatterplot](../../../../../translated_images/MaxWingspan-scatterplot.60dc9e0e19d32700283558f253841fdab5104abb62bc96f7d97f9c0ee857fa8b.ms.png) + +## Tapis data anda + +Kedua-dua Bald Eagle dan Prairie Falcon, walaupun mungkin burung yang sangat besar, nampaknya salah dilabel, dengan tambahan 0 pada rentang sayap maksimum mereka. Tidak mungkin anda akan bertemu Bald Eagle dengan rentang sayap 25 meter, tetapi jika ya, sila maklumkan kepada kami! Mari kita cipta dataframe baru tanpa dua outlier tersebut: + +```r +birds_filtered <- subset(birds, MaxWingspan < 500) + +ggplot(data=birds_filtered, aes(x=Name, y=MaxWingspan,group=1)) + + geom_point() + + ylab("Wingspan (CM)") + + xlab("Birds") + + ggtitle("Max Wingspan in Centimeters") + + geom_text(aes(label=ifelse(MaxWingspan>500,as.character(Name),'')),hjust=0,vjust=0) + + theme(axis.text.x=element_blank(), axis.ticks.x=element_blank()) +``` +Kami mencipta dataframe baru `birds_filtered` dan kemudian memplot scatter plot. Dengan menapis outlier, data anda kini lebih koheren dan mudah difahami. + +![MaxWingspan-scatterplot-improved](../../../../../translated_images/MaxWingspan-scatterplot-improved.7d0af81658c65f3e75b8fedeb2335399e31108257e48db15d875ece608272051.ms.png) + +Sekarang kita mempunyai set data yang lebih bersih sekurang-kurangnya dari segi rentang sayap, mari kita temui lebih banyak tentang burung-burung ini. + +Walaupun plot garis dan scatter boleh memaparkan maklumat tentang nilai data dan taburannya, kita ingin memikirkan nilai-nilai yang wujud dalam set data ini. Anda boleh mencipta visualisasi untuk menjawab soalan berikut tentang kuantiti: + +> Berapa banyak kategori burung yang ada, dan berapa bilangannya? +> Berapa banyak burung yang pupus, terancam, jarang, atau biasa? +> Berapa banyak genus dan order yang terdapat dalam terminologi Linnaeus? +## Terokai carta bar + +Carta bar adalah praktikal apabila anda perlu menunjukkan pengelompokan data. Mari kita terokai kategori burung yang wujud dalam set data ini untuk melihat mana yang paling biasa berdasarkan bilangan. +Mari kita cipta carta bar pada data yang telah ditapis. + +```r +install.packages("dplyr") +install.packages("tidyverse") + +library(lubridate) +library(scales) +library(dplyr) +library(ggplot2) +library(tidyverse) + +birds_filtered %>% group_by(Category) %>% + summarise(n=n(), + MinLength = mean(MinLength), + MaxLength = mean(MaxLength), + MinBodyMass = mean(MinBodyMass), + MaxBodyMass = mean(MaxBodyMass), + MinWingspan=mean(MinWingspan), + MaxWingspan=mean(MaxWingspan)) %>% + gather("key", "value", - c(Category, n)) %>% + ggplot(aes(x = Category, y = value, group = key, fill = key)) + + geom_bar(stat = "identity") + + scale_fill_manual(values = c("#D62728", "#FF7F0E", "#8C564B","#2CA02C", "#1F77B4", "#9467BD")) + + xlab("Category")+ggtitle("Birds of Minnesota") + +``` +Dalam snippet berikut, kami memasang pakej [dplyr](https://www.rdocumentation.org/packages/dplyr/versions/0.7.8) dan [lubridate](https://www.rdocumentation.org/packages/lubridate/versions/1.8.0) untuk membantu memanipulasi dan mengelompokkan data bagi memplot carta bar bertindan. Pertama, anda mengelompokkan data berdasarkan `Category` burung dan kemudian meringkaskan lajur `MinLength`, `MaxLength`, `MinBodyMass`, `MaxBodyMass`, `MinWingspan`, `MaxWingspan`. Kemudian, plot carta bar menggunakan pakej `ggplot2` dan tentukan warna untuk kategori yang berbeza serta labelnya. + +![Stacked bar chart](../../../../../translated_images/stacked-bar-chart.0c92264e89da7b391a7490224d1e7059a020e8b74dcd354414aeac78871c02f1.ms.png) + +Namun, carta bar ini sukar dibaca kerana terdapat terlalu banyak data yang tidak dikelompokkan. Anda perlu memilih hanya data yang ingin anda plot, jadi mari kita lihat panjang burung berdasarkan kategori mereka. + +Tapis data anda untuk hanya memasukkan kategori burung. + +Memandangkan terdapat banyak kategori, anda boleh memaparkan carta ini secara menegak dan menyesuaikan ketinggiannya untuk memuatkan semua data: + +```r +birds_count<-dplyr::count(birds_filtered, Category, sort = TRUE) +birds_count$Category <- factor(birds_count$Category, levels = birds_count$Category) +ggplot(birds_count,aes(Category,n))+geom_bar(stat="identity")+coord_flip() +``` +Anda mula-mula mengira nilai unik dalam lajur `Category` dan kemudian menyusunnya ke dalam dataframe baru `birds_count`. Data yang disusun ini kemudian difaktorkan pada tahap yang sama supaya ia diplotkan dalam cara yang disusun. Menggunakan `ggplot2` anda kemudian memplot data dalam carta bar. `coord_flip()` memplot bar mendatar. + +![category-length](../../../../../translated_images/category-length.7e34c296690e85d64f7e4d25a56077442683eca96c4f5b4eae120a64c0755636.ms.png) + +Carta bar ini menunjukkan pandangan yang baik tentang bilangan burung dalam setiap kategori. Sekilas pandang, anda dapat melihat bahawa bilangan burung terbesar di rantau ini adalah dalam kategori Itik/Angsa/BurungAir. Minnesota adalah 'tanah 10,000 tasik' jadi ini tidak mengejutkan! + +✅ Cuba beberapa kiraan lain pada set data ini. Adakah sesuatu yang mengejutkan anda? + +## Membandingkan data + +Anda boleh mencuba perbandingan data yang dikelompokkan dengan mencipta paksi baru. Cuba perbandingan MaxLength burung, berdasarkan kategorinya: + +```r +birds_grouped <- birds_filtered %>% + group_by(Category) %>% + summarise( + MaxLength = max(MaxLength, na.rm = T), + MinLength = max(MinLength, na.rm = T) + ) %>% + arrange(Category) + +ggplot(birds_grouped,aes(Category,MaxLength))+geom_bar(stat="identity")+coord_flip() +``` +Kami mengelompokkan data `birds_filtered` mengikut `Category` dan kemudian memplot graf bar. + +![comparing data](../../../../../translated_images/comparingdata.f486a450d61c7ca5416f27f3f55a6a4465d00df3be5e6d33936e9b07b95e2fdd.ms.png) + +Tiada yang mengejutkan di sini: burung kolibri mempunyai MaxLength paling kecil berbanding Pelikan atau Angsa. Data yang masuk akal secara logik adalah sesuatu yang baik! + +Anda boleh mencipta visualisasi carta bar yang lebih menarik dengan meletakkan data secara bertindih. Mari kita tindihkan Panjang Minimum dan Maksimum pada kategori burung tertentu: + +```r +ggplot(data=birds_grouped, aes(x=Category)) + + geom_bar(aes(y=MaxLength), stat="identity", position ="identity", fill='blue') + + geom_bar(aes(y=MinLength), stat="identity", position="identity", fill='orange')+ + coord_flip() +``` +![super-imposed values](../../../../../translated_images/superimposed-values.5363f0705a1da4167625a373a1064331ea3cb7a06a297297d0734fcc9b3819a0.ms.png) + +## 🚀 Cabaran + +Set data burung ini menawarkan banyak maklumat tentang pelbagai jenis burung dalam ekosistem tertentu. Cari di internet dan lihat jika anda boleh menemui set data lain yang berkaitan dengan burung. Latih diri anda membina carta dan graf tentang burung-burung ini untuk menemui fakta yang anda tidak sedari. +## [Kuiz pasca-kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/17) + +## Ulasan & Kajian Kendiri + +Pelajaran pertama ini telah memberikan anda beberapa maklumat tentang cara menggunakan `ggplot2` untuk memvisualkan kuantiti. Lakukan penyelidikan tentang cara lain untuk bekerja dengan set data untuk visualisasi. Cari dan lihat set data yang boleh anda visualkan menggunakan pakej lain seperti [Lattice](https://stat.ethz.ch/R-manual/R-devel/library/lattice/html/Lattice.html) dan [Plotly](https://github.com/plotly/plotly.R#readme). + +## Tugasan +[Lines, Scatters, and Bars](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/3-Data-Visualization/R/09-visualization-quantities/assignment.md b/translations/ms/3-Data-Visualization/R/09-visualization-quantities/assignment.md new file mode 100644 index 00000000..6328e563 --- /dev/null +++ b/translations/ms/3-Data-Visualization/R/09-visualization-quantities/assignment.md @@ -0,0 +1,25 @@ + +# Garisan, Taburan dan Bar + +## Arahan + +Dalam pelajaran ini, anda telah bekerja dengan carta garisan, plot taburan, dan carta bar untuk menunjukkan fakta menarik tentang dataset ini. Dalam tugasan ini, selami lebih dalam dataset untuk menemui fakta tentang jenis burung tertentu. Sebagai contoh, cipta skrip yang memvisualkan semua data menarik yang anda boleh temui tentang Angsa Salji. Gunakan tiga plot yang disebutkan di atas untuk menceritakan sebuah kisah dalam buku nota anda. + +## Rubrik + +Cemerlang | Memadai | Perlu Penambahbaikan +--- | --- | -- | +Skrip disediakan dengan anotasi yang baik, penceritaan yang kukuh, dan graf yang menarik | Skrip kekurangan salah satu elemen ini | Skrip kekurangan dua elemen ini + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/3-Data-Visualization/R/10-visualization-distributions/README.md b/translations/ms/3-Data-Visualization/R/10-visualization-distributions/README.md new file mode 100644 index 00000000..ede4bab4 --- /dev/null +++ b/translations/ms/3-Data-Visualization/R/10-visualization-distributions/README.md @@ -0,0 +1,183 @@ + +# Memvisualkan Taburan + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](https://github.com/microsoft/Data-Science-For-Beginners/blob/main/sketchnotes/10-Visualizing-Distributions.png)| +|:---:| +| Memvisualkan Taburan - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +Dalam pelajaran sebelum ini, anda telah mempelajari beberapa fakta menarik tentang dataset burung di Minnesota. Anda menemui data yang salah dengan memvisualkan nilai luar biasa dan melihat perbezaan antara kategori burung berdasarkan panjang maksimum mereka. + +## [Kuiz pra-kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/18) +## Terokai dataset burung + +Satu lagi cara untuk menyelidik data adalah dengan melihat taburannya, atau bagaimana data disusun sepanjang satu paksi. Sebagai contoh, mungkin anda ingin mengetahui taburan umum, untuk dataset ini, bagi lebar sayap maksimum atau jisim badan maksimum burung di Minnesota. + +Mari kita temui beberapa fakta tentang taburan data dalam dataset ini. Dalam konsol R anda, import `ggplot2` dan pangkalan data. Keluarkan nilai luar biasa dari pangkalan data seperti yang dilakukan dalam topik sebelumnya. + +```r +library(ggplot2) + +birds <- read.csv("../../data/birds.csv",fileEncoding="UTF-8-BOM") + +birds_filtered <- subset(birds, MaxWingspan < 500) +head(birds_filtered) +``` +| | Nama | NamaSaintifik | Kategori | Order | Keluarga | Genus | StatusKonservasi | PanjangMin | PanjangMax | JisimBadanMin | JisimBadanMax | LebarSayapMin | LebarSayapMax | +| ---: | :--------------------------- | :--------------------- | :-------------------- | :----------- | :------- | :---------- | :----------------- | ----------: | ----------: | -------------: | -------------: | -------------: | -------------: | +| 0 | Itik bersiul perut hitam | Dendrocygna autumnalis | Itik/Angsa/BurungAir | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 | +| 1 | Itik bersiul fulvous | Dendrocygna bicolor | Itik/Angsa/BurungAir | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 | +| 2 | Angsa salji | Anser caerulescens | Itik/Angsa/BurungAir | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 | +| 3 | Angsa Ross | Anser rossii | Itik/Angsa/BurungAir | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 | +| 4 | Angsa putih besar | Anser albifrons | Itik/Angsa/BurungAir | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 | + +Secara umum, anda boleh dengan cepat melihat bagaimana data ditaburkan dengan menggunakan plot serakan seperti yang kita lakukan dalam pelajaran sebelumnya: + +```r +ggplot(data=birds_filtered, aes(x=Order, y=MaxLength,group=1)) + + geom_point() + + ggtitle("Max Length per order") + coord_flip() +``` +![panjang maksimum per order](../../../../../translated_images/max-length-per-order.e5b283d952c78c12b091307c5d3cf67132dad6fefe80a073353b9dc5c2bd3eb8.ms.png) + +Ini memberikan gambaran umum tentang taburan panjang badan per Order burung, tetapi ini bukan cara terbaik untuk memaparkan taburan sebenar. Tugas ini biasanya dilakukan dengan mencipta Histogram. +## Bekerja dengan histogram + +`ggplot2` menawarkan cara yang sangat baik untuk memvisualkan taburan data menggunakan Histogram. Jenis carta ini seperti carta bar di mana taburan dapat dilihat melalui naik dan turunnya bar. Untuk membina histogram, anda memerlukan data berangka. Untuk membina Histogram, anda boleh memplot carta dengan mendefinisikan jenisnya sebagai 'hist' untuk Histogram. Carta ini menunjukkan taburan JisimBadanMax untuk keseluruhan julat data dataset. Dengan membahagikan array data kepada bin yang lebih kecil, ia dapat memaparkan taburan nilai data: + +```r +ggplot(data = birds_filtered, aes(x = MaxBodyMass)) + + geom_histogram(bins=10)+ylab('Frequency') +``` +![taburan seluruh dataset](../../../../../translated_images/distribution-over-the-entire-dataset.d22afd3fa96be854e4c82213fedec9e3703cba753d07fad4606aadf58cf7e78e.ms.png) + +Seperti yang anda lihat, kebanyakan daripada 400+ burung dalam dataset ini berada dalam julat di bawah 2000 untuk Jisim Badan Maksimum mereka. Dapatkan lebih banyak wawasan tentang data dengan menukar parameter `bins` kepada nombor yang lebih tinggi, seperti 30: + +```r +ggplot(data = birds_filtered, aes(x = MaxBodyMass)) + geom_histogram(bins=30)+ylab('Frequency') +``` + +![taburan-30bins](../../../../../translated_images/distribution-30bins.6a3921ea7a421bf71f06bf5231009e43d1146f1b8da8dc254e99b5779a4983e5.ms.png) + +Carta ini menunjukkan taburan dengan cara yang lebih terperinci. Carta yang kurang condong ke kiri boleh dibuat dengan memastikan anda hanya memilih data dalam julat tertentu: + +Tapis data anda untuk mendapatkan hanya burung yang jisim badannya di bawah 60, dan tunjukkan 30 `bins`: + +```r +birds_filtered_1 <- subset(birds_filtered, MaxBodyMass > 1 & MaxBodyMass < 60) +ggplot(data = birds_filtered_1, aes(x = MaxBodyMass)) + + geom_histogram(bins=30)+ylab('Frequency') +``` + +![histogram ditapis](../../../../../translated_images/filtered-histogram.6bf5d2bfd82533220e1bd4bc4f7d14308f43746ed66721d9ec8f460732be6674.ms.png) + +✅ Cuba beberapa penapis dan titik data lain. Untuk melihat taburan penuh data, keluarkan penapis `['MaxBodyMass']` untuk menunjukkan taburan berlabel. + +Histogram menawarkan beberapa peningkatan warna dan pelabelan yang menarik untuk dicuba juga: + +Cipta histogram 2D untuk membandingkan hubungan antara dua taburan. Mari bandingkan `MaxBodyMass` vs. `MaxLength`. `ggplot2` menawarkan cara terbina untuk menunjukkan pertemuan menggunakan warna yang lebih terang: + +```r +ggplot(data=birds_filtered_1, aes(x=MaxBodyMass, y=MaxLength) ) + + geom_bin2d() +scale_fill_continuous(type = "viridis") +``` +Nampaknya terdapat korelasi yang dijangka antara kedua-dua elemen ini sepanjang paksi yang dijangka, dengan satu titik pertemuan yang sangat kuat: + +![plot 2d](../../../../../translated_images/2d-plot.c504786f439bd7ebceebf2465c70ca3b124103e06c7ff7214bf24e26f7aec21e.ms.png) + +Histogram berfungsi dengan baik secara lalai untuk data berangka. Bagaimana jika anda perlu melihat taburan mengikut data teks? +## Terokai dataset untuk taburan menggunakan data teks + +Dataset ini juga merangkumi maklumat yang baik tentang kategori burung dan genus, spesies, serta keluarga mereka, termasuk status konservasi mereka. Mari kita selidiki maklumat konservasi ini. Apakah taburan burung mengikut status konservasi mereka? + +> ✅ Dalam dataset, beberapa akronim digunakan untuk menggambarkan status konservasi. Akronim ini berasal dari [Kategori Senarai Merah IUCN](https://www.iucnredlist.org/), sebuah organisasi yang mengkatalogkan status spesies. +> +> - CR: Kritikal Terancam +> - EN: Terancam +> - EX: Pupus +> - LC: Kurang Prihatin +> - NT: Hampir Terancam +> - VU: Rentan + +Ini adalah nilai berasaskan teks jadi anda perlu melakukan transformasi untuk mencipta histogram. Menggunakan dataframe filteredBirds, paparkan status konservasi bersama LebarSayap Minimum mereka. Apa yang anda lihat? + +```r +birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'EX'] <- 'x1' +birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'CR'] <- 'x2' +birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'EN'] <- 'x3' +birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'NT'] <- 'x4' +birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'VU'] <- 'x5' +birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'LC'] <- 'x6' + +ggplot(data=birds_filtered_1, aes(x = MinWingspan, fill = ConservationStatus)) + + geom_histogram(position = "identity", alpha = 0.4, bins = 20) + + scale_fill_manual(name="Conservation Status",values=c("red","green","blue","pink"),labels=c("Endangered","Near Threathened","Vulnerable","Least Concern")) +``` + +![lebar sayap dan konservasi](../../../../../translated_images/wingspan-conservation-collation.4024e9aa6910866aa82f0c6cb6a6b4b925bd10079e6b0ef8f92eefa5a6792f76.ms.png) + +Nampaknya tidak ada korelasi yang baik antara lebar sayap minimum dan status konservasi. Uji elemen lain dalam dataset menggunakan kaedah ini. Anda juga boleh mencuba penapis yang berbeza. Adakah anda menemui sebarang korelasi? + +## Plot ketumpatan + +Anda mungkin perasan bahawa histogram yang kita lihat setakat ini adalah 'bertingkat' dan tidak mengalir dengan lancar dalam lengkungan. Untuk menunjukkan carta ketumpatan yang lebih lancar, anda boleh mencuba plot ketumpatan. + +Mari kita bekerja dengan plot ketumpatan sekarang! + +```r +ggplot(data = birds_filtered_1, aes(x = MinWingspan)) + + geom_density() +``` +![plot ketumpatan](../../../../../translated_images/density-plot.675ccf865b76c690487fb7f69420a8444a3515f03bad5482886232d4330f5c85.ms.png) + +Anda dapat melihat bagaimana plot ini mencerminkan yang sebelumnya untuk data LebarSayap Minimum; ia hanya sedikit lebih lancar. Jika anda ingin melihat garis JisimBadanMax yang bergerigi dalam carta kedua yang anda bina, anda boleh melicinkannya dengan baik dengan menciptanya semula menggunakan kaedah ini: + +```r +ggplot(data = birds_filtered_1, aes(x = MaxBodyMass)) + + geom_density() +``` +![ketumpatan jisim badan](../../../../../translated_images/bodymass-smooth.d31ce526d82b0a1f19a073815dea28ecfbe58145ec5337e4ef7e8cdac81120b3.ms.png) + +Jika anda mahukan garis yang lancar, tetapi tidak terlalu lancar, edit parameter `adjust`: + +```r +ggplot(data = birds_filtered_1, aes(x = MaxBodyMass)) + + geom_density(adjust = 1/5) +``` +![jisim badan kurang lancar](../../../../../translated_images/less-smooth-bodymass.10f4db8b683cc17d17b2d33f22405413142004467a1493d416608dafecfdee23.ms.png) + +✅ Baca tentang parameter yang tersedia untuk jenis plot ini dan bereksperimen! + +Jenis carta ini menawarkan visualisasi yang sangat jelas. Dengan beberapa baris kod, sebagai contoh, anda boleh menunjukkan ketumpatan jisim badan maksimum per Order burung: + +```r +ggplot(data=birds_filtered_1,aes(x = MaxBodyMass, fill = Order)) + + geom_density(alpha=0.5) +``` +![jisim badan per order](../../../../../translated_images/bodymass-per-order.9d2b065dd931b928c839d8cdbee63067ab1ae52218a1b90717f4bc744354f485.ms.png) + +## 🚀 Cabaran + +Histogram adalah jenis carta yang lebih canggih daripada plot serakan asas, carta bar, atau carta garis. Lakukan carian di internet untuk mencari contoh penggunaan histogram yang baik. Bagaimana ia digunakan, apa yang mereka tunjukkan, dan dalam bidang atau kawasan penyelidikan apa mereka cenderung digunakan? + +## [Kuiz pasca-kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/19) + +## Ulasan & Kajian Kendiri + +Dalam pelajaran ini, anda menggunakan `ggplot2` dan mula bekerja untuk menunjukkan carta yang lebih canggih. Lakukan penyelidikan tentang `geom_density_2d()` iaitu "keluk ketumpatan kebarangkalian berterusan dalam satu atau lebih dimensi". Baca [dokumentasi](https://ggplot2.tidyverse.org/reference/geom_density_2d.html) untuk memahami cara ia berfungsi. + +## Tugasan + +[Gunakan kemahiran anda](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/3-Data-Visualization/R/10-visualization-distributions/assignment.md b/translations/ms/3-Data-Visualization/R/10-visualization-distributions/assignment.md new file mode 100644 index 00000000..3db94823 --- /dev/null +++ b/translations/ms/3-Data-Visualization/R/10-visualization-distributions/assignment.md @@ -0,0 +1,25 @@ + +# Gunakan kemahiran anda + +## Arahan + +Setakat ini, anda telah bekerja dengan set data burung Minnesota untuk menemui maklumat tentang kuantiti burung dan kepadatan populasi. Amalkan penerapan teknik ini dengan mencuba set data yang berbeza, mungkin diperoleh daripada [Kaggle](https://www.kaggle.com/). Bina skrip R untuk menceritakan kisah tentang set data ini, dan pastikan anda menggunakan histogram semasa membincangkannya. + +## Rubrik + +Cemerlang | Memadai | Perlu Penambahbaikan +--- | --- | --- | +Skrip disediakan dengan anotasi tentang set data ini, termasuk sumbernya, dan menggunakan sekurang-kurangnya 5 histogram untuk menemui fakta tentang data. | Skrip disediakan dengan anotasi yang tidak lengkap atau terdapat pepijat. | Skrip disediakan tanpa anotasi dan mengandungi pepijat. + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/3-Data-Visualization/R/11-visualization-proportions/README.md b/translations/ms/3-Data-Visualization/R/11-visualization-proportions/README.md new file mode 100644 index 00000000..960b6fbd --- /dev/null +++ b/translations/ms/3-Data-Visualization/R/11-visualization-proportions/README.md @@ -0,0 +1,201 @@ + +# Memvisualkan Peratusan + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/11-Visualizing-Proportions.png)| +|:---:| +|Memvisualkan Peratusan - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +Dalam pelajaran ini, anda akan menggunakan dataset yang berfokuskan alam semula jadi untuk memvisualkan peratusan, seperti berapa banyak jenis kulat yang terdapat dalam dataset tentang cendawan. Mari kita terokai kulat yang menarik ini menggunakan dataset yang diperoleh daripada Audubon yang menyenaraikan butiran tentang 23 spesies cendawan berinsang dalam keluarga Agaricus dan Lepiota. Anda akan bereksperimen dengan visualisasi yang menarik seperti: + +- Carta pai 🥧 +- Carta donat 🍩 +- Carta waffle 🧇 + +> 💡 Satu projek yang sangat menarik dipanggil [Charticulator](https://charticulator.com) oleh Microsoft Research menawarkan antara muka seret dan lepas percuma untuk visualisasi data. Dalam salah satu tutorial mereka, mereka juga menggunakan dataset cendawan ini! Jadi anda boleh meneroka data dan belajar perpustakaan ini pada masa yang sama: [Tutorial Charticulator](https://charticulator.com/tutorials/tutorial4.html). + +## [Kuiz pra-pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/20) + +## Kenali cendawan anda 🍄 + +Cendawan sangat menarik. Mari kita import dataset untuk mengkajinya: + +```r +mushrooms = read.csv('../../data/mushrooms.csv') +head(mushrooms) +``` +Sebuah jadual dicetak dengan beberapa data yang hebat untuk dianalisis: + + +| kelas | bentuk-tudung | permukaan-tudung | warna-tudung | lebam | bau | lampiran-insang | jarak-insang | saiz-insang | warna-insang | bentuk-batang | akar-batang | permukaan-batang-atas-cincin | permukaan-batang-bawah-cincin | warna-batang-atas-cincin | warna-batang-bawah-cincin | jenis-tudung | warna-tudung | bilangan-cincin | jenis-cincin | warna-cetakan-spora | populasi | habitat | +| --------- | ------------- | ---------------- | ------------ | ------ | -------- | --------------- | ------------ | ----------- | ------------ | ------------- | ---------- | -------------------------- | -------------------------- | ------------------------ | ------------------------ | ------------ | ------------ | --------------- | ------------ | ------------------- | -------- | ------- | +| Beracun | Cembung | Licin | Coklat | Lebam | Tajam | Bebas | Rapat | Sempit | Hitam | Membesar | Sama | Licin | Licin | Putih | Putih | Sebahagian | Putih | Satu | Gantung | Hitam | Berselerak | Bandar | +| Boleh Dimakan | Cembung | Licin | Kuning | Lebam | Badam | Bebas | Rapat | Lebar | Hitam | Membesar | Kelab | Licin | Licin | Putih | Putih | Sebahagian | Putih | Satu | Gantung | Coklat | Banyak | Rumput | +| Boleh Dimakan | Loceng | Licin | Putih | Lebam | Anis | Bebas | Rapat | Lebar | Coklat | Membesar | Kelab | Licin | Licin | Putih | Putih | Sebahagian | Putih | Satu | Gantung | Coklat | Banyak | Padang | +| Beracun | Cembung | Bersisik | Putih | Lebam | Tajam | Bebas | Rapat | Sempit | Coklat | Membesar | Sama | Licin | Licin | Putih | Putih | Sebahagian | Putih | Satu | Gantung | Hitam | Berselerak | Bandar +| Boleh Dimakan | Cembung | Licin | Hijau | Tiada Lebam | Tiada | Bebas | Padat | Lebar | Hitam | Tirus | Sama | Licin | Licin | Putih | Putih | Sebahagian | Putih | Satu | Pudar | Coklat | Banyak | Rumput +| Boleh Dimakan | Cembung | Bersisik | Kuning | Lebam | Badam | Bebas | Rapat | Lebar | Coklat | Membesar | Kelab | Licin | Licin | Putih | Putih | Sebahagian | Putih | Satu | Gantung | Hitam | Banyak | Rumput + +Anda segera perasan bahawa semua data adalah berbentuk teks. Anda perlu menukar data ini supaya dapat digunakan dalam carta. Kebanyakan data, sebenarnya, diwakili sebagai objek: + +```r +names(mushrooms) +``` + +Hasilnya adalah: + +```output +[1] "class" "cap.shape" + [3] "cap.surface" "cap.color" + [5] "bruises" "odor" + [7] "gill.attachment" "gill.spacing" + [9] "gill.size" "gill.color" +[11] "stalk.shape" "stalk.root" +[13] "stalk.surface.above.ring" "stalk.surface.below.ring" +[15] "stalk.color.above.ring" "stalk.color.below.ring" +[17] "veil.type" "veil.color" +[19] "ring.number" "ring.type" +[21] "spore.print.color" "population" +[23] "habitat" +``` +Ambil data ini dan tukarkan kolum 'kelas' kepada kategori: + +```r +library(dplyr) +grouped=mushrooms %>% + group_by(class) %>% + summarise(count=n()) +``` + + +Sekarang, jika anda mencetak data cendawan, anda dapat melihat bahawa ia telah dikelompokkan ke dalam kategori mengikut kelas beracun/boleh dimakan: +```r +View(grouped) +``` + + +| kelas | bilangan | +| --------- | --------- | +| Boleh Dimakan | 4208 | +| Beracun | 3916 | + + + +Jika anda mengikuti susunan yang disajikan dalam jadual ini untuk mencipta label kategori kelas anda, anda boleh membina carta pai. + +## Pai! + +```r +pie(grouped$count,grouped$class, main="Edible?") +``` +Voila, sebuah carta pai yang menunjukkan peratusan data ini mengikut dua kelas cendawan ini. Sangat penting untuk mendapatkan susunan label dengan betul, terutamanya di sini, jadi pastikan anda mengesahkan susunan dengan cara array label dibina! + +![carta pai](../../../../../translated_images/pie1-wb.685df063673751f4b0b82127f7a52c7f9a920192f22ae61ad28412ba9ace97bf.ms.png) + +## Donat! + +Carta pai yang lebih menarik secara visual adalah carta donat, iaitu carta pai dengan lubang di tengah. Mari kita lihat data kita menggunakan kaedah ini. + +Lihat pelbagai habitat di mana cendawan tumbuh: + +```r +library(dplyr) +habitat=mushrooms %>% + group_by(habitat) %>% + summarise(count=n()) +View(habitat) +``` +Hasilnya adalah: +| habitat | bilangan | +| --------- | --------- | +| Rumput | 2148 | +| Daun | 832 | +| Padang | 292 | +| Laluan | 1144 | +| Bandar | 368 | +| Sisa | 192 | +| Kayu | 3148 | + + +Di sini, anda mengelompokkan data anda mengikut habitat. Terdapat 7 yang disenaraikan, jadi gunakan itu sebagai label untuk carta donat anda: + +```r +library(ggplot2) +library(webr) +PieDonut(habitat, aes(habitat, count=count)) +``` + +![carta donat](../../../../../translated_images/donut-wb.34e6fb275da9d834c2205145e39a3de9b6878191dcdba6f7a9e85f4b520449bc.ms.png) + +Kod ini menggunakan dua perpustakaan - ggplot2 dan webr. Dengan menggunakan fungsi PieDonut dari perpustakaan webr, kita boleh mencipta carta donat dengan mudah! + +Carta donat dalam R juga boleh dibuat menggunakan hanya perpustakaan ggplot2. Anda boleh belajar lebih lanjut mengenainya [di sini](https://www.r-graph-gallery.com/128-ring-or-donut-plot.html) dan mencubanya sendiri. + +Sekarang anda tahu cara mengelompokkan data anda dan kemudian memaparkannya sebagai pai atau donat, anda boleh meneroka jenis carta lain. Cuba carta waffle, yang hanya cara berbeza untuk meneroka kuantiti. +## Waffle! + +Carta jenis 'waffle' adalah cara berbeza untuk memvisualkan kuantiti sebagai array 2D kotak. Cuba visualkan kuantiti warna tudung cendawan yang berbeza dalam dataset ini. Untuk melakukan ini, anda perlu memasang perpustakaan pembantu yang dipanggil [waffle](https://cran.r-project.org/web/packages/waffle/waffle.pdf) dan menggunakannya untuk menghasilkan visualisasi anda: + +```r +install.packages("waffle", repos = "https://cinc.rud.is") +``` + +Pilih segmen data anda untuk dikelompokkan: + +```r +library(dplyr) +cap_color=mushrooms %>% + group_by(cap.color) %>% + summarise(count=n()) +View(cap_color) +``` + +Cipta carta waffle dengan mencipta label dan kemudian mengelompokkan data anda: + +```r +library(waffle) +names(cap_color$count) = paste0(cap_color$cap.color) +waffle((cap_color$count/10), rows = 7, title = "Waffle Chart")+scale_fill_manual(values=c("brown", "#F0DC82", "#D2691E", "green", + "pink", "purple", "red", "grey", + "yellow","white")) +``` + +Menggunakan carta waffle, anda dapat melihat dengan jelas peratusan warna tudung dalam dataset cendawan ini. Menariknya, terdapat banyak cendawan bertudung hijau! + +![carta waffle](../../../../../translated_images/waffle.aaa75c5337735a6ef32ace0ffb6506ef49e5aefe870ffd72b1bb080f4843c217.ms.png) + +Dalam pelajaran ini, anda belajar tiga cara untuk memvisualkan peratusan. Pertama, anda perlu mengelompokkan data anda ke dalam kategori dan kemudian memutuskan cara terbaik untuk memaparkan data - pai, donat, atau waffle. Semua ini menarik dan memberikan pengguna gambaran segera tentang dataset. + +## 🚀 Cabaran + +Cuba cipta semula carta-carta menarik ini dalam [Charticulator](https://charticulator.com). +## [Kuiz pasca-pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/21) + +## Ulasan & Kajian Kendiri + +Kadang-kadang tidak jelas bila untuk menggunakan carta pai, donat, atau waffle. Berikut adalah beberapa artikel untuk dibaca mengenai topik ini: + +https://www.beautiful.ai/blog/battle-of-the-charts-pie-chart-vs-donut-chart + +https://medium.com/@hypsypops/pie-chart-vs-donut-chart-showdown-in-the-ring-5d24fd86a9ce + +https://www.mit.edu/~mbarker/formula1/f1help/11-ch-c6.htm + +https://medium.datadriveninvestor.com/data-visualization-done-the-right-way-with-tableau-waffle-chart-fdf2a19be402 + +Lakukan penyelidikan untuk mencari lebih banyak maklumat mengenai keputusan yang sukar ini. +## Tugasan + +[Cuba di Excel](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/3-Data-Visualization/R/12-visualization-relationships/README.md b/translations/ms/3-Data-Visualization/R/12-visualization-relationships/README.md new file mode 100644 index 00000000..5fcbc104 --- /dev/null +++ b/translations/ms/3-Data-Visualization/R/12-visualization-relationships/README.md @@ -0,0 +1,177 @@ + +# Memvisualkan Hubungan: Semua Tentang Madu 🍯 + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/12-Visualizing-Relationships.png)| +|:---:| +|Memvisualkan Hubungan - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +Meneruskan fokus kajian kita terhadap alam semula jadi, mari kita terokai visualisasi menarik untuk menunjukkan hubungan antara pelbagai jenis madu, berdasarkan dataset yang diperoleh daripada [Jabatan Pertanian Amerika Syarikat](https://www.nass.usda.gov/About_NASS/index.php). + +Dataset ini mengandungi kira-kira 600 item yang memaparkan pengeluaran madu di banyak negeri di Amerika Syarikat. Sebagai contoh, anda boleh melihat bilangan koloni, hasil per koloni, jumlah pengeluaran, stok, harga per paun, dan nilai madu yang dihasilkan di negeri tertentu dari tahun 1998-2012, dengan satu baris setiap tahun bagi setiap negeri. + +Adalah menarik untuk memvisualkan hubungan antara pengeluaran tahunan negeri tertentu dan, sebagai contoh, harga madu di negeri tersebut. Sebagai alternatif, anda boleh memvisualkan hubungan antara hasil madu per koloni di negeri-negeri. Tempoh tahun ini meliputi 'CCD' atau 'Colony Collapse Disorder' yang pertama kali dilihat pada tahun 2006 (http://npic.orst.edu/envir/ccd.html), menjadikannya dataset yang menyentuh hati untuk dikaji. 🐝 + +## [Kuiz Pra-Pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/22) + +Dalam pelajaran ini, anda boleh menggunakan ggplot2, yang telah anda gunakan sebelum ini, sebagai perpustakaan yang baik untuk memvisualkan hubungan antara pemboleh ubah. Yang paling menarik ialah penggunaan fungsi `geom_point` dan `qplot` dalam ggplot2 yang membolehkan plot taburan dan plot garis untuk memvisualkan '[hubungan statistik](https://ggplot2.tidyverse.org/)' dengan cepat, yang membantu saintis data memahami bagaimana pemboleh ubah saling berkaitan. + +## Scatterplots + +Gunakan scatterplot untuk menunjukkan bagaimana harga madu berkembang dari tahun ke tahun, mengikut negeri. ggplot2, menggunakan `ggplot` dan `geom_point`, dengan mudah mengelompokkan data negeri dan memaparkan titik data untuk kedua-dua data kategori dan numerik. + +Mari kita mulakan dengan mengimport data dan Seaborn: + +```r +honey=read.csv('../../data/honey.csv') +head(honey) +``` +Anda akan perasan bahawa data madu mempunyai beberapa kolum menarik, termasuk tahun dan harga per paun. Mari kita terokai data ini, yang dikelompokkan mengikut negeri di Amerika Syarikat: + +| negeri | numcol | hasilpercol | jumlahprod | stok | hargaperlb | nilaiprod | tahun | +| ------ | ------ | ----------- | ---------- | -------- | ---------- | --------- | ----- | +| AL | 16000 | 71 | 1136000 | 159000 | 0.72 | 818000 | 1998 | +| AZ | 55000 | 60 | 3300000 | 1485000 | 0.64 | 2112000 | 1998 | +| AR | 53000 | 65 | 3445000 | 1688000 | 0.59 | 2033000 | 1998 | +| CA | 450000 | 83 | 37350000 | 12326000 | 0.62 | 23157000 | 1998 | +| CO | 27000 | 72 | 1944000 | 1594000 | 0.7 | 1361000 | 1998 | +| FL | 230000 | 98 | 22540000 | 4508000 | 0.64 | 14426000 | 1998 | + +Buat scatterplot asas untuk menunjukkan hubungan antara harga per paun madu dan negeri asalnya di Amerika Syarikat. Jadikan paksi `y` cukup tinggi untuk memaparkan semua negeri: + +```r +library(ggplot2) +ggplot(honey, aes(x = priceperlb, y = state)) + + geom_point(colour = "blue") +``` +![scatterplot 1](../../../../../translated_images/scatter1.86b8900674d88b26dd3353a83fe604e9ab3722c4680cc40ee9beb452ff02cdea.ms.png) + +Sekarang, tunjukkan data yang sama dengan skema warna madu untuk menunjukkan bagaimana harga berkembang dari tahun ke tahun. Anda boleh melakukannya dengan menambah parameter 'scale_color_gradientn' untuk menunjukkan perubahan dari tahun ke tahun: + +> ✅ Ketahui lebih lanjut tentang [scale_color_gradientn](https://www.rdocumentation.org/packages/ggplot2/versions/0.9.1/topics/scale_colour_gradientn) - cuba skema warna pelangi yang indah! + +```r +ggplot(honey, aes(x = priceperlb, y = state, color=year)) + + geom_point()+scale_color_gradientn(colours = colorspace::heat_hcl(7)) +``` +![scatterplot 2](../../../../../translated_images/scatter2.4d1cbc693bad20e2b563888747eb6bdf65b73ce449d903f7cd4068a78502dcff.ms.png) + +Dengan perubahan skema warna ini, anda dapat melihat dengan jelas perkembangan yang kuat dari tahun ke tahun dalam hal harga madu per paun. Malah, jika anda melihat set sampel dalam data untuk mengesahkan (pilih negeri tertentu, contohnya Arizona), anda dapat melihat pola kenaikan harga dari tahun ke tahun, dengan beberapa pengecualian: + +| negeri | numcol | hasilpercol | jumlahprod | stok | hargaperlb | nilaiprod | tahun | +| ------ | ------ | ----------- | ---------- | ------- | ---------- | --------- | ----- | +| AZ | 55000 | 60 | 3300000 | 1485000 | 0.64 | 2112000 | 1998 | +| AZ | 52000 | 62 | 3224000 | 1548000 | 0.62 | 1999000 | 1999 | +| AZ | 40000 | 59 | 2360000 | 1322000 | 0.73 | 1723000 | 2000 | +| AZ | 43000 | 59 | 2537000 | 1142000 | 0.72 | 1827000 | 2001 | +| AZ | 38000 | 63 | 2394000 | 1197000 | 1.08 | 2586000 | 2002 | +| AZ | 35000 | 72 | 2520000 | 983000 | 1.34 | 3377000 | 2003 | +| AZ | 32000 | 55 | 1760000 | 774000 | 1.11 | 1954000 | 2004 | +| AZ | 36000 | 50 | 1800000 | 720000 | 1.04 | 1872000 | 2005 | +| AZ | 30000 | 65 | 1950000 | 839000 | 0.91 | 1775000 | 2006 | +| AZ | 30000 | 64 | 1920000 | 902000 | 1.26 | 2419000 | 2007 | +| AZ | 25000 | 64 | 1600000 | 336000 | 1.26 | 2016000 | 2008 | +| AZ | 20000 | 52 | 1040000 | 562000 | 1.45 | 1508000 | 2009 | +| AZ | 24000 | 77 | 1848000 | 665000 | 1.52 | 2809000 | 2010 | +| AZ | 23000 | 53 | 1219000 | 427000 | 1.55 | 1889000 | 2011 | +| AZ | 22000 | 46 | 1012000 | 253000 | 1.79 | 1811000 | 2012 | + +Cara lain untuk memvisualkan perkembangan ini adalah dengan menggunakan saiz, bukannya warna. Untuk pengguna yang buta warna, ini mungkin pilihan yang lebih baik. Edit visualisasi anda untuk menunjukkan kenaikan harga dengan peningkatan saiz titik: + +```r +ggplot(honey, aes(x = priceperlb, y = state)) + + geom_point(aes(size = year),colour = "blue") + + scale_size_continuous(range = c(0.25, 3)) +``` +Anda dapat melihat saiz titik semakin besar secara beransur-ansur. + +![scatterplot 3](../../../../../translated_images/scatter3.722d21e6f20b3ea2e18339bb9b10d75906126715eb7d5fdc88fe74dcb6d7066a.ms.png) + +Adakah ini kes mudah permintaan dan penawaran? Disebabkan faktor seperti perubahan iklim dan keruntuhan koloni, adakah madu semakin kurang tersedia untuk dibeli dari tahun ke tahun, dan oleh itu harga meningkat? + +Untuk mencari korelasi antara beberapa pemboleh ubah dalam dataset ini, mari kita terokai beberapa carta garis. + +## Carta Garis + +Soalan: Adakah terdapat kenaikan yang jelas dalam harga madu per paun dari tahun ke tahun? Anda boleh menemui ini dengan mudah dengan mencipta satu carta garis: + +```r +qplot(honey$year,honey$priceperlb, geom='smooth', span =0.5, xlab = "year",ylab = "priceperlb") +``` +Jawapan: Ya, dengan beberapa pengecualian sekitar tahun 2003: + +![line chart 1](../../../../../translated_images/line1.299b576fbb2a59e60a59e7130030f59836891f90302be084e4e8d14da0562e2a.ms.png) + +Soalan: Baiklah, pada tahun 2003 adakah kita juga melihat lonjakan dalam bekalan madu? Bagaimana jika anda melihat jumlah pengeluaran dari tahun ke tahun? + +```python +qplot(honey$year,honey$totalprod, geom='smooth', span =0.5, xlab = "year",ylab = "totalprod") +``` + +![line chart 2](../../../../../translated_images/line2.3b18fcda7176ceba5b6689eaaabb817d49c965e986f11cac1ae3f424030c34d8.ms.png) + +Jawapan: Tidak begitu. Jika anda melihat jumlah pengeluaran, ia sebenarnya kelihatan meningkat pada tahun tersebut, walaupun secara amnya jumlah madu yang dihasilkan menurun sepanjang tahun-tahun ini. + +Soalan: Dalam kes itu, apa yang boleh menyebabkan lonjakan harga madu sekitar tahun 2003? + +Untuk menemui ini, anda boleh menerokai grid facet. + +## Grid Facet + +Grid facet mengambil satu aspek dataset anda (dalam kes kita, anda boleh memilih 'tahun' untuk mengelakkan terlalu banyak aspek dihasilkan). Seaborn kemudian boleh membuat plot untuk setiap aspek koordinat x dan y yang anda pilih untuk perbandingan visual yang lebih mudah. Adakah tahun 2003 menonjol dalam jenis perbandingan ini? + +Buat grid facet dengan menggunakan `facet_wrap` seperti yang disyorkan oleh [dokumentasi ggplot2](https://ggplot2.tidyverse.org/reference/facet_wrap.html). + +```r +ggplot(honey, aes(x=yieldpercol, y = numcol,group = 1)) + + geom_line() + facet_wrap(vars(year)) +``` +Dalam visualisasi ini, anda boleh membandingkan hasil per koloni dan bilangan koloni dari tahun ke tahun, bersebelahan dengan wrap yang ditetapkan pada 3 untuk kolum: + +![facet grid](../../../../../translated_images/facet.491ad90d61c2a7cc69b50c929f80786c749e38217ccedbf1e22ed8909b65987c.ms.png) + +Untuk dataset ini, tiada apa-apa yang benar-benar menonjol berkaitan dengan bilangan koloni dan hasilnya, dari tahun ke tahun dan negeri ke negeri. Adakah terdapat cara lain untuk mencari korelasi antara dua pemboleh ubah ini? + +## Plot Garis Berganda + +Cuba plot multiline dengan meletakkan dua plot garis di atas satu sama lain, menggunakan fungsi `par` dan `plot` dalam R. Kita akan memplotkan tahun pada paksi x dan memaparkan dua paksi y. Jadi, paparkan hasil per koloni dan bilangan koloni, yang disuperimposkan: + +```r +par(mar = c(5, 4, 4, 4) + 0.3) +plot(honey$year, honey$numcol, pch = 16, col = 2,type="l") +par(new = TRUE) +plot(honey$year, honey$yieldpercol, pch = 17, col = 3, + axes = FALSE, xlab = "", ylab = "",type="l") +axis(side = 4, at = pretty(range(y2))) +mtext("colony yield", side = 4, line = 3) +``` +![superimposed plots](../../../../../translated_images/dual-line.fc4665f360a54018d7df9bc6abcc26460112e17dcbda18d3b9ae6109b32b36c3.ms.png) + +Walaupun tiada apa-apa yang menonjol sekitar tahun 2003, ia membolehkan kita mengakhiri pelajaran ini dengan nota yang sedikit lebih gembira: walaupun terdapat penurunan bilangan koloni secara keseluruhan, bilangan koloni semakin stabil walaupun hasil per koloni semakin berkurangan. + +Teruskan, lebah, teruskan! + +🐝❤️ +## 🚀 Cabaran + +Dalam pelajaran ini, anda telah mempelajari sedikit lagi tentang kegunaan scatterplots dan grid garis, termasuk grid facet. Cabar diri anda untuk mencipta grid facet menggunakan dataset yang berbeza, mungkin yang anda gunakan sebelum pelajaran ini. Perhatikan berapa lama masa yang diambil untuk mencipta dan bagaimana anda perlu berhati-hati tentang berapa banyak grid yang perlu anda lukis menggunakan teknik ini. +## [Kuiz Pasca-Pelajaran](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/23) + +## Kajian & Pembelajaran Kendiri + +Plot garis boleh menjadi mudah atau agak kompleks. Lakukan sedikit pembacaan dalam [dokumentasi ggplot2](https://ggplot2.tidyverse.org/reference/geom_path.html#:~:text=geom_line()%20connects%20them%20in,which%20cases%20are%20connected%20together) tentang pelbagai cara anda boleh membinanya. Cuba tingkatkan carta garis yang anda bina dalam pelajaran ini dengan kaedah lain yang disenaraikan dalam dokumen tersebut. +## Tugasan + +[Selami Sarang Lebah](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/3-Data-Visualization/R/13-meaningful-vizualizations/README.md b/translations/ms/3-Data-Visualization/R/13-meaningful-vizualizations/README.md new file mode 100644 index 00000000..e4b48b55 --- /dev/null +++ b/translations/ms/3-Data-Visualization/R/13-meaningful-vizualizations/README.md @@ -0,0 +1,182 @@ + +# Membuat Visualisasi yang Bermakna + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/13-MeaningfulViz.png)| +|:---:| +| Visualisasi yang Bermakna - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +> "Jika anda menyeksa data cukup lama, ia akan mengaku apa sahaja" -- [Ronald Coase](https://en.wikiquote.org/wiki/Ronald_Coase) + +Salah satu kemahiran asas seorang saintis data adalah keupayaan untuk mencipta visualisasi data yang bermakna yang membantu menjawab soalan yang anda ada. Sebelum memvisualisasikan data anda, anda perlu memastikan bahawa ia telah dibersihkan dan disediakan, seperti yang telah anda lakukan dalam pelajaran sebelumnya. Selepas itu, anda boleh mula memutuskan cara terbaik untuk mempersembahkan data tersebut. + +Dalam pelajaran ini, anda akan mengkaji: + +1. Cara memilih jenis carta yang sesuai +2. Cara mengelakkan carta yang mengelirukan +3. Cara bekerja dengan warna +4. Cara menggayakan carta anda untuk kebolehbacaan +5. Cara membina penyelesaian carta animasi atau 3D +6. Cara membina visualisasi yang kreatif + +## [Kuiz Pra-Kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/24) + +## Memilih jenis carta yang sesuai + +Dalam pelajaran sebelumnya, anda telah bereksperimen dengan membina pelbagai jenis visualisasi data yang menarik menggunakan Matplotlib dan Seaborn untuk carta. Secara umum, anda boleh memilih [jenis carta yang sesuai](https://chartio.com/learn/charts/how-to-select-a-data-vizualization/) untuk soalan yang anda tanyakan menggunakan jadual ini: + +| Anda perlu: | Anda patut gunakan: | +| -------------------------- | ------------------------------- | +| Menunjukkan trend data dari masa ke masa | Garis | +| Membandingkan kategori | Bar, Pai | +| Membandingkan jumlah | Pai, Bar Bertindan | +| Menunjukkan hubungan | Scatter, Garis, Facet, Dual Line| +| Menunjukkan taburan | Scatter, Histogram, Box | +| Menunjukkan perkadaran | Pai, Donut, Waffle | + +> ✅ Bergantung pada komposisi data anda, anda mungkin perlu menukarnya daripada teks kepada angka untuk menyokong carta tertentu. + +## Mengelakkan penipuan + +Walaupun seorang saintis data berhati-hati memilih carta yang sesuai untuk data yang betul, terdapat banyak cara data boleh dipaparkan untuk membuktikan sesuatu, sering kali dengan mengorbankan integriti data itu sendiri. Terdapat banyak contoh carta dan infografik yang mengelirukan! + +[![Bagaimana Carta Menipu oleh Alberto Cairo](../../../../../translated_images/tornado.2880ffc7f135f82b5e5328624799010abefd1080ae4b7ecacbdc7d792f1d8849.ms.png)](https://www.youtube.com/watch?v=oX74Nge8Wkw "Bagaimana carta menipu") + +> 🎥 Klik imej di atas untuk ceramah persidangan tentang carta yang mengelirukan + +Carta ini membalikkan paksi X untuk menunjukkan kebalikan daripada kebenaran, berdasarkan tarikh: + +![carta buruk 1](../../../../../translated_images/bad-chart-1.596bc93425a8ac301a28b8361f59a970276e7b961658ce849886aa1fed427341.ms.png) + +[Carta ini](https://media.firstcoastnews.com/assets/WTLV/images/170ae16f-4643-438f-b689-50d66ca6a8d8/170ae16f-4643-438f-b689-50d66ca6a8d8_1140x641.jpg) lebih mengelirukan, kerana mata tertarik ke kanan untuk menyimpulkan bahawa, dari masa ke masa, kes COVID telah menurun di pelbagai daerah. Sebenarnya, jika anda melihat dengan teliti pada tarikh, anda akan mendapati bahawa ia telah disusun semula untuk memberikan trend menurun yang mengelirukan. + +![carta buruk 2](../../../../../translated_images/bad-chart-2.62edf4d2f30f4e519f5ef50c07ce686e27b0196a364febf9a4d98eecd21f9f60.ms.jpg) + +Contoh terkenal ini menggunakan warna DAN paksi Y yang terbalik untuk menipu: bukannya menyimpulkan bahawa kematian akibat senjata meningkat selepas penggubalan undang-undang mesra senjata, mata sebenarnya tertipu untuk berfikir sebaliknya: + +![carta buruk 3](../../../../../translated_images/bad-chart-3.e201e2e915a230bc2cde289110604ec9abeb89be510bd82665bebc1228258972.ms.jpg) + +Carta pelik ini menunjukkan bagaimana perkadaran boleh dimanipulasi, dengan kesan yang lucu: + +![carta buruk 4](../../../../../translated_images/bad-chart-4.8872b2b881ffa96c3e0db10eb6aed7793efae2cac382c53932794260f7bfff07.ms.jpg) + +Membandingkan perkara yang tidak sebanding adalah satu lagi helah yang tidak jujur. Terdapat [laman web yang hebat](https://tylervigen.com/spurious-correlations) tentang 'korelasi palsu' yang memaparkan 'fakta' yang mengaitkan perkara seperti kadar perceraian di Maine dan penggunaan marjerin. Sebuah kumpulan Reddit juga mengumpulkan [penggunaan data yang buruk](https://www.reddit.com/r/dataisugly/top/?t=all). + +Adalah penting untuk memahami betapa mudahnya mata boleh tertipu oleh carta yang mengelirukan. Walaupun niat saintis data adalah baik, pemilihan jenis carta yang buruk, seperti carta pai yang menunjukkan terlalu banyak kategori, boleh menjadi mengelirukan. + +## Warna + +Anda telah melihat dalam carta 'keganasan senjata Florida' di atas bagaimana warna boleh memberikan lapisan makna tambahan kepada carta, terutamanya yang tidak direka menggunakan perpustakaan seperti ggplot2 dan RColorBrewer yang dilengkapi dengan pelbagai perpustakaan warna dan palet yang telah disahkan. Jika anda membuat carta secara manual, lakukan sedikit kajian tentang [teori warna](https://colormatters.com/color-and-design/basic-color-theory). + +> ✅ Sedarilah, semasa mereka bentuk carta, bahawa kebolehcapaian adalah aspek penting dalam visualisasi. Sebahagian pengguna anda mungkin buta warna - adakah carta anda dipaparkan dengan baik untuk pengguna dengan masalah penglihatan? + +Berhati-hati semasa memilih warna untuk carta anda, kerana warna boleh menyampaikan makna yang mungkin tidak anda maksudkan. 'Pink ladies' dalam carta 'ketinggian' di atas menyampaikan makna 'feminin' yang menambah keanehan carta itu sendiri. + +Walaupun [makna warna](https://colormatters.com/color-symbolism/the-meanings-of-colors) mungkin berbeza di bahagian dunia yang berlainan, dan cenderung berubah mengikut tona warna. Secara umum, makna warna termasuk: + +| Warna | Makna | +| ------ | ------------------- | +| merah | kuasa | +| biru | kepercayaan, kesetiaan | +| kuning | kebahagiaan, amaran | +| hijau | ekologi, nasib, iri hati | +| ungu | kebahagiaan | +| jingga | keceriaan | + +Jika anda ditugaskan untuk membina carta dengan warna tersuai, pastikan carta anda boleh diakses dan warna yang anda pilih selaras dengan makna yang ingin anda sampaikan. + +## Menggayakan carta anda untuk kebolehbacaan + +Carta tidak bermakna jika ia tidak boleh dibaca! Luangkan masa untuk mempertimbangkan gaya lebar dan tinggi carta anda supaya ia berskala baik dengan data anda. Jika satu pembolehubah (seperti semua 50 negeri) perlu dipaparkan, tunjukkan secara menegak pada paksi Y jika boleh untuk mengelakkan carta yang perlu ditatal secara mendatar. + +Labelkan paksi anda, sediakan legenda jika perlu, dan tawarkan tooltip untuk pemahaman data yang lebih baik. + +Jika data anda berbentuk teks dan panjang pada paksi X, anda boleh memiringkan teks untuk kebolehbacaan yang lebih baik. [plot3D](https://cran.r-project.org/web/packages/plot3D/index.html) menawarkan pemplotan 3D, jika data anda menyokongnya. Visualisasi data yang canggih boleh dihasilkan menggunakan ini. + +![plot 3d](../../../../../translated_images/3d.db1734c151eee87d924989306a00e23f8cddac6a0aab122852ece220e9448def.ms.png) + +## Paparan carta animasi dan 3D + +Beberapa visualisasi data terbaik hari ini adalah animasi. Shirley Wu mempunyai visualisasi yang menakjubkan menggunakan D3, seperti '[film flowers](http://bl.ocks.org/sxywu/raw/d612c6c653fb8b4d7ff3d422be164a5d/)', di mana setiap bunga adalah visualisasi sebuah filem. Contoh lain untuk Guardian ialah 'bussed out', pengalaman interaktif yang menggabungkan visualisasi dengan Greensock dan D3 serta format artikel scrollytelling untuk menunjukkan bagaimana NYC menangani masalah gelandangan dengan menghantar orang keluar dari bandar. + +![busing](../../../../../translated_images/busing.8157cf1bc89a3f65052d362a78c72f964982ceb9dcacbe44480e35909c3dce62.ms.png) + +> "Bussed Out: How America Moves its Homeless" daripada [the Guardian](https://www.theguardian.com/us-news/ng-interactive/2017/dec/20/bussed-out-america-moves-homeless-people-country-study). Visualisasi oleh Nadieh Bremer & Shirley Wu + +Walaupun pelajaran ini tidak mencukupi untuk mengajar perpustakaan visualisasi yang kuat ini secara mendalam, cuba gunakan D3 dalam aplikasi Vue.js menggunakan perpustakaan untuk memaparkan visualisasi buku "Dangerous Liaisons" sebagai rangkaian sosial animasi. + +> "Les Liaisons Dangereuses" ialah novel epistolari, atau novel yang disampaikan sebagai siri surat. Ditulis pada tahun 1782 oleh Choderlos de Laclos, ia menceritakan kisah manuver sosial yang kejam dan tidak bermoral oleh dua protagonis yang bersaing dalam kalangan bangsawan Perancis pada akhir abad ke-18, Vicomte de Valmont dan Marquise de Merteuil. Kedua-duanya akhirnya menemui kehancuran, tetapi tidak sebelum menyebabkan kerosakan sosial yang besar. Novel ini berkembang sebagai siri surat yang ditulis kepada pelbagai orang dalam lingkaran mereka, merancang balas dendam atau sekadar untuk mencetuskan masalah. Cipta visualisasi surat-surat ini untuk mengenal pasti tokoh utama naratif secara visual. + +Anda akan melengkapkan aplikasi web yang akan memaparkan pandangan animasi rangkaian sosial ini. Ia menggunakan perpustakaan yang dibina untuk mencipta [visual rangkaian](https://github.com/emiliorizzo/vue-d3-network) menggunakan Vue.js dan D3. Apabila aplikasi berjalan, anda boleh menarik nod di skrin untuk menyusun semula data. + +![liaisons](../../../../../translated_images/liaisons.90ce7360bcf8476558f700bbbaf198ad697d5b5cb2829ba141a89c0add7c6ecd.ms.png) + +## Projek: Bina carta untuk menunjukkan rangkaian menggunakan D3.js + +> Folder pelajaran ini termasuk folder `solution` di mana anda boleh menemui projek yang telah siap, untuk rujukan anda. + +1. Ikuti arahan dalam fail README.md di folder root starter. Pastikan anda mempunyai NPM dan Node.js yang berjalan di mesin anda sebelum memasang kebergantungan projek anda. + +2. Buka folder `starter/src`. Anda akan menemui folder `assets` di mana terdapat fail .json dengan semua surat dari novel, bernombor, dengan anotasi 'to' dan 'from'. + +3. Lengkapkan kod dalam `components/Nodes.vue` untuk membolehkan visualisasi. Cari kaedah yang dipanggil `createLinks()` dan tambahkan gelung bersarang berikut. + +Gelung melalui objek .json untuk menangkap data 'to' dan 'from' untuk surat-surat dan membina objek `links` supaya perpustakaan visualisasi dapat menggunakannya: + +```javascript +//loop through letters + let f = 0; + let t = 0; + for (var i = 0; i < letters.length; i++) { + for (var j = 0; j < characters.length; j++) { + + if (characters[j] == letters[i].from) { + f = j; + } + if (characters[j] == letters[i].to) { + t = j; + } + } + this.links.push({ sid: f, tid: t }); + } + ``` + +Jalankan aplikasi anda dari terminal (npm run serve) dan nikmati visualisasi! + +## 🚀 Cabaran + +Jelajahi internet untuk mencari visualisasi yang mengelirukan. Bagaimana penulis menipu pengguna, dan adakah ia disengajakan? Cuba betulkan visualisasi tersebut untuk menunjukkan bagaimana ia sepatutnya kelihatan. + +## [Kuiz Pasca-Kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/25) + +## Ulasan & Kajian Kendiri + +Berikut adalah beberapa artikel untuk dibaca tentang visualisasi data yang mengelirukan: + +https://gizmodo.com/how-to-lie-with-data-visualization-1563576606 + +http://ixd.prattsi.org/2017/12/visual-lies-usability-in-deceptive-data-visualizations/ + +Lihat visualisasi menarik ini untuk aset dan artifak sejarah: + +https://handbook.pubpub.org/ + +Baca artikel ini tentang bagaimana animasi boleh meningkatkan visualisasi anda: + +https://medium.com/@EvanSinar/use-animation-to-supercharge-data-visualization-cd905a882ad4 + +## Tugasan + +[Bina visualisasi tersuai anda sendiri](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/3-Data-Visualization/README.md b/translations/ms/3-Data-Visualization/README.md new file mode 100644 index 00000000..cbb92691 --- /dev/null +++ b/translations/ms/3-Data-Visualization/README.md @@ -0,0 +1,42 @@ + +# Visualisasi + +![seekor lebah di atas bunga lavender](../../../translated_images/bee.0aa1d91132b12e3a8994b9ca12816d05ce1642010d9b8be37f8d37365ba845cf.ms.jpg) +> Foto oleh Jenna Lee di Unsplash + +Memvisualkan data adalah salah satu tugas paling penting bagi seorang saintis data. Gambar bernilai 1000 perkataan, dan visualisasi dapat membantu anda mengenal pasti pelbagai aspek menarik dalam data anda seperti lonjakan, nilai luar biasa, pengelompokan, kecenderungan, dan banyak lagi, yang dapat membantu anda memahami cerita yang ingin disampaikan oleh data anda. + +Dalam lima pelajaran ini, anda akan meneroka data yang diperoleh dari alam semula jadi dan mencipta visualisasi yang menarik dan indah menggunakan pelbagai teknik. + +| Nombor Topik | Topik | Pelajaran Berkaitan | Penulis | +| :-----------: | :--: | :-----------------: | :-----: | +| 1. | Memvisualkan kuantiti |
  • [Python](09-visualization-quantities/README.md)
  • [R](../../../3-Data-Visualization/R/09-visualization-quantities)
|
  • [Jen Looper](https://twitter.com/jenlooper)
  • [Vidushi Gupta](https://github.com/Vidushi-Gupta)
  • [Jasleen Sondhi](https://github.com/jasleen101010)
| +| 2. | Memvisualkan taburan |
  • [Python](10-visualization-distributions/README.md)
  • [R](../../../3-Data-Visualization/R/10-visualization-distributions)
|
  • [Jen Looper](https://twitter.com/jenlooper)
  • [Vidushi Gupta](https://github.com/Vidushi-Gupta)
  • [Jasleen Sondhi](https://github.com/jasleen101010)
| +| 3. | Memvisualkan perkadaran |
  • [Python](11-visualization-proportions/README.md)
  • [R](../../../3-Data-Visualization)
|
  • [Jen Looper](https://twitter.com/jenlooper)
  • [Vidushi Gupta](https://github.com/Vidushi-Gupta)
  • [Jasleen Sondhi](https://github.com/jasleen101010)
| +| 4. | Memvisualkan hubungan |
  • [Python](12-visualization-relationships/README.md)
  • [R](../../../3-Data-Visualization)
|
  • [Jen Looper](https://twitter.com/jenlooper)
  • [Vidushi Gupta](https://github.com/Vidushi-Gupta)
  • [Jasleen Sondhi](https://github.com/jasleen101010)
| +| 5. | Membuat Visualisasi Bermakna |
  • [Python](13-meaningful-visualizations/README.md)
  • [R](../../../3-Data-Visualization)
|
  • [Jen Looper](https://twitter.com/jenlooper)
  • [Vidushi Gupta](https://github.com/Vidushi-Gupta)
  • [Jasleen Sondhi](https://github.com/jasleen101010)
| + +### Kredit + +Pelajaran visualisasi ini ditulis dengan 🌸 oleh [Jen Looper](https://twitter.com/jenlooper), [Jasleen Sondhi](https://github.com/jasleen101010) dan [Vidushi Gupta](https://github.com/Vidushi-Gupta). + +🍯 Data untuk Pengeluaran Madu AS diperoleh daripada projek Jessica Li di [Kaggle](https://www.kaggle.com/jessicali9530/honey-production). [Data](https://usda.library.cornell.edu/concern/publications/rn301137d) ini berasal daripada [Jabatan Pertanian Amerika Syarikat](https://www.nass.usda.gov/About_NASS/index.php). + +🍄 Data untuk cendawan juga diperoleh daripada [Kaggle](https://www.kaggle.com/hatterasdunton/mushroom-classification-updated-dataset) yang telah disemak oleh Hatteras Dunton. Dataset ini termasuk penerangan sampel hipotesis yang sepadan dengan 23 spesies cendawan berinsang dalam Keluarga Agaricus dan Lepiota. Cendawan diambil daripada The Audubon Society Field Guide to North American Mushrooms (1981). Dataset ini disumbangkan kepada UCI ML 27 pada tahun 1987. + +🦆 Data untuk Burung Minnesota diperoleh daripada [Kaggle](https://www.kaggle.com/hannahcollins/minnesota-birds) yang diambil dari [Wikipedia](https://en.wikipedia.org/wiki/List_of_birds_of_Minnesota) oleh Hannah Collins. + +Semua dataset ini dilesenkan sebagai [CC0: Creative Commons](https://creativecommons.org/publicdomain/zero/1.0/). + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/4-Data-Science-Lifecycle/14-Introduction/README.md b/translations/ms/4-Data-Science-Lifecycle/14-Introduction/README.md new file mode 100644 index 00000000..b807bd09 --- /dev/null +++ b/translations/ms/4-Data-Science-Lifecycle/14-Introduction/README.md @@ -0,0 +1,123 @@ + +# Pengenalan kepada Kitaran Hayat Sains Data + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/14-DataScience-Lifecycle.png)| +|:---:| +| Pengenalan kepada Kitaran Hayat Sains Data - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +## [Kuiz Pra-Kuliah](https://red-water-0103e7a0f.azurestaticapps.net/quiz/26) + +Pada tahap ini, anda mungkin telah menyedari bahawa sains data adalah satu proses. Proses ini boleh dibahagikan kepada 5 peringkat: + +- Penangkapan +- Pemprosesan +- Analisis +- Komunikasi +- Penyelenggaraan + +Pelajaran ini memberi fokus kepada 3 bahagian kitaran hayat: penangkapan, pemprosesan, dan penyelenggaraan. + +![Rajah kitaran hayat sains data](../../../../translated_images/data-science-lifecycle.a1e362637503c4fb0cd5e859d7552edcdb4aa629a279727008baa121f2d33f32.ms.jpg) +> Foto oleh [Berkeley School of Information](https://ischoolonline.berkeley.edu/data-science/what-is-data-science/) + +## Penangkapan + +Peringkat pertama dalam kitaran hayat sangat penting kerana peringkat seterusnya bergantung padanya. Ia secara praktikal adalah dua peringkat yang digabungkan menjadi satu: memperoleh data dan menentukan tujuan serta masalah yang perlu diselesaikan. +Menentukan matlamat projek memerlukan konteks yang lebih mendalam tentang masalah atau persoalan. Pertama, kita perlu mengenal pasti dan memperoleh pihak yang memerlukan masalah mereka diselesaikan. Ini mungkin melibatkan pihak berkepentingan dalam perniagaan atau penaja projek, yang boleh membantu mengenal pasti siapa atau apa yang akan mendapat manfaat daripada projek ini serta apa dan mengapa mereka memerlukannya. Matlamat yang ditentukan dengan baik harus boleh diukur dan dikuantifikasi untuk menentukan hasil yang boleh diterima. + +Soalan yang mungkin ditanya oleh saintis data: +- Adakah masalah ini pernah didekati sebelum ini? Apa yang telah ditemui? +- Adakah tujuan dan matlamat difahami oleh semua pihak yang terlibat? +- Adakah terdapat kekaburan dan bagaimana untuk mengurangkannya? +- Apakah kekangan yang ada? +- Bagaimana rupa hasil akhir yang berpotensi? +- Berapa banyak sumber (masa, tenaga kerja, pengiraan) yang tersedia? + +Seterusnya adalah mengenal pasti, mengumpul, dan akhirnya meneroka data yang diperlukan untuk mencapai matlamat yang telah ditentukan ini. Pada langkah pemerolehan ini, saintis data juga mesti menilai kuantiti dan kualiti data. Ini memerlukan sedikit penerokaan data untuk mengesahkan bahawa apa yang telah diperoleh akan menyokong pencapaian hasil yang diinginkan. + +Soalan yang mungkin ditanya oleh saintis data tentang data: +- Apakah data yang sudah tersedia kepada saya? +- Siapa pemilik data ini? +- Apakah kebimbangan privasi? +- Adakah saya mempunyai cukup data untuk menyelesaikan masalah ini? +- Adakah kualiti data boleh diterima untuk masalah ini? +- Jika saya menemui maklumat tambahan melalui data ini, patutkah kita mempertimbangkan untuk mengubah atau mentakrifkan semula matlamat? + +## Pemprosesan + +Peringkat pemprosesan dalam kitaran hayat memberi fokus kepada penemuan corak dalam data serta pemodelan. Beberapa teknik yang digunakan dalam peringkat pemprosesan memerlukan kaedah statistik untuk mengenal pasti corak. Biasanya, ini adalah tugas yang membosankan untuk dilakukan oleh manusia dengan set data yang besar dan akan bergantung kepada komputer untuk mempercepatkan proses. Peringkat ini juga merupakan tempat sains data dan pembelajaran mesin berinteraksi. Seperti yang anda pelajari dalam pelajaran pertama, pembelajaran mesin adalah proses membina model untuk memahami data. Model adalah representasi hubungan antara pemboleh ubah dalam data yang membantu meramalkan hasil. + +Teknik biasa yang digunakan dalam peringkat ini dibincangkan dalam kurikulum ML untuk Pemula. Ikuti pautan untuk mengetahui lebih lanjut tentangnya: + +- [Klasifikasi](https://github.com/microsoft/ML-For-Beginners/tree/main/4-Classification): Mengatur data ke dalam kategori untuk penggunaan yang lebih efisien. +- [Pengelompokan](https://github.com/microsoft/ML-For-Beginners/tree/main/5-Clustering): Mengelompokkan data ke dalam kumpulan yang serupa. +- [Regresi](https://github.com/microsoft/ML-For-Beginners/tree/main/2-Regression): Menentukan hubungan antara pemboleh ubah untuk meramalkan atau meramal nilai. + +## Penyelenggaraan + +Dalam rajah kitaran hayat, anda mungkin perasan bahawa penyelenggaraan terletak di antara penangkapan dan pemprosesan. Penyelenggaraan adalah proses berterusan untuk mengurus, menyimpan, dan melindungi data sepanjang proses projek dan harus dipertimbangkan sepanjang keseluruhan projek. + +### Penyimpanan Data + +Pertimbangan tentang bagaimana dan di mana data disimpan boleh mempengaruhi kos penyimpanan serta prestasi kelajuan akses data. Keputusan seperti ini tidak mungkin dibuat oleh saintis data sahaja tetapi mereka mungkin mendapati diri mereka membuat pilihan tentang bagaimana bekerja dengan data berdasarkan cara ia disimpan. + +Berikut adalah beberapa aspek sistem penyimpanan data moden yang boleh mempengaruhi pilihan ini: + +**Di premis vs di luar premis vs awan awam atau peribadi** + +Di premis merujuk kepada hosting dan pengurusan data pada peralatan anda sendiri, seperti memiliki pelayan dengan cakera keras yang menyimpan data, manakala di luar premis bergantung kepada peralatan yang anda tidak miliki, seperti pusat data. Awan awam adalah pilihan popular untuk menyimpan data yang tidak memerlukan pengetahuan tentang bagaimana atau di mana data disimpan, di mana awam merujuk kepada infrastruktur asas yang disatukan dan dikongsi oleh semua yang menggunakan awan. Sesetengah organisasi mempunyai dasar keselamatan yang ketat yang memerlukan mereka mempunyai akses penuh kepada peralatan di mana data dihoskan dan akan bergantung kepada awan peribadi yang menyediakan perkhidmatan awan sendiri. Anda akan belajar lebih lanjut tentang data di awan dalam [pelajaran seterusnya](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/5-Data-Science-In-Cloud). + +**Data sejuk vs data panas** + +Apabila melatih model anda, anda mungkin memerlukan lebih banyak data latihan. Jika anda berpuas hati dengan model anda, lebih banyak data akan tiba untuk model berfungsi dengan tujuannya. Dalam mana-mana kes, kos penyimpanan dan akses data akan meningkat apabila anda mengumpul lebih banyak daripadanya. Memisahkan data yang jarang digunakan, dikenali sebagai data sejuk, daripada data yang sering diakses, dikenali sebagai data panas, boleh menjadi pilihan penyimpanan data yang lebih murah melalui perkhidmatan perkakasan atau perisian. Jika data sejuk perlu diakses, ia mungkin mengambil masa sedikit lebih lama untuk diperoleh berbanding data panas. + +### Pengurusan Data + +Semasa anda bekerja dengan data, anda mungkin mendapati bahawa sebahagian data perlu dibersihkan menggunakan beberapa teknik yang dibincangkan dalam pelajaran yang memberi fokus kepada [penyediaan data](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/2-Working-With-Data/08-data-preparation) untuk membina model yang tepat. Apabila data baharu tiba, ia akan memerlukan aplikasi yang sama untuk mengekalkan konsistensi dalam kualiti. Sesetengah projek akan melibatkan penggunaan alat automatik untuk pembersihan, pengagregatan, dan pemampatan sebelum data dipindahkan ke lokasi akhirnya. Azure Data Factory adalah contoh salah satu alat ini. + +### Melindungi Data + +Salah satu matlamat utama melindungi data adalah memastikan bahawa mereka yang bekerja dengannya mengawal apa yang dikumpulkan dan dalam konteks apa ia digunakan. Menjaga data tetap selamat melibatkan mengehadkan akses hanya kepada mereka yang memerlukannya, mematuhi undang-undang dan peraturan tempatan, serta mengekalkan standard etika, seperti yang dibincangkan dalam [pelajaran etika](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/02-ethics). + +Berikut adalah beberapa perkara yang mungkin dilakukan oleh pasukan dengan mengambil kira keselamatan: +- Mengesahkan bahawa semua data disulitkan +- Memberikan maklumat kepada pelanggan tentang bagaimana data mereka digunakan +- Menghapuskan akses data daripada mereka yang telah meninggalkan projek +- Membenarkan hanya ahli projek tertentu untuk mengubah data + +## 🚀 Cabaran + +Terdapat banyak versi Kitaran Hayat Sains Data, di mana setiap langkah mungkin mempunyai nama dan bilangan peringkat yang berbeza tetapi akan mengandungi proses yang sama seperti yang disebutkan dalam pelajaran ini. + +Terokai [Kitaran Hayat Proses Sains Data Pasukan](https://docs.microsoft.com/en-us/azure/architecture/data-science-process/lifecycle) dan [Proses standard industri untuk perlombongan data](https://www.datascience-pm.com/crisp-dm-2/). Namakan 3 persamaan dan perbezaan antara kedua-duanya. + +|Proses Sains Data Pasukan (TDSP)|Proses standard industri untuk perlombongan data (CRISP-DM)| +|--|--| +|![Kitaran Hayat Sains Data Pasukan](../../../../translated_images/tdsp-lifecycle2.e19029d598e2e73d5ef8a4b98837d688ec6044fe332c905d4dbb69eb6d5c1d96.ms.png) | ![Imej Proses Sains Data Alliance](../../../../translated_images/CRISP-DM.8bad2b4c66e62aa75278009e38e3e99902c73b0a6f63fd605a67c687a536698c.ms.png) | +| Imej oleh [Microsoft](https://docs.microsoft.comazure/architecture/data-science-process/lifecycle) | Imej oleh [Data Science Process Alliance](https://www.datascience-pm.com/crisp-dm-2/) | + +## [Kuiz Pasca-Kuliah](https://red-water-0103e7a0f.azurestaticapps.net/quiz/27) + +## Ulasan & Kajian Kendiri + +Mengaplikasikan Kitaran Hayat Sains Data melibatkan pelbagai peranan dan tugas, di mana sesetengahnya mungkin memberi fokus kepada bahagian tertentu dalam setiap peringkat. Proses Sains Data Pasukan menyediakan beberapa sumber yang menerangkan jenis peranan dan tugas yang mungkin dimiliki seseorang dalam projek. + +* [Peranan dan tugas Proses Sains Data Pasukan](https://docs.microsoft.com/en-us/azure/architecture/data-science-process/roles-tasks) +* [Melaksanakan tugas sains data: penerokaan, pemodelan, dan penyebaran](https://docs.microsoft.com/en-us/azure/architecture/data-science-process/execute-data-science-tasks) + +## Tugasan + +[Menilai Dataset](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/4-Data-Science-Lifecycle/14-Introduction/assignment.md b/translations/ms/4-Data-Science-Lifecycle/14-Introduction/assignment.md new file mode 100644 index 00000000..741c02ac --- /dev/null +++ b/translations/ms/4-Data-Science-Lifecycle/14-Introduction/assignment.md @@ -0,0 +1,37 @@ + +# Menilai Dataset + +Seorang klien telah mendekati pasukan anda untuk mendapatkan bantuan dalam menyelidik tabiat perbelanjaan bermusim pelanggan teksi di New York City. + +Mereka ingin tahu: **Adakah penumpang teksi kuning di New York City memberi tip lebih kepada pemandu pada musim sejuk atau musim panas?** + +Pasukan anda berada di peringkat [Capturing](Readme.md#Capturing) dalam Kitaran Hayat Sains Data, dan anda bertanggungjawab untuk mengendalikan dataset. Anda telah diberikan sebuah notebook dan [data](../../../../data/taxi.csv) untuk diterokai. + +Dalam direktori ini terdapat sebuah [notebook](notebook.ipynb) yang menggunakan Python untuk memuatkan data perjalanan teksi kuning daripada [NYC Taxi & Limousine Commission](https://docs.microsoft.com/en-us/azure/open-datasets/dataset-taxi-yellow?tabs=azureml-opendatasets). +Anda juga boleh membuka fail data teksi dalam editor teks atau perisian spreadsheet seperti Excel. + +## Arahan + +- Nilai sama ada data dalam dataset ini boleh membantu menjawab soalan tersebut atau tidak. +- Terokai [katalog Data Terbuka NYC](https://data.cityofnewyork.us/browse?sortBy=most_accessed&utf8=%E2%9C%93). Kenal pasti dataset tambahan yang berpotensi berguna untuk menjawab soalan klien. +- Tulis 3 soalan yang anda ingin ajukan kepada klien untuk mendapatkan penjelasan lebih lanjut dan pemahaman yang lebih baik tentang masalah ini. + +Rujuk [kamus dataset](https://www1.nyc.gov/assets/tlc/downloads/pdf/data_dictionary_trip_records_yellow.pdf) dan [panduan pengguna](https://www1.nyc.gov/assets/tlc/downloads/pdf/trip_record_user_guide.pdf) untuk maklumat lanjut tentang data. + +## Rubrik + +Cemerlang | Memadai | Perlu Penambahbaikan +--- | --- | --- + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/4-Data-Science-Lifecycle/15-analyzing/README.md b/translations/ms/4-Data-Science-Lifecycle/15-analyzing/README.md new file mode 100644 index 00000000..a9c68e94 --- /dev/null +++ b/translations/ms/4-Data-Science-Lifecycle/15-analyzing/README.md @@ -0,0 +1,60 @@ + +# Kitaran Hayat Sains Data: Menganalisis + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/15-Analyzing.png)| +|:---:| +| Kitaran Hayat Sains Data: Menganalisis - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +## Kuiz Pra-Kuliah + +## [Kuiz Pra-Kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/28) + +Menganalisis dalam kitaran hayat data mengesahkan bahawa data boleh menjawab soalan yang dicadangkan atau menyelesaikan masalah tertentu. Langkah ini juga boleh memberi tumpuan kepada mengesahkan model yang betul-betul menangani soalan dan masalah tersebut. Pelajaran ini memberi tumpuan kepada Analisis Data Eksploratori atau EDA, iaitu teknik untuk mendefinisikan ciri dan hubungan dalam data dan boleh digunakan untuk menyediakan data untuk pemodelan. + +Kami akan menggunakan dataset contoh daripada [Kaggle](https://www.kaggle.com/balaka18/email-spam-classification-dataset-csv/version/1) untuk menunjukkan bagaimana ini boleh diterapkan dengan Python dan perpustakaan Pandas. Dataset ini mengandungi kiraan beberapa perkataan biasa yang terdapat dalam e-mel, sumber e-mel ini adalah tanpa nama. Gunakan [notebook](notebook.ipynb) dalam direktori ini untuk mengikuti. + +## Analisis Data Eksploratori + +Fasa pengumpulan dalam kitaran hayat adalah di mana data diperoleh serta masalah dan soalan yang dihadapi, tetapi bagaimana kita tahu data boleh membantu menyokong hasil akhir? +Ingat bahawa seorang saintis data mungkin bertanya soalan berikut apabila mereka memperoleh data: +- Adakah saya mempunyai cukup data untuk menyelesaikan masalah ini? +- Adakah kualiti data boleh diterima untuk masalah ini? +- Jika saya menemui maklumat tambahan melalui data ini, patutkah kita mempertimbangkan untuk mengubah atau mentakrifkan semula matlamat? +Analisis Data Eksploratori adalah proses untuk mengenali data tersebut dan boleh digunakan untuk menjawab soalan-soalan ini, serta mengenal pasti cabaran bekerja dengan dataset. Mari kita fokus pada beberapa teknik yang digunakan untuk mencapai ini. + +## Profil Data, Statistik Deskriptif, dan Pandas +Bagaimana kita menilai sama ada kita mempunyai cukup data untuk menyelesaikan masalah ini? Profil data boleh meringkaskan dan mengumpulkan beberapa maklumat umum tentang dataset kita melalui teknik statistik deskriptif. Profil data membantu kita memahami apa yang tersedia untuk kita, dan statistik deskriptif membantu kita memahami berapa banyak perkara yang tersedia untuk kita. + +Dalam beberapa pelajaran sebelumnya, kita telah menggunakan Pandas untuk menyediakan beberapa statistik deskriptif dengan fungsi [`describe()`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.describe.html). Ia menyediakan kiraan, nilai maksimum dan minimum, purata, sisihan piawai dan kuantil pada data berangka. Menggunakan statistik deskriptif seperti fungsi `describe()` boleh membantu anda menilai berapa banyak yang anda ada dan sama ada anda memerlukan lebih banyak. + +## Pensampelan dan Pertanyaan +Meneroka segala-galanya dalam dataset yang besar boleh memakan masa yang sangat lama dan biasanya tugas yang diserahkan kepada komputer. Walau bagaimanapun, pensampelan adalah alat yang berguna untuk memahami data dan membolehkan kita mempunyai pemahaman yang lebih baik tentang apa yang ada dalam dataset dan apa yang diwakilinya. Dengan sampel, anda boleh menggunakan kebarangkalian dan statistik untuk membuat beberapa kesimpulan umum tentang data anda. Walaupun tiada peraturan yang ditetapkan tentang berapa banyak data yang patut anda sampel, adalah penting untuk diingat bahawa lebih banyak data yang anda sampel, lebih tepat generalisasi yang boleh anda buat tentang data tersebut. +Pandas mempunyai fungsi [`sample()` dalam perpustakaannya](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.sample.html) di mana anda boleh memberikan argumen tentang berapa banyak sampel rawak yang anda ingin terima dan gunakan. + +Pertanyaan umum tentang data boleh membantu anda menjawab beberapa soalan dan teori umum yang mungkin anda ada. Berbeza dengan pensampelan, pertanyaan membolehkan anda mempunyai kawalan dan fokus pada bahagian tertentu data yang anda ada soalan tentang. +Fungsi [`query()`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.query.html) dalam perpustakaan Pandas membolehkan anda memilih lajur dan menerima jawapan mudah tentang data melalui baris yang diperoleh. + +## Meneroka dengan Visualisasi +Anda tidak perlu menunggu sehingga data dibersihkan dan dianalisis sepenuhnya untuk mula mencipta visualisasi. Malah, mempunyai representasi visual semasa meneroka boleh membantu mengenal pasti corak, hubungan, dan masalah dalam data. Selain itu, visualisasi menyediakan cara komunikasi dengan mereka yang tidak terlibat dalam pengurusan data dan boleh menjadi peluang untuk berkongsi dan menjelaskan soalan tambahan yang tidak ditangani dalam peringkat pengumpulan. Rujuk [bahagian tentang Visualisasi](../../../../../../../../../3-Data-Visualization) untuk mengetahui lebih lanjut tentang beberapa cara popular untuk meneroka secara visual. + +## Meneroka untuk mengenal pasti ketidakkonsistenan +Semua topik dalam pelajaran ini boleh membantu mengenal pasti nilai yang hilang atau tidak konsisten, tetapi Pandas menyediakan fungsi untuk memeriksa beberapa perkara ini. [isna() atau isnull()](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.isna.html) boleh memeriksa nilai yang hilang. Satu perkara penting dalam meneroka nilai-nilai ini dalam data anda adalah untuk meneroka mengapa ia berakhir seperti itu pada mulanya. Ini boleh membantu anda memutuskan tindakan apa yang perlu diambil untuk menyelesaikannya](/2-Working-With-Data/08-data-preparation/notebook.ipynb). + +## [Kuiz Pra-Kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/27) + +## Tugasan + +[Meneroka untuk jawapan](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/4-Data-Science-Lifecycle/15-analyzing/assignment.md b/translations/ms/4-Data-Science-Lifecycle/15-analyzing/assignment.md new file mode 100644 index 00000000..0d468b9f --- /dev/null +++ b/translations/ms/4-Data-Science-Lifecycle/15-analyzing/assignment.md @@ -0,0 +1,36 @@ + +# Meneroka Jawapan + +Ini adalah sambungan kepada [tugasan](../14-Introduction/assignment.md) pelajaran sebelumnya, di mana kita telah melihat secara ringkas set data. Sekarang kita akan melihat data tersebut dengan lebih mendalam. + +Sekali lagi, soalan yang ingin diketahui oleh klien: **Adakah penumpang teksi kuning di New York City memberi tip lebih kepada pemandu pada musim sejuk atau musim panas?** + +Pasukan anda berada di peringkat [Menganalisis](README.md) dalam Kitaran Hayat Sains Data, di mana anda bertanggungjawab untuk melakukan analisis data eksplorasi pada set data tersebut. Anda telah diberikan sebuah notebook dan set data yang mengandungi 200 transaksi teksi dari Januari dan Julai 2019. + +## Arahan + +Dalam direktori ini terdapat sebuah [notebook](assignment.ipynb) dan data daripada [Taxi & Limousine Commission](https://docs.microsoft.com/en-us/azure/open-datasets/dataset-taxi-yellow?tabs=azureml-opendatasets). Rujuk kepada [kamus dataset](https://www1.nyc.gov/assets/tlc/downloads/pdf/data_dictionary_trip_records_yellow.pdf) dan [panduan pengguna](https://www1.nyc.gov/assets/tlc/downloads/pdf/trip_record_user_guide.pdf) untuk maklumat lanjut tentang data tersebut. + +Gunakan beberapa teknik dalam pelajaran ini untuk melakukan EDA anda sendiri dalam notebook (tambahkan sel jika perlu) dan jawab soalan berikut: + +- Apakah pengaruh lain dalam data yang boleh mempengaruhi jumlah tip? +- Apakah kolum yang kemungkinan besar tidak diperlukan untuk menjawab soalan klien? +- Berdasarkan apa yang telah disediakan setakat ini, adakah data menunjukkan sebarang bukti tingkah laku pemberian tip mengikut musim? + +## Rubrik + +Cemerlang | Memadai | Perlu Penambahbaikan +--- | --- | --- | + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/4-Data-Science-Lifecycle/16-communication/README.md b/translations/ms/4-Data-Science-Lifecycle/16-communication/README.md new file mode 100644 index 00000000..6befff56 --- /dev/null +++ b/translations/ms/4-Data-Science-Lifecycle/16-communication/README.md @@ -0,0 +1,222 @@ + +# Kitaran Hayat Sains Data: Komunikasi + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev)](../../sketchnotes/16-Communicating.png)| +|:---:| +| Kitaran Hayat Sains Data: Komunikasi - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +## [Kuiz Pra-Kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/30) + +Uji pengetahuan anda tentang apa yang akan dipelajari dengan Kuiz Pra-Kuliah di atas! + +# Pengenalan + +### Apa itu Komunikasi? +Mari kita mulakan pelajaran ini dengan mendefinisikan apa maksud komunikasi. **Komunikasi adalah menyampaikan atau bertukar maklumat.** Maklumat boleh berupa idea, pemikiran, perasaan, mesej, isyarat tersembunyi, data – apa sahaja yang ingin disampaikan oleh **_penghantar_** (seseorang yang menghantar maklumat) kepada **_penerima_** (seseorang yang menerima maklumat) untuk difahami. Dalam pelajaran ini, kita akan merujuk penghantar sebagai komunikator, dan penerima sebagai audiens. + +### Komunikasi Data & Penceritaan +Kita faham bahawa tujuan komunikasi adalah untuk menyampaikan atau bertukar maklumat. Tetapi apabila berkomunikasi data, tujuan anda bukan sekadar menyampaikan angka kepada audiens anda. Tujuan anda adalah untuk menyampaikan sebuah cerita yang dimaklumkan oleh data anda - komunikasi data yang berkesan dan penceritaan saling berkait rapat. Audiens anda lebih cenderung mengingati cerita yang anda sampaikan berbanding angka yang anda berikan. Kemudian dalam pelajaran ini, kita akan membincangkan beberapa cara untuk menggunakan penceritaan bagi menyampaikan data anda dengan lebih berkesan. + +### Jenis-Jenis Komunikasi +Sepanjang pelajaran ini, dua jenis komunikasi akan dibincangkan: Komunikasi Satu Hala dan Komunikasi Dua Hala. + +**Komunikasi satu hala** berlaku apabila penghantar menyampaikan maklumat kepada penerima tanpa sebarang maklum balas atau respons. Kita melihat contoh komunikasi satu hala setiap hari – dalam e-mel pukal, apabila berita menyampaikan cerita terkini, atau apabila iklan televisyen muncul dan memberitahu anda mengapa produk mereka hebat. Dalam setiap situasi ini, penghantar tidak mencari pertukaran maklumat. Mereka hanya ingin menyampaikan atau menyebarkan maklumat. + +**Komunikasi dua hala** berlaku apabila semua pihak yang terlibat bertindak sebagai penghantar dan penerima. Penghantar akan memulakan dengan berkomunikasi kepada penerima, dan penerima akan memberikan maklum balas atau respons. Komunikasi dua hala adalah apa yang biasanya kita fikirkan apabila bercakap tentang komunikasi. Kita biasanya membayangkan orang yang terlibat dalam perbualan - sama ada secara langsung, melalui panggilan telefon, media sosial, atau mesej teks. + +Apabila berkomunikasi data, akan ada situasi di mana anda menggunakan komunikasi satu hala (contohnya, semasa pembentangan di persidangan atau kepada kumpulan besar di mana soalan tidak akan diajukan secara langsung selepas itu) dan ada situasi di mana anda menggunakan komunikasi dua hala (contohnya, menggunakan data untuk meyakinkan beberapa pihak berkepentingan untuk menyokong sesuatu, atau untuk meyakinkan rakan sepasukan bahawa masa dan usaha perlu dilaburkan untuk membina sesuatu yang baru). + +# Komunikasi Berkesan + +### Tanggungjawab Anda sebagai Komunikator +Apabila berkomunikasi, adalah tanggungjawab anda untuk memastikan penerima memahami maklumat yang anda ingin sampaikan. Apabila anda berkomunikasi data, anda tidak hanya mahu penerima memahami angka, tetapi juga cerita yang dimaklumkan oleh data anda. Seorang komunikator data yang baik adalah seorang pencerita yang baik. + +Bagaimana anda menceritakan sebuah cerita dengan data? Terdapat pelbagai cara – tetapi di bawah adalah 6 cara yang akan kita bincangkan dalam pelajaran ini. +1. Fahami Audiens Anda, Saluran Anda, & Kaedah Komunikasi Anda +2. Mulakan dengan Hasil Akhir dalam Fikiran +3. Dekati Seperti Sebuah Cerita Sebenar +4. Gunakan Kata-Kata & Frasa yang Bermakna +5. Gunakan Emosi + +Setiap strategi ini dijelaskan dengan lebih terperinci di bawah. + +### 1. Fahami Audiens Anda, Saluran Anda & Kaedah Komunikasi Anda +Cara anda berkomunikasi dengan ahli keluarga mungkin berbeza daripada cara anda berkomunikasi dengan rakan-rakan anda. Anda mungkin menggunakan kata-kata dan frasa yang berbeza yang lebih mudah difahami oleh orang yang anda bercakap. Anda harus mengambil pendekatan yang sama apabila berkomunikasi data. Fikirkan tentang siapa yang anda sedang berkomunikasi. Fikirkan tentang matlamat mereka dan konteks yang mereka miliki tentang situasi yang anda jelaskan kepada mereka. + +Anda mungkin dapat mengelompokkan majoriti audiens anda ke dalam kategori tertentu. Dalam artikel _Harvard Business Review_, “[How to Tell a Story with Data](http://blogs.hbr.org/2013/04/how-to-tell-a-story-with-data/),” Pakar Strategi Eksekutif Dell, Jim Stikeleather mengenal pasti lima kategori audiens. + +- **Novis**: pendedahan pertama kepada subjek, tetapi tidak mahu penjelasan yang terlalu ringkas +- **Umum**: sedar tentang topik, tetapi mencari pemahaman keseluruhan dan tema utama +- **Pengurusan**: pemahaman mendalam yang boleh diambil tindakan tentang kerumitan dan hubungan dengan akses kepada butiran +- **Pakar**: lebih kepada penerokaan dan penemuan dan kurang kepada penceritaan dengan butiran yang mendalam +- **Eksekutif**: hanya mempunyai masa untuk memahami kepentingan dan kesimpulan kebarangkalian yang diberi berat + +Kategori ini boleh mempengaruhi cara anda menyampaikan data kepada audiens anda. + +Selain memikirkan kategori audiens anda, anda juga harus mempertimbangkan saluran yang anda gunakan untuk berkomunikasi dengan audiens anda. Pendekatan anda harus sedikit berbeza jika anda menulis memo atau e-mel berbanding mengadakan mesyuarat atau membuat pembentangan di persidangan. + +Di samping memahami audiens anda, mengetahui bagaimana anda akan berkomunikasi dengan mereka (menggunakan komunikasi satu hala atau dua hala) juga penting. + +Jika anda berkomunikasi dengan majoriti audiens Novis dan menggunakan komunikasi satu hala, anda mesti terlebih dahulu mendidik audiens dan memberikan mereka konteks yang sesuai. Kemudian anda mesti membentangkan data anda kepada mereka dan memberitahu mereka apa maksud data anda dan mengapa data anda penting. Dalam situasi ini, anda mungkin ingin memberi tumpuan kepada kejelasan, kerana audiens anda tidak akan dapat bertanya soalan secara langsung. + +Jika anda berkomunikasi dengan majoriti audiens Pengurusan dan menggunakan komunikasi dua hala, anda mungkin tidak perlu mendidik audiens anda atau memberikan mereka banyak konteks. Anda mungkin boleh terus membincangkan data yang telah anda kumpulkan dan mengapa ia penting. Dalam senario ini, anda harus memberi tumpuan kepada masa dan mengawal pembentangan anda. Apabila menggunakan komunikasi dua hala (terutamanya dengan audiens Pengurusan yang mencari "pemahaman yang boleh diambil tindakan tentang kerumitan dan hubungan dengan akses kepada butiran") soalan mungkin timbul semasa interaksi anda yang boleh membawa perbincangan ke arah yang tidak berkaitan dengan cerita yang anda cuba sampaikan. Apabila ini berlaku, anda boleh mengambil tindakan dan mengembalikan perbincangan kepada cerita anda. + +### 2. Mulakan dengan Hasil Akhir dalam Fikiran +Memulakan dengan hasil akhir dalam fikiran bermaksud memahami apa yang anda ingin audiens anda ambil sebelum anda mula berkomunikasi dengan mereka. Berfikir dengan teliti tentang apa yang anda ingin audiens anda ambil terlebih dahulu boleh membantu anda menyusun cerita yang boleh diikuti oleh audiens anda. Memulakan dengan hasil akhir dalam fikiran sesuai untuk komunikasi satu hala dan dua hala. + +Bagaimana anda memulakan dengan hasil akhir dalam fikiran? Sebelum berkomunikasi data anda, tuliskan perkara utama yang anda ingin sampaikan. Kemudian, setiap langkah semasa anda menyediakan cerita yang ingin anda sampaikan dengan data anda, tanyakan kepada diri anda, "Bagaimana ini berkait dengan cerita yang saya sampaikan?" + +Berhati-hati – Walaupun memulakan dengan hasil akhir dalam fikiran adalah ideal, anda tidak mahu hanya berkomunikasi data yang menyokong perkara utama yang anda ingin sampaikan. Ini dipanggil Cherry-Picking, yang berlaku apabila seorang komunikator hanya menyampaikan data yang menyokong pandangan mereka dan mengabaikan semua data lain. + +Jika semua data yang anda kumpulkan jelas menyokong perkara utama anda, bagus. Tetapi jika terdapat data yang anda kumpulkan yang tidak menyokong perkara utama anda, atau bahkan menyokong hujah yang bertentangan dengan perkara utama anda, anda juga harus menyampaikan data tersebut. Jika ini berlaku, bersikap jujur dengan audiens anda dan beritahu mereka mengapa anda memilih untuk tetap dengan cerita anda walaupun semua data tidak semestinya menyokongnya. + +### 3. Dekati Seperti Sebuah Cerita Sebenar +Sebuah cerita tradisional berlaku dalam 5 Fasa. Anda mungkin pernah mendengar fasa-fasa ini dinyatakan sebagai Eksposisi, Tindakan Meningkat, Klimaks, Tindakan Menurun, dan Penutup. Atau yang lebih mudah diingati: Konteks, Konflik, Klimaks, Penutupan, Kesimpulan. Apabila berkomunikasi data dan cerita anda, anda boleh mengambil pendekatan yang serupa. + +Anda boleh bermula dengan konteks, menetapkan latar dan memastikan audiens anda berada pada halaman yang sama. Kemudian perkenalkan konflik. Mengapa anda perlu mengumpulkan data ini? Masalah apa yang anda cuba selesaikan? Selepas itu, klimaks. Apakah data itu? Apa maksud data itu? Apakah penyelesaian yang diberitahu oleh data kepada kita? Kemudian anda sampai ke penutupan, di mana anda boleh mengulangi masalah dan penyelesaian yang dicadangkan. Akhir sekali, kita sampai ke kesimpulan, di mana anda boleh meringkaskan perkara utama anda dan langkah seterusnya yang anda cadangkan kepada pasukan. + +### 4. Gunakan Kata-Kata & Frasa yang Bermakna +Jika anda dan saya bekerja bersama pada sebuah produk, dan saya berkata kepada anda "Pengguna kita mengambil masa yang lama untuk mendaftar ke platform kita," berapa lama anda anggap "masa yang lama" itu? Satu jam? Seminggu? Sukar untuk diketahui. Bagaimana jika saya berkata begitu kepada seluruh audiens? Setiap orang dalam audiens mungkin mempunyai idea yang berbeza tentang berapa lama pengguna mengambil masa untuk mendaftar ke platform kita. + +Sebaliknya, bagaimana jika saya berkata "Pengguna kita mengambil masa, secara purata, 3 minit untuk mendaftar dan mendaftar ke platform kita." + +Mesej itu lebih jelas. Apabila berkomunikasi data, mudah untuk berfikir bahawa semua orang dalam audiens anda berfikir seperti anda. Tetapi itu tidak selalu berlaku. Menyampaikan kejelasan tentang data anda dan apa maksudnya adalah salah satu tanggungjawab anda sebagai komunikator. Jika data atau cerita anda tidak jelas, audiens anda akan sukar untuk mengikuti, dan mereka kurang berkemungkinan untuk memahami perkara utama anda. + +Anda boleh berkomunikasi data dengan lebih jelas apabila anda menggunakan kata-kata dan frasa yang bermakna, bukannya yang kabur. Di bawah adalah beberapa contoh. + +- Kami mempunyai tahun yang *mengagumkan*! + - Seseorang mungkin berfikir bahawa mengagumkan bermaksud peningkatan 2% - 3% dalam pendapatan, dan seseorang mungkin berfikir ia bermaksud peningkatan 50% - 60%. +- Kadar kejayaan pengguna kami meningkat *secara dramatik*. + - Berapa besar peningkatan yang dianggap dramatik? +- Usaha ini memerlukan *usaha yang signifikan*. + - Berapa banyak usaha yang dianggap signifikan? + +Menggunakan kata-kata kabur boleh berguna sebagai pengenalan kepada lebih banyak data yang akan datang, atau sebagai ringkasan cerita yang baru anda sampaikan. Tetapi pertimbangkan untuk memastikan setiap bahagian pembentangan anda jelas untuk audiens anda. + +### 5. Gunakan Emosi +Emosi adalah kunci dalam penceritaan. Ia lebih penting lagi apabila anda menceritakan sebuah cerita dengan data. Apabila anda berkomunikasi data, semuanya tertumpu pada perkara utama yang anda ingin audiens anda ambil. Apabila anda membangkitkan emosi kepada audiens, ia membantu mereka berempati, dan membuat mereka lebih cenderung untuk bertindak. Emosi juga meningkatkan kemungkinan audiens akan mengingati mesej anda. + +Anda mungkin pernah mengalami ini sebelum ini dengan iklan TV. Sesetengah iklan sangat suram, dan menggunakan emosi sedih untuk berhubung dengan audiens mereka dan membuat data yang mereka sampaikan benar-benar menonjol. Atau, sesetengah iklan sangat ceria dan gembira yang mungkin membuat anda mengaitkan data mereka dengan perasaan gembira. + +Bagaimana anda menggunakan emosi apabila berkomunikasi data? Di bawah adalah beberapa cara. + +- Gunakan Testimoni dan Cerita Peribadi + - Apabila mengumpulkan data, cuba kumpulkan data kuantitatif dan kualitatif, dan gabungkan kedua-dua jenis data apabila anda berkomunikasi. Jika data anda terutamanya kuantitatif, cari cerita daripada individu untuk mengetahui lebih lanjut tentang pengalaman mereka dengan apa sahaja yang data anda sampaikan. +- Gunakan Imej + - Imej membantu audiens melihat diri mereka dalam situasi. Apabila anda menggunakan imej, anda boleh mendorong audiens ke arah emosi yang anda rasa mereka patut ada tentang data anda. +- Gunakan Warna + - Warna yang berbeza membangkitkan emosi yang berbeza. Warna popular dan emosi yang mereka bangkitkan adalah seperti berikut. Berhati-hati, warna boleh mempunyai makna yang berbeza dalam budaya yang berbeza. + - Biru biasanya membangkitkan emosi damai dan kepercayaan + - Hijau biasanya berkaitan dengan alam semula jadi dan persekitaran + - Merah biasanya melambangkan semangat dan keterujaan + - Kuning biasanya optimisme dan kebahagiaan + +# Kajian Kes Komunikasi +Emerson adalah seorang Pengurus Produk untuk aplikasi mudah alih. Emerson menyedari bahawa pelanggan mengemukakan 42% lebih banyak aduan dan laporan pepijat pada hujung minggu. Emerson juga menyedari bahawa pelanggan yang mengemukakan aduan yang tidak dijawab selepas 48 jam adalah 32% lebih cenderung untuk memberikan aplikasi itu penilaian 1 atau 2 di gedung aplikasi. + +Selepas melakukan penyelidikan, Emerson mempunyai beberapa penyelesaian yang akan menangani isu tersebut. Emerson mengatur mesyuarat selama 30 minit dengan 3 ketua syarikat untuk menyampaikan data dan penyelesaian yang dicadangkan. + +Semasa mesyuarat ini, matlamat Emerson adalah untuk memastikan ketua syarikat memahami bahawa 2 penyelesaian di bawah boleh meningkatkan penilaian aplikasi, yang mungkin diterjemahkan kepada peningkatan hasil. + +**Penyelesaian 1.** Mengupah wakil khidmat pelanggan untuk bekerja pada hujung minggu + +**Penyelesaian 2.** Membeli sistem tiket khidmat pelanggan baru di mana wakil khidmat pelanggan dapat dengan mudah mengenal pasti aduan mana yang telah berada dalam barisan paling lama – supaya mereka dapat mengetahui mana yang perlu ditangani dengan segera. +Dalam mesyuarat, Emerson menghabiskan 5 minit menjelaskan mengapa mempunyai penilaian rendah di kedai aplikasi adalah buruk, 10 minit menjelaskan proses penyelidikan dan bagaimana trend dikenal pasti, 10 minit membincangkan beberapa aduan pelanggan terkini, dan 5 minit terakhir menyentuh secara ringkas 2 penyelesaian yang berpotensi. + +Adakah ini cara yang berkesan untuk Emerson berkomunikasi semasa mesyuarat ini? + +Semasa mesyuarat, seorang ketua syarikat terlalu fokus pada 10 minit aduan pelanggan yang dibincangkan oleh Emerson. Selepas mesyuarat, aduan-aduan ini adalah satu-satunya perkara yang diingati oleh ketua pasukan tersebut. Seorang lagi ketua syarikat lebih tertumpu pada penerangan Emerson tentang proses penyelidikan. Ketua syarikat ketiga mengingati penyelesaian yang dicadangkan oleh Emerson tetapi tidak pasti bagaimana penyelesaian tersebut boleh dilaksanakan. + +Dalam situasi di atas, anda dapat melihat terdapat jurang yang ketara antara apa yang Emerson ingin ketua-ketua pasukan fahami dan apa yang mereka akhirnya fahami daripada mesyuarat tersebut. Di bawah adalah pendekatan lain yang Emerson boleh pertimbangkan. + +Bagaimana Emerson boleh memperbaiki pendekatan ini? +Konteks, Konflik, Klimaks, Penutup, Kesimpulan +**Konteks** - Emerson boleh menghabiskan 5 minit pertama memperkenalkan keseluruhan situasi dan memastikan ketua-ketua pasukan memahami bagaimana masalah ini memberi kesan kepada metrik yang kritikal kepada syarikat, seperti hasil pendapatan. + +Ia boleh dijelaskan seperti ini: "Pada masa ini, penilaian aplikasi kami di kedai aplikasi adalah 2.5. Penilaian di kedai aplikasi adalah kritikal untuk Pengoptimuman Kedai Aplikasi, yang mempengaruhi berapa ramai pengguna yang melihat aplikasi kami dalam carian, dan bagaimana aplikasi kami dilihat oleh pengguna berpotensi. Dan sudah tentu, bilangan pengguna yang kami ada berkait secara langsung dengan hasil pendapatan." + +**Konflik** Emerson kemudian boleh bercakap selama 5 minit seterusnya tentang konflik. + +Ia boleh dijelaskan seperti ini: “Pengguna menghantar 42% lebih banyak aduan dan laporan pepijat pada hujung minggu. Pelanggan yang menghantar aduan yang tidak dijawab selepas 48 jam adalah 32% kurang berkemungkinan memberikan aplikasi kami penilaian lebih daripada 2 di kedai aplikasi. Meningkatkan penilaian aplikasi kami di kedai aplikasi kepada 4 akan meningkatkan keterlihatan kami sebanyak 20-30%, yang saya jangka akan meningkatkan hasil pendapatan sebanyak 10%." Sudah tentu, Emerson perlu bersedia untuk membuktikan angka-angka ini. + +**Klimaks** Selepas meletakkan asas, Emerson boleh beralih kepada Klimaks selama kira-kira 5 minit. + +Emerson boleh memperkenalkan penyelesaian yang dicadangkan, menjelaskan bagaimana penyelesaian tersebut akan menangani isu-isu yang dinyatakan, bagaimana penyelesaian tersebut boleh dilaksanakan dalam aliran kerja sedia ada, berapa kos penyelesaian tersebut, apakah ROI penyelesaian tersebut, dan mungkin juga menunjukkan beberapa tangkapan skrin atau wireframe tentang bagaimana penyelesaian tersebut akan kelihatan jika dilaksanakan. Emerson juga boleh berkongsi testimoni daripada pengguna yang aduannya mengambil masa lebih daripada 48 jam untuk diselesaikan, dan juga testimoni daripada wakil perkhidmatan pelanggan semasa dalam syarikat yang mempunyai komen tentang sistem tiket semasa. + +**Penutup** Sekarang Emerson boleh menghabiskan 5 minit mengulangi masalah yang dihadapi oleh syarikat, mengimbas kembali penyelesaian yang dicadangkan, dan mengulas mengapa penyelesaian tersebut adalah yang terbaik. + +**Kesimpulan** Oleh kerana ini adalah mesyuarat dengan beberapa pihak berkepentingan di mana komunikasi dua hala akan digunakan, Emerson boleh merancang untuk meninggalkan 10 minit untuk soalan, bagi memastikan apa-apa yang mengelirukan kepada ketua-ketua pasukan dapat dijelaskan sebelum mesyuarat berakhir. + +Jika Emerson menggunakan pendekatan #2, adalah lebih berkemungkinan bahawa ketua-ketua pasukan akan memahami apa yang Emerson ingin mereka fahami daripada mesyuarat tersebut – bahawa cara aduan dan pepijat ditangani boleh diperbaiki, dan terdapat 2 penyelesaian yang boleh dilaksanakan untuk membuat penambahbaikan tersebut berlaku. Pendekatan ini akan menjadi cara yang jauh lebih berkesan untuk menyampaikan data dan cerita yang Emerson ingin sampaikan. + +# Kesimpulan +### Ringkasan perkara utama +- Untuk berkomunikasi adalah untuk menyampaikan atau bertukar maklumat. +- Apabila berkomunikasi data, matlamat anda bukan sekadar menyampaikan angka kepada audiens anda. Matlamat anda adalah untuk menyampaikan sebuah cerita yang dimaklumkan oleh data anda. +- Terdapat 2 jenis komunikasi, Komunikasi Satu Hala (maklumat disampaikan tanpa niat untuk mendapat maklum balas) dan Komunikasi Dua Hala (maklumat disampaikan secara timbal balik). +- Terdapat banyak strategi yang boleh anda gunakan untuk menceritakan sebuah cerita dengan data anda, 5 strategi yang telah kita bincangkan adalah: + - Fahami Audiens Anda, Medium Anda, & Kaedah Komunikasi Anda + - Mulakan dengan Hasil Akhir dalam Fikiran + - Dekati Ia Seperti Sebuah Cerita Sebenar + - Gunakan Perkataan & Frasa yang Bermakna + - Gunakan Emosi + +### Sumber Disyorkan untuk Kajian Kendiri +[The Five C's of Storytelling - Articulate Persuasion](http://articulatepersuasion.com/the-five-cs-of-storytelling/) + +[1.4 Your Responsibilities as a Communicator – Business Communication for Success (umn.edu)](https://open.lib.umn.edu/businesscommunication/chapter/1-4-your-responsibilities-as-a-communicator/) + +[How to Tell a Story with Data (hbr.org)](https://hbr.org/2013/04/how-to-tell-a-story-with-data) + +[Two-Way Communication: 4 Tips for a More Engaged Workplace (yourthoughtpartner.com)](https://www.yourthoughtpartner.com/blog/bid/59576/4-steps-to-increase-employee-engagement-through-two-way-communication) + +[6 succinct steps to great data storytelling - BarnRaisers, LLC (barnraisersllc.com)](https://barnraisersllc.com/2021/05/02/6-succinct-steps-to-great-data-storytelling/) + +[How to Tell a Story With Data | Lucidchart Blog](https://www.lucidchart.com/blog/how-to-tell-a-story-with-data) + +[6 Cs of Effective Storytelling on Social Media | Cooler Insights](https://coolerinsights.com/2018/06/effective-storytelling-social-media/) + +[The Importance of Emotions In Presentations | Ethos3 - A Presentation Training and Design Agency](https://ethos3.com/2015/02/the-importance-of-emotions-in-presentations/) + +[Data storytelling: linking emotions and rational decisions (toucantoco.com)](https://www.toucantoco.com/en/blog/data-storytelling-dataviz) + +[Emotional Advertising: How Brands Use Feelings to Get People to Buy (hubspot.com)](https://blog.hubspot.com/marketing/emotions-in-advertising-examples) + +[Choosing Colors for Your Presentation Slides | Think Outside The Slide](https://www.thinkoutsidetheslide.com/choosing-colors-for-your-presentation-slides/) + +[How To Present Data [10 Expert Tips] | ObservePoint](https://resources.observepoint.com/blog/10-tips-for-presenting-data) + +[Microsoft Word - Persuasive Instructions.doc (tpsnva.org)](https://www.tpsnva.org/teach/lq/016/persinstr.pdf) + +[The Power of Story for Your Data (thinkhdi.com)](https://www.thinkhdi.com/library/supportworld/2019/power-story-your-data.aspx) + +[Common Mistakes in Data Presentation (perceptualedge.com)](https://www.perceptualedge.com/articles/ie/data_presentation.pdf) + +[Infographic: Here are 15 Common Data Fallacies to Avoid (visualcapitalist.com)](https://www.visualcapitalist.com/here-are-15-common-data-fallacies-to-avoid/) + +[Cherry Picking: When People Ignore Evidence that They Dislike – Effectiviology](https://effectiviology.com/cherry-picking/#How_to_avoid_cherry_picking) + +[Tell Stories with Data: Communication in Data Science | by Sonali Verghese | Towards Data Science](https://towardsdatascience.com/tell-stories-with-data-communication-in-data-science-5266f7671d7) + +[1. Communicating Data - Communicating Data with Tableau [Book] (oreilly.com)](https://www.oreilly.com/library/view/communicating-data-with/9781449372019/ch01.html) + +## [Kuiz Selepas Kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/31) + +Semak semula apa yang anda baru pelajari dengan Kuiz Selepas Kuliah di atas! + +## Tugasan + +[Penyelidikan Pasaran](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/4-Data-Science-Lifecycle/16-communication/assignment.md b/translations/ms/4-Data-Science-Lifecycle/16-communication/assignment.md new file mode 100644 index 00000000..e615af7e --- /dev/null +++ b/translations/ms/4-Data-Science-Lifecycle/16-communication/assignment.md @@ -0,0 +1,26 @@ + +# Ceritakan sebuah kisah + +## Arahan + +Sains Data adalah tentang bercerita. Pilih mana-mana set data dan tulis kertas kerja ringkas tentang kisah yang boleh anda ceritakan mengenainya. Apa yang anda harapkan set data anda dapat dedahkan? Apa yang akan anda lakukan jika pendedahannya menimbulkan masalah? Bagaimana jika data anda tidak mudah mendedahkan rahsianya? Fikirkan senario yang mungkin ditunjukkan oleh set data anda dan tuliskan. + +## Rubrik + +Cemerlang | Memadai | Perlu Penambahbaikan +--- | --- | -- | + +Sebuah esei satu halaman disediakan dalam format .doc dengan set data dijelaskan, didokumentasikan, diberi kredit, dan sebuah kisah yang koheren disampaikan mengenainya dengan contoh terperinci daripada data.| Esei yang lebih pendek disediakan dalam format kurang terperinci | Esei didapati kekurangan salah satu daripada butiran di atas. + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/4-Data-Science-Lifecycle/README.md b/translations/ms/4-Data-Science-Lifecycle/README.md new file mode 100644 index 00000000..984c1a6b --- /dev/null +++ b/translations/ms/4-Data-Science-Lifecycle/README.md @@ -0,0 +1,30 @@ + +# Kitaran Hayat Sains Data + +![communication](../../../translated_images/communication.06d8e2a88d30d168d661ad9f9f0a4f947ebff3719719cfdaf9ed00a406a01ead.ms.jpg) +> Foto oleh Headway di Unsplash + +Dalam pelajaran ini, anda akan meneroka beberapa aspek kitaran hayat Sains Data, termasuk analisis dan komunikasi berkaitan data. + +### Topik + +1. [Pengenalan](14-Introduction/README.md) +2. [Menganalisis](15-analyzing/README.md) +3. [Komunikasi](16-communication/README.md) + +### Kredit + +Pelajaran ini ditulis dengan ❤️ oleh [Jalen McGee](https://twitter.com/JalenMCG) dan [Jasmine Greenaway](https://twitter.com/paladique) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/5-Data-Science-In-Cloud/17-Introduction/README.md b/translations/ms/5-Data-Science-In-Cloud/17-Introduction/README.md new file mode 100644 index 00000000..f621546f --- /dev/null +++ b/translations/ms/5-Data-Science-In-Cloud/17-Introduction/README.md @@ -0,0 +1,113 @@ + +# Pengenalan kepada Sains Data di Awan + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/17-DataScience-Cloud.png)| +|:---:| +| Sains Data di Awan: Pengenalan - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +Dalam pelajaran ini, anda akan mempelajari prinsip asas Awan, kemudian anda akan melihat mengapa ia menarik untuk menggunakan perkhidmatan Awan bagi menjalankan projek sains data anda, dan kita akan melihat beberapa contoh projek sains data yang dijalankan di Awan. + +## [Kuiz Pra-Kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/32) + +## Apa itu Awan? + +Awan, atau Pengkomputeran Awan, adalah penyampaian pelbagai perkhidmatan pengkomputeran bayar-semasa-guna yang dihoskan pada infrastruktur melalui internet. Perkhidmatan ini termasuk penyelesaian seperti storan, pangkalan data, rangkaian, perisian, analitik, dan perkhidmatan pintar. + +Kita biasanya membezakan Awan Awam, Awan Peribadi, dan Awan Hibrid seperti berikut: + +* Awan awam: awan awam dimiliki dan dikendalikan oleh penyedia perkhidmatan awan pihak ketiga yang menyampaikan sumber pengkomputerannya melalui Internet kepada orang awam. +* Awan peribadi: merujuk kepada sumber pengkomputeran awan yang digunakan secara eksklusif oleh satu perniagaan atau organisasi, dengan perkhidmatan dan infrastruktur yang dikekalkan pada rangkaian peribadi. +* Awan hibrid: awan hibrid adalah sistem yang menggabungkan awan awam dan awan peribadi. Pengguna memilih pusat data di lokasi, sambil membenarkan data dan aplikasi dijalankan pada satu atau lebih awan awam. + +Kebanyakan perkhidmatan pengkomputeran awan tergolong dalam tiga kategori: Infrastruktur sebagai Perkhidmatan (IaaS), Platform sebagai Perkhidmatan (PaaS), dan Perisian sebagai Perkhidmatan (SaaS). + +* Infrastruktur sebagai Perkhidmatan (IaaS): pengguna menyewa infrastruktur IT seperti pelayan dan mesin maya (VM), storan, rangkaian, sistem operasi. +* Platform sebagai Perkhidmatan (PaaS): pengguna menyewa persekitaran untuk membangun, menguji, menyampaikan, dan mengurus aplikasi perisian. Pengguna tidak perlu risau tentang penyediaan atau pengurusan infrastruktur asas seperti pelayan, storan, rangkaian, dan pangkalan data yang diperlukan untuk pembangunan. +* Perisian sebagai Perkhidmatan (SaaS): pengguna mendapat akses kepada aplikasi perisian melalui Internet, atas permintaan dan biasanya berdasarkan langganan. Pengguna tidak perlu risau tentang hosting dan pengurusan aplikasi perisian, infrastruktur asas, atau penyelenggaraan seperti peningkatan perisian dan tampalan keselamatan. + +Beberapa penyedia Awan terbesar adalah Amazon Web Services, Google Cloud Platform, dan Microsoft Azure. + +## Mengapa Memilih Awan untuk Sains Data? + +Pembangun dan profesional IT memilih untuk bekerja dengan Awan atas pelbagai sebab, termasuk yang berikut: + +* Inovasi: anda boleh memperkuat aplikasi anda dengan mengintegrasikan perkhidmatan inovatif yang dicipta oleh penyedia Awan terus ke dalam aplikasi anda. +* Fleksibiliti: anda hanya membayar untuk perkhidmatan yang anda perlukan dan boleh memilih daripada pelbagai perkhidmatan. Anda biasanya membayar mengikut penggunaan dan menyesuaikan perkhidmatan anda mengikut keperluan yang berubah. +* Bajet: anda tidak perlu membuat pelaburan awal untuk membeli perkakasan dan perisian, menyediakan dan menjalankan pusat data di lokasi, dan anda hanya membayar untuk apa yang anda gunakan. +* Skalabiliti: sumber anda boleh meningkat atau menurun mengikut keperluan projek anda, yang bermaksud aplikasi anda boleh menggunakan lebih atau kurang kuasa pengkomputeran, storan, dan jalur lebar, dengan menyesuaikan kepada faktor luaran pada bila-bila masa. +* Produktiviti: anda boleh memberi tumpuan kepada perniagaan anda daripada menghabiskan masa pada tugas yang boleh diuruskan oleh orang lain, seperti mengurus pusat data. +* Kebolehpercayaan: Pengkomputeran Awan menawarkan beberapa cara untuk membuat sandaran data anda secara berterusan dan anda boleh menyediakan rancangan pemulihan bencana untuk memastikan perniagaan dan perkhidmatan anda terus berjalan, walaupun dalam masa krisis. +* Keselamatan: anda boleh mendapat manfaat daripada dasar, teknologi, dan kawalan yang memperkuat keselamatan projek anda. + +Ini adalah beberapa sebab yang paling biasa mengapa orang memilih untuk menggunakan perkhidmatan Awan. Sekarang kita mempunyai pemahaman yang lebih baik tentang apa itu Awan dan manfaat utamanya, mari kita lihat lebih khusus kepada pekerjaan saintis data dan pembangun yang bekerja dengan data, dan bagaimana Awan dapat membantu mereka dengan beberapa cabaran yang mungkin mereka hadapi: + +* Menyimpan sejumlah besar data: daripada membeli, mengurus, dan melindungi pelayan besar, anda boleh menyimpan data anda terus di awan, dengan penyelesaian seperti Azure Cosmos DB, Azure SQL Database, dan Azure Data Lake Storage. +* Melakukan Integrasi Data: integrasi data adalah bahagian penting dalam Sains Data, yang membolehkan anda membuat peralihan daripada pengumpulan data kepada tindakan. Dengan perkhidmatan integrasi data yang ditawarkan di awan, anda boleh mengumpul, mengubah, dan mengintegrasikan data daripada pelbagai sumber ke dalam satu gudang data, dengan Data Factory. +* Memproses data: memproses sejumlah besar data memerlukan banyak kuasa pengkomputeran, dan tidak semua orang mempunyai akses kepada mesin yang cukup kuat untuk itu, sebab itulah ramai orang memilih untuk menggunakan kuasa pengkomputeran besar awan untuk menjalankan dan menyebarkan penyelesaian mereka. +* Menggunakan perkhidmatan analitik data: perkhidmatan awan seperti Azure Synapse Analytics, Azure Stream Analytics, dan Azure Databricks membantu anda mengubah data anda menjadi wawasan yang boleh diambil tindakan. +* Menggunakan perkhidmatan Pembelajaran Mesin dan kecerdasan data: Daripada memulakan dari awal, anda boleh menggunakan algoritma pembelajaran mesin yang ditawarkan oleh penyedia awan, dengan perkhidmatan seperti AzureML. Anda juga boleh menggunakan perkhidmatan kognitif seperti ucapan-ke-teks, teks-ke-ucapan, penglihatan komputer, dan banyak lagi. + +## Contoh Sains Data di Awan + +Mari kita buat ini lebih nyata dengan melihat beberapa senario. + +### Analisis Sentimen Media Sosial Secara Masa Nyata +Kita akan mulakan dengan senario yang biasa dikaji oleh mereka yang baru bermula dengan pembelajaran mesin: analisis sentimen media sosial secara masa nyata. + +Katakan anda menjalankan laman web berita dan anda ingin memanfaatkan data langsung untuk memahami kandungan apa yang mungkin menarik minat pembaca anda. Untuk mengetahui lebih lanjut tentang itu, anda boleh membina program yang melakukan analisis sentimen masa nyata terhadap data daripada penerbitan Twitter, mengenai topik yang relevan dengan pembaca anda. + +Indikator utama yang akan anda lihat adalah jumlah tweet mengenai topik tertentu (hashtag) dan sentimen, yang ditentukan menggunakan alat analitik yang melakukan analisis sentimen sekitar topik yang ditentukan. + +Langkah-langkah yang diperlukan untuk mencipta projek ini adalah seperti berikut: + +* Buat hab acara untuk input penstriman, yang akan mengumpul data daripada Twitter. +* Konfigurasikan dan mulakan aplikasi klien Twitter, yang akan memanggil API Penstriman Twitter. +* Buat pekerjaan Analitik Penstriman. +* Tentukan input dan pertanyaan pekerjaan. +* Buat sink output dan tentukan output pekerjaan. +* Mulakan pekerjaan. + +Untuk melihat proses penuh, lihat [dokumentasi](https://docs.microsoft.com/azure/stream-analytics/stream-analytics-twitter-sentiment-analysis-trends?WT.mc_id=academic-77958-bethanycheum&ocid=AID30411099). + +### Analisis Kertas Saintifik +Mari kita ambil contoh lain daripada projek yang dicipta oleh [Dmitry Soshnikov](http://soshnikov.com), salah seorang penulis kurikulum ini. + +Dmitry mencipta alat yang menganalisis kertas COVID. Dengan mengkaji projek ini, anda akan melihat bagaimana anda boleh mencipta alat yang mengekstrak pengetahuan daripada kertas saintifik, mendapatkan wawasan, dan membantu penyelidik menavigasi melalui koleksi kertas yang besar dengan cara yang efisien. + +Mari kita lihat langkah-langkah yang digunakan untuk ini: +* Mengekstrak dan memproses maklumat dengan [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). +* Menggunakan [Azure ML](https://azure.microsoft.com/services/machine-learning?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) untuk memparallelkan pemprosesan. +* Menyimpan dan membuat pertanyaan maklumat dengan [Cosmos DB](https://azure.microsoft.com/services/cosmos-db?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). +* Mencipta papan pemuka interaktif untuk penerokaan dan visualisasi data menggunakan Power BI. + +Untuk melihat proses penuh, lawati [blog Dmitry](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). + +Seperti yang anda lihat, kita boleh memanfaatkan perkhidmatan Awan dalam pelbagai cara untuk melakukan Sains Data. + +## Nota Kaki + +Sumber: +* https://azure.microsoft.com/overview/what-is-cloud-computing?ocid=AID3041109 +* https://docs.microsoft.com/azure/stream-analytics/stream-analytics-twitter-sentiment-analysis-trends?ocid=AID3041109 +* https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/ + +## Kuiz Pasca-Kuliah + +[Kuiz pasca-kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/33) + +## Tugasan + +[Penyelidikan Pasaran](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/5-Data-Science-In-Cloud/17-Introduction/assignment.md b/translations/ms/5-Data-Science-In-Cloud/17-Introduction/assignment.md new file mode 100644 index 00000000..676be5c1 --- /dev/null +++ b/translations/ms/5-Data-Science-In-Cloud/17-Introduction/assignment.md @@ -0,0 +1,25 @@ + +# Penyelidikan Pasaran + +## Arahan + +Dalam pelajaran ini, anda telah mempelajari bahawa terdapat beberapa penyedia awan yang penting. Lakukan penyelidikan pasaran untuk mengetahui apa yang setiap penyedia ini boleh tawarkan kepada Saintis Data. Adakah tawaran mereka setanding? Tulis sebuah esei untuk menerangkan tawaran daripada tiga atau lebih penyedia awan ini. + +## Rubrik + +Cemerlang | Memadai | Perlu Penambahbaikan +--- | --- | --- | +Sebuah esei satu halaman menerangkan tawaran data sains daripada tiga penyedia awan dan membezakan antara mereka. | Sebuah esei yang lebih pendek disediakan | Sebuah esei disediakan tanpa melengkapkan analisis + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/5-Data-Science-In-Cloud/18-Low-Code/README.md b/translations/ms/5-Data-Science-In-Cloud/18-Low-Code/README.md new file mode 100644 index 00000000..ff1d08c5 --- /dev/null +++ b/translations/ms/5-Data-Science-In-Cloud/18-Low-Code/README.md @@ -0,0 +1,353 @@ + +# Sains Data di Awan: Cara "Kod Rendah/Tanpa Kod" + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/18-DataScience-Cloud.png)| +|:---:| +| Sains Data di Awan: Kod Rendah - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +Kandungan: + +- [Sains Data di Awan: Cara "Kod Rendah/Tanpa Kod"](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [Kuiz Pra-Kuliah](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [1. Pengenalan](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [1.1 Apa itu Azure Machine Learning?](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [1.2 Projek Ramalan Kegagalan Jantung:](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [1.3 Dataset Kegagalan Jantung:](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [2. Latihan model Kod Rendah/Tanpa Kod dalam Azure ML Studio](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [2.1 Cipta ruang kerja Azure ML](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [2.2 Sumber Pengiraan](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [2.2.1 Memilih pilihan yang sesuai untuk sumber pengiraan anda](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [2.2.2 Mencipta kluster pengiraan](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [2.3 Memuatkan Dataset](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [2.4 Latihan Kod Rendah/Tanpa Kod dengan AutoML](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [3. Penggunaan model Kod Rendah/Tanpa Kod dan penggunaan endpoint](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [3.1 Penggunaan model](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [3.2 Penggunaan endpoint](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [🚀 Cabaran](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [Kuiz Pasca-Kuliah](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [Ulasan & Kajian Kendiri](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [Tugasan](../../../../5-Data-Science-In-Cloud/18-Low-Code) + +## [Kuiz Pra-Kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/34) + +## 1. Pengenalan + +### 1.1 Apa itu Azure Machine Learning? + +Platform awan Azure terdiri daripada lebih 200 produk dan perkhidmatan awan yang direka untuk membantu anda mencipta penyelesaian baharu. Saintis data menghabiskan banyak masa meneroka dan memproses data, serta mencuba pelbagai algoritma latihan model untuk menghasilkan model yang tepat. Tugas-tugas ini memakan masa dan sering menggunakan perkakasan pengiraan yang mahal secara tidak efisien. + +[Azure ML](https://docs.microsoft.com/azure/machine-learning/overview-what-is-azure-machine-learning?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) ialah platform berasaskan awan untuk membina dan mengendalikan penyelesaian pembelajaran mesin di Azure. Ia merangkumi pelbagai ciri dan keupayaan yang membantu saintis data menyediakan data, melatih model, menerbitkan perkhidmatan ramalan, dan memantau penggunaannya. Yang paling penting, ia membantu meningkatkan kecekapan mereka dengan mengautomasi banyak tugas yang memakan masa yang berkaitan dengan latihan model; dan ia membolehkan mereka menggunakan sumber pengiraan berasaskan awan yang boleh diskalakan secara efektif untuk mengendalikan jumlah data yang besar sambil menanggung kos hanya apabila digunakan. + +Azure ML menyediakan semua alat yang diperlukan oleh pembangun dan saintis data untuk aliran kerja pembelajaran mesin mereka. Ini termasuk: + +- **Azure Machine Learning Studio**: portal web dalam Azure Machine Learning untuk pilihan kod rendah dan tanpa kod untuk latihan model, penggunaan, automasi, penjejakan, dan pengurusan aset. Studio ini berintegrasi dengan Azure Machine Learning SDK untuk pengalaman yang lancar. +- **Jupyter Notebooks**: prototaip dan uji model ML dengan cepat. +- **Azure Machine Learning Designer**: membolehkan seret-dan-lepas modul untuk membina eksperimen dan kemudian menggunakan pipeline dalam persekitaran kod rendah. +- **Antaramuka AutoML**: mengautomasi tugas berulang dalam pembangunan model pembelajaran mesin, membolehkan pembinaan model ML dengan skala, kecekapan, dan produktiviti yang tinggi, sambil mengekalkan kualiti model. +- **Pelabelan Data**: alat ML yang dibantu untuk melabel data secara automatik. +- **Sambungan pembelajaran mesin untuk Visual Studio Code**: menyediakan persekitaran pembangunan penuh untuk membina dan mengurus projek ML. +- **CLI pembelajaran mesin**: menyediakan arahan untuk mengurus sumber Azure ML dari baris arahan. +- **Integrasi dengan rangka kerja sumber terbuka** seperti PyTorch, TensorFlow, Scikit-learn, dan banyak lagi untuk melatih, menggunakan, dan mengurus proses pembelajaran mesin dari hujung ke hujung. +- **MLflow**: perpustakaan sumber terbuka untuk mengurus kitaran hayat eksperimen pembelajaran mesin anda. **MLFlow Tracking** ialah komponen MLflow yang mencatat dan menjejaki metrik latihan dan artifak model anda, tanpa mengira persekitaran eksperimen anda. + +### 1.2 Projek Ramalan Kegagalan Jantung: + +Tidak dapat dinafikan bahawa membuat dan membina projek adalah cara terbaik untuk menguji kemahiran dan pengetahuan anda. Dalam pelajaran ini, kita akan meneroka dua cara berbeza untuk membina projek sains data bagi ramalan serangan kegagalan jantung dalam Azure ML Studio, melalui Kod Rendah/Tanpa Kod dan melalui Azure ML SDK seperti yang ditunjukkan dalam skema berikut: + +![skema-projek](../../../../translated_images/project-schema.736f6e403f321eb48d10242b3f4334dc6ccf0eabef8ff87daf52b89781389fcb.ms.png) + +Setiap cara mempunyai kelebihan dan kekurangannya sendiri. Cara Kod Rendah/Tanpa Kod lebih mudah untuk dimulakan kerana ia melibatkan interaksi dengan GUI (Antaramuka Pengguna Grafik), tanpa memerlukan pengetahuan kod sebelumnya. Kaedah ini membolehkan ujian cepat terhadap kebolehlaksanaan projek dan mencipta POC (Bukti Konsep). Walau bagaimanapun, apabila projek berkembang dan perlu bersedia untuk pengeluaran, tidak praktikal untuk mencipta sumber melalui GUI. Kita perlu mengautomasi semuanya secara programatik, dari penciptaan sumber hingga penggunaan model. Di sinilah pengetahuan tentang cara menggunakan Azure ML SDK menjadi penting. + +| | Kod Rendah/Tanpa Kod | Azure ML SDK | +|-------------------|----------------------|---------------------------| +| Kepakaran kod | Tidak diperlukan | Diperlukan | +| Masa pembangunan | Cepat dan mudah | Bergantung pada kepakaran kod | +| Sedia untuk pengeluaran | Tidak | Ya | + +### 1.3 Dataset Kegagalan Jantung: + +Penyakit kardiovaskular (CVD) adalah penyebab utama kematian di seluruh dunia, menyumbang 31% daripada semua kematian global. Faktor risiko persekitaran dan tingkah laku seperti penggunaan tembakau, diet tidak sihat dan obesiti, kurang aktiviti fizikal, dan penggunaan alkohol yang berbahaya boleh digunakan sebagai ciri untuk model anggaran. Keupayaan untuk menganggarkan kebarangkalian perkembangan CVD boleh sangat berguna untuk mencegah serangan pada individu berisiko tinggi. + +Kaggle telah menyediakan [Dataset Kegagalan Jantung](https://www.kaggle.com/andrewmvd/heart-failure-clinical-data) yang boleh diakses secara umum, yang akan kita gunakan untuk projek ini. Anda boleh memuat turun dataset sekarang. Ini adalah dataset tabular dengan 13 lajur (12 ciri dan 1 pemboleh ubah sasaran) dan 299 baris. + +| | Nama Pemboleh Ubah | Jenis | Penerangan | Contoh | +|----|---------------------------|------------------|---------------------------------------------------------|-------------------| +| 1 | age | numerik | umur pesakit | 25 | +| 2 | anaemia | boolean | Penurunan sel darah merah atau hemoglobin | 0 atau 1 | +| 3 | creatinine_phosphokinase | numerik | Tahap enzim CPK dalam darah | 542 | +| 4 | diabetes | boolean | Jika pesakit mempunyai diabetes | 0 atau 1 | +| 5 | ejection_fraction | numerik | Peratusan darah yang keluar dari jantung pada setiap kontraksi | 45 | +| 6 | high_blood_pressure | boolean | Jika pesakit mempunyai hipertensi | 0 atau 1 | +| 7 | platelets | numerik | Platelet dalam darah | 149000 | +| 8 | serum_creatinine | numerik | Tahap serum kreatinin dalam darah | 0.5 | +| 9 | serum_sodium | numerik | Tahap serum natrium dalam darah | jun | +| 10 | sex | boolean | wanita atau lelaki | 0 atau 1 | +| 11 | smoking | boolean | Jika pesakit merokok | 0 atau 1 | +| 12 | time | numerik | tempoh susulan (hari) | 4 | +|----|---------------------------|------------------|---------------------------------------------------------|-------------------| +| 21 | DEATH_EVENT [Sasaran] | boolean | jika pesakit meninggal dunia semasa tempoh susulan | 0 atau 1 | + +Setelah anda mempunyai dataset, kita boleh memulakan projek dalam Azure. + +## 2. Latihan model Kod Rendah/Tanpa Kod dalam Azure ML Studio + +### 2.1 Cipta ruang kerja Azure ML + +Untuk melatih model dalam Azure ML, anda perlu mencipta ruang kerja Azure ML terlebih dahulu. Ruang kerja adalah sumber peringkat atas untuk Azure Machine Learning, menyediakan tempat berpusat untuk bekerja dengan semua artifak yang anda cipta semasa menggunakan Azure Machine Learning. Ruang kerja menyimpan sejarah semua latihan, termasuk log, metrik, output, dan snapshot skrip anda. Anda menggunakan maklumat ini untuk menentukan latihan mana yang menghasilkan model terbaik. [Ketahui lebih lanjut](https://docs.microsoft.com/azure/machine-learning/concept-workspace?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) + +Adalah disyorkan untuk menggunakan pelayar yang paling terkini yang serasi dengan sistem operasi anda. Pelayar berikut disokong: + +- Microsoft Edge (Microsoft Edge baharu, versi terkini. Bukan Microsoft Edge lama) +- Safari (versi terkini, hanya untuk Mac) +- Chrome (versi terkini) +- Firefox (versi terkini) + +Untuk menggunakan Azure Machine Learning, cipta ruang kerja dalam langganan Azure anda. Anda kemudian boleh menggunakan ruang kerja ini untuk mengurus data, sumber pengiraan, kod, model, dan artifak lain yang berkaitan dengan beban kerja pembelajaran mesin anda. + +> **_NOTA:_** Langganan Azure anda akan dikenakan sedikit bayaran untuk penyimpanan data selagi ruang kerja Azure Machine Learning wujud dalam langganan anda, jadi kami mengesyorkan anda memadamkan ruang kerja Azure Machine Learning apabila anda tidak lagi menggunakannya. + +1. Log masuk ke [portal Azure](https://ms.portal.azure.com/) menggunakan kelayakan Microsoft yang dikaitkan dengan langganan Azure anda. +2. Pilih **+Cipta sumber** + + ![ruang-kerja-1](../../../../translated_images/workspace-1.ac8694d60b073ed1ae8333d71244dc8a9b3e439d54593724f98f1beefdd27b08.ms.png) + + Cari Machine Learning dan pilih jubin Machine Learning + + ![ruang-kerja-2](../../../../translated_images/workspace-2.ae7c486db8796147075e4a56566aa819827dd6c4c8d18d64590317c3be625f17.ms.png) + + Klik butang cipta + + ![ruang-kerja-3](../../../../translated_images/workspace-3.398ca4a5858132cce584db9df10c5a011cd9075eb182e647a77d5cac01771eea.ms.png) + + Isikan tetapan seperti berikut: + - Langganan: Langganan Azure anda + - Kumpulan sumber: Cipta atau pilih kumpulan sumber + - Nama ruang kerja: Masukkan nama unik untuk ruang kerja anda + - Wilayah: Pilih wilayah geografi yang paling dekat dengan anda + - Akaun penyimpanan: Perhatikan akaun penyimpanan baharu lalai yang akan dicipta untuk ruang kerja anda + - Key vault: Perhatikan key vault baharu lalai yang akan dicipta untuk ruang kerja anda + - Application insights: Perhatikan sumber application insights baharu lalai yang akan dicipta untuk ruang kerja anda + - Container registry: Tiada (satu akan dicipta secara automatik kali pertama anda menggunakan model ke dalam kontena) + + ![ruang-kerja-4](../../../../translated_images/workspace-4.bac87f6599c4df63e624fc2608990f965887bee551d9dedc71c687b43b986b6a.ms.png) + + - Klik butang semak + cipta dan kemudian pada butang cipta +3. Tunggu ruang kerja anda dicipta (ini mungkin mengambil masa beberapa minit). Kemudian pergi ke ruang kerja tersebut dalam portal. Anda boleh mencarinya melalui perkhidmatan Azure Machine Learning. +4. Pada halaman Gambaran Keseluruhan untuk ruang kerja anda, lancarkan Azure Machine Learning studio (atau buka tab pelayar baharu dan navigasi ke https://ml.azure.com), dan log masuk ke Azure Machine Learning studio menggunakan akaun Microsoft anda. Jika diminta, pilih direktori dan langganan Azure anda, serta ruang kerja Azure Machine Learning anda. + +![ruang-kerja-5](../../../../translated_images/workspace-5.a6eb17e0a5e6420018b08bdaf3755ce977f96f1df3ea363d2476a9dce7e15adb.ms.png) + +5. Dalam Azure Machine Learning studio, togol ikon ☰ di bahagian atas kiri untuk melihat pelbagai halaman dalam antaramuka. Anda boleh menggunakan halaman ini untuk mengurus sumber dalam ruang kerja anda. + +![ruang-kerja-6](../../../../translated_images/workspace-6.8dd81fe841797ee17f8f73916769576260b16c4e17e850d277a49db35fd74a15.ms.png) + +Anda boleh mengurus ruang kerja anda menggunakan portal Azure, tetapi untuk saintis data dan jurutera operasi Pembelajaran Mesin, Azure Machine Learning Studio menyediakan antaramuka pengguna yang lebih fokus untuk mengurus sumber ruang kerja. + +### 2.2 Sumber Pengiraan + +Sumber Pengiraan adalah sumber berasaskan awan di mana anda boleh menjalankan proses latihan model dan penerokaan data. Terdapat empat jenis sumber pengiraan yang boleh anda cipta: + +- **Compute Instances**: Stesen kerja pembangunan yang boleh digunakan oleh saintis data untuk bekerja dengan data dan model. Ini melibatkan penciptaan Mesin Maya (VM) dan melancarkan instans buku nota. Anda kemudian boleh melatih model dengan memanggil kluster pengiraan dari buku nota. +- **Compute Clusters**: Kluster VM yang boleh diskalakan untuk pemprosesan kod eksperimen atas permintaan. Anda akan memerlukannya semasa melatih model. Kluster pengiraan juga boleh menggunakan sumber GPU atau CPU khusus. +- **Inference Clusters**: Sasaran penggunaan untuk perkhidmatan ramalan yang menggunakan model yang telah dilatih. +- **Attached Compute**: Pautan kepada sumber pengiraan Azure sedia ada, seperti Virtual Machines atau kluster Azure Databricks. + +#### 2.2.1 Memilih pilihan yang tepat untuk sumber pengiraan anda + +Beberapa faktor utama perlu dipertimbangkan semasa mencipta sumber pengiraan, dan pilihan tersebut boleh menjadi keputusan yang kritikal. + +**Adakah anda memerlukan CPU atau GPU?** + +CPU (Central Processing Unit) ialah litar elektronik yang melaksanakan arahan dalam program komputer. GPU (Graphics Processing Unit) pula ialah litar elektronik khusus yang boleh melaksanakan kod berkaitan grafik pada kadar yang sangat tinggi. + +Perbezaan utama antara seni bina CPU dan GPU ialah CPU direka untuk menangani pelbagai tugas dengan cepat (diukur dengan kelajuan jam CPU), tetapi terhad dalam keupayaan tugas serentak. GPU pula direka untuk pengiraan selari dan oleh itu jauh lebih baik untuk tugas pembelajaran mendalam. + +| CPU | GPU | +|-----------------------------------------|-----------------------------| +| Kurang mahal | Lebih mahal | +| Tahap serentak yang lebih rendah | Tahap serentak yang lebih tinggi | +| Lebih perlahan dalam melatih model pembelajaran mendalam | Optimum untuk pembelajaran mendalam | + +**Saiz Kluster** + +Kluster yang lebih besar lebih mahal tetapi akan memberikan respons yang lebih baik. Oleh itu, jika anda mempunyai masa tetapi kekurangan wang, anda harus bermula dengan kluster kecil. Sebaliknya, jika anda mempunyai wang tetapi kekurangan masa, anda harus bermula dengan kluster yang lebih besar. + +**Saiz VM** + +Bergantung pada kekangan masa dan bajet anda, anda boleh memvariasikan saiz RAM, cakera, bilangan teras, dan kelajuan jam. Meningkatkan semua parameter ini akan lebih mahal, tetapi akan memberikan prestasi yang lebih baik. + +**Instance Berdedikasi atau Keutamaan Rendah?** + +Instance keutamaan rendah bermaksud ia boleh terganggu: pada dasarnya, Microsoft Azure boleh mengambil sumber tersebut dan memberikannya kepada tugas lain, sekali gus mengganggu kerja. Instance berdedikasi, atau tidak boleh terganggu, bermaksud kerja tidak akan dihentikan tanpa kebenaran anda. +Ini adalah satu lagi pertimbangan antara masa dan wang, kerana instance yang boleh terganggu adalah lebih murah daripada yang berdedikasi. + +#### 2.2.2 Mencipta kluster pengiraan + +Dalam [ruang kerja Azure ML](https://ml.azure.com/) yang telah kita cipta sebelum ini, pergi ke bahagian pengiraan dan anda akan dapat melihat pelbagai sumber pengiraan yang baru sahaja kita bincangkan (contohnya instance pengiraan, kluster pengiraan, kluster inferens, dan pengiraan yang dilampirkan). Untuk projek ini, kita akan memerlukan kluster pengiraan untuk melatih model. Dalam Studio, klik pada menu "Compute", kemudian tab "Compute cluster" dan klik pada butang "+ New" untuk mencipta kluster pengiraan. + +![22](../../../../translated_images/cluster-1.b78cb630bb543729b11f60c34d97110a263f8c27b516ba4dc47807b3cee5579f.ms.png) + +1. Pilih pilihan anda: Dedicated vs Low priority, CPU atau GPU, saiz VM dan bilangan teras (anda boleh mengekalkan tetapan lalai untuk projek ini). +2. Klik pada butang Next. + +![23](../../../../translated_images/cluster-2.ea30cdbc9f926bb9e05af3fdbc1f679811c796dc2a6847f935290aec15526e88.ms.png) + +3. Berikan kluster nama pengiraan. +4. Pilih pilihan anda: Bilangan minimum/maksimum nod, masa tidak aktif sebelum skala turun, akses SSH. Perhatikan bahawa jika bilangan minimum nod adalah 0, anda akan menjimatkan wang apabila kluster tidak aktif. Perhatikan bahawa semakin tinggi bilangan maksimum nod, semakin pendek masa latihan. Bilangan maksimum nod yang disyorkan ialah 3. +5. Klik pada butang "Create". Langkah ini mungkin mengambil masa beberapa minit. + +![29](../../../../translated_images/cluster-3.8a334bc070ec173a329ce5abd2a9d727542e83eb2347676c9af20f2c8870b3e7.ms.png) + +Hebat! Sekarang kita mempunyai kluster pengiraan, kita perlu memuatkan data ke Azure ML Studio. + +### 2.3 Memuatkan Dataset + +1. Dalam [ruang kerja Azure ML](https://ml.azure.com/) yang telah kita cipta sebelum ini, klik pada "Datasets" di menu kiri dan klik pada butang "+ Create dataset" untuk mencipta dataset. Pilih pilihan "From local files" dan pilih dataset Kaggle yang telah kita muat turun sebelum ini. + + ![24](../../../../translated_images/dataset-1.e86ab4e10907a6e9c2a72577b51db35f13689cb33702337b8b7032f2ef76dac2.ms.png) + +2. Berikan dataset anda nama, jenis, dan deskripsi. Klik Next. Muat naik data daripada fail. Klik Next. + + ![25](../../../../translated_images/dataset-2.f58de1c435d5bf9ccb16ccc5f5d4380eb2b50affca85cfbf4f97562bdab99f77.ms.png) + +3. Dalam Schema, tukar jenis data kepada Boolean untuk ciri-ciri berikut: anaemia, diabetes, tekanan darah tinggi, jantina, merokok, dan DEATH_EVENT. Klik Next dan Klik Create. + + ![26](../../../../translated_images/dataset-3.58db8c0eb783e89236a02bbce5bb4ba808d081a87d994d5284b1ae59928c95bf.ms.png) + +Bagus! Sekarang dataset telah tersedia dan kluster pengiraan telah dicipta, kita boleh memulakan latihan model! + +### 2.4 Latihan Low code/No code dengan AutoML + +Pembangunan model pembelajaran mesin tradisional memerlukan banyak sumber, memerlukan pengetahuan domain yang signifikan, dan masa untuk menghasilkan serta membandingkan berpuluh-puluh model. +Pembelajaran mesin automatik (AutoML) ialah proses mengautomasi tugas-tugas pembangunan model pembelajaran mesin yang memakan masa dan berulang. Ia membolehkan saintis data, penganalisis, dan pembangun membina model ML dengan skala, kecekapan, dan produktiviti yang tinggi, sambil mengekalkan kualiti model. Ia mengurangkan masa yang diperlukan untuk mendapatkan model ML yang sedia untuk pengeluaran dengan mudah dan cekap. [Ketahui lebih lanjut](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) + +1. Dalam [ruang kerja Azure ML](https://ml.azure.com/) yang telah kita cipta sebelum ini, klik pada "Automated ML" di menu kiri dan pilih dataset yang baru sahaja anda muat naik. Klik Next. + + ![27](../../../../translated_images/aml-1.67281a85d3a1e2f34eb367b2d0f74e1039d13396e510f363cd8766632106d1ec.ms.png) + +2. Masukkan nama eksperimen baru, lajur sasaran (DEATH_EVENT), dan kluster pengiraan yang telah kita cipta. Klik Next. + + ![28](../../../../translated_images/aml-2.c9fb9cffb39ccbbe21ab9810ae937195d41a489744e15cff2b8477ed4dcae1ec.ms.png) + +3. Pilih "Classification" dan Klik Finish. Langkah ini mungkin mengambil masa antara 30 minit hingga 1 jam, bergantung pada saiz kluster pengiraan anda. + + ![30](../../../../translated_images/aml-3.a7952e4295f38cc6cdb0c7ed6dc71ea756b7fb5697ec126bc1220f87c5fa9231.ms.png) + +4. Setelah proses selesai, klik pada tab "Automated ML", klik pada eksperimen anda, dan klik pada Algoritma dalam kad "Best model summary". + + ![31](../../../../translated_images/aml-4.7a627e09cb6f16d0aa246059d9faee3d1725cc4258d0c8df15e801f73afc7e2c.ms.png) + +Di sini anda boleh melihat deskripsi terperinci tentang model terbaik yang dihasilkan oleh AutoML. Anda juga boleh meneroka model lain yang dihasilkan dalam tab Models. Luangkan beberapa minit untuk meneroka model dalam butang Explanations (preview). Setelah anda memilih model yang ingin digunakan (di sini kita akan memilih model terbaik yang dipilih oleh AutoML), kita akan melihat cara untuk melaksanakannya. + +## 3. Pelaksanaan model Low code/No code dan penggunaan endpoint +### 3.1 Pelaksanaan model + +Antara muka pembelajaran mesin automatik membolehkan anda melaksanakan model terbaik sebagai perkhidmatan web dalam beberapa langkah. Pelaksanaan ialah integrasi model supaya ia boleh membuat ramalan berdasarkan data baru dan mengenal pasti kawasan peluang yang berpotensi. Untuk projek ini, pelaksanaan ke perkhidmatan web bermaksud aplikasi perubatan akan dapat menggunakan model untuk membuat ramalan langsung tentang risiko pesakit mereka mengalami serangan jantung. + +Dalam deskripsi model terbaik, klik pada butang "Deploy". + +![deploy-1](../../../../translated_images/deploy-1.ddad725acadc84e34553c3d09e727160faeb32527a9fb8b904c0f99235a34bb6.ms.png) + +15. Berikan nama, deskripsi, jenis pengiraan (Azure Container Instance), aktifkan pengesahan, dan klik pada Deploy. Langkah ini mungkin mengambil masa kira-kira 20 minit untuk diselesaikan. Proses pelaksanaan melibatkan beberapa langkah termasuk mendaftarkan model, menjana sumber, dan mengkonfigurasinya untuk perkhidmatan web. Mesej status akan muncul di bawah status Deploy. Pilih Refresh secara berkala untuk memeriksa status pelaksanaan. Ia akan dilaksanakan dan berjalan apabila statusnya "Healthy". + +![deploy-2](../../../../translated_images/deploy-2.94dbb13f239086473aa4bf814342fd40483d136849b080f02bafbb995383940e.ms.png) + +16. Setelah ia dilaksanakan, klik pada tab Endpoint dan klik pada endpoint yang baru sahaja anda laksanakan. Di sini anda boleh menemui semua butiran yang perlu anda ketahui tentang endpoint tersebut. + +![deploy-3](../../../../translated_images/deploy-3.fecefef070e8ef3b28e802326d107f61ac4e672d20bf82d05f78d025f9e6c611.ms.png) + +Hebat! Sekarang kita mempunyai model yang dilaksanakan, kita boleh memulakan penggunaan endpoint. + +### 3.2 Penggunaan endpoint + +Klik pada tab "Consume". Di sini anda boleh menemui endpoint REST dan skrip Python dalam pilihan penggunaan. Luangkan masa untuk membaca kod Python tersebut. + +Skrip ini boleh dijalankan terus dari mesin tempatan anda dan akan menggunakan endpoint anda. + +![35](../../../../translated_images/consumption-1.700abd196452842a020c7d745908637a6e4c5c50494ad1217be80e283e0de154.ms.png) + +Luangkan masa untuk memeriksa dua baris kod ini: + +```python +url = 'http://98e3715f-xxxx-xxxx-xxxx-9ec22d57b796.centralus.azurecontainer.io/score' +api_key = '' # Replace this with the API key for the web service +``` +Pembolehubah `url` ialah endpoint REST yang terdapat dalam tab consume dan pembolehubah `api_key` ialah kunci utama yang juga terdapat dalam tab consume (hanya jika anda telah mengaktifkan pengesahan). Inilah cara skrip boleh menggunakan endpoint. + +18. Dengan menjalankan skrip, anda sepatutnya melihat output berikut: + ```python + b'"{\\"result\\": [true]}"' + ``` +Ini bermaksud bahawa ramalan kegagalan jantung untuk data yang diberikan adalah benar. Ini masuk akal kerana jika anda melihat lebih dekat pada data yang dijana secara automatik dalam skrip, semuanya adalah 0 dan palsu secara lalai. Anda boleh menukar data dengan sampel input berikut: + +```python +data = { + "data": + [ + { + 'age': "0", + 'anaemia': "false", + 'creatinine_phosphokinase': "0", + 'diabetes': "false", + 'ejection_fraction': "0", + 'high_blood_pressure': "false", + 'platelets': "0", + 'serum_creatinine': "0", + 'serum_sodium': "0", + 'sex': "false", + 'smoking': "false", + 'time': "0", + }, + { + 'age': "60", + 'anaemia': "false", + 'creatinine_phosphokinase': "500", + 'diabetes': "false", + 'ejection_fraction': "38", + 'high_blood_pressure': "false", + 'platelets': "260000", + 'serum_creatinine': "1.40", + 'serum_sodium': "137", + 'sex': "false", + 'smoking': "false", + 'time': "130", + }, + ], +} +``` +Skrip sepatutnya mengembalikan: + ```python + b'"{\\"result\\": [true, false]}"' + ``` + +Tahniah! Anda baru sahaja menggunakan model yang dilaksanakan dan melatihnya di Azure ML! + +> **_NOTA:_** Setelah anda selesai dengan projek ini, jangan lupa untuk memadamkan semua sumber. +## 🚀 Cabaran + +Perhatikan dengan teliti penjelasan model dan butiran yang dihasilkan oleh AutoML untuk model-model terbaik. Cuba fahami mengapa model terbaik lebih baik daripada yang lain. Algoritma apa yang dibandingkan? Apakah perbezaan antara mereka? Mengapa yang terbaik berprestasi lebih baik dalam kes ini? + +## [Kuiz Selepas Kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/35) + +## Ulasan & Kajian Kendiri + +Dalam pelajaran ini, anda telah belajar cara melatih, melaksanakan, dan menggunakan model untuk meramalkan risiko kegagalan jantung dengan cara Low code/No code di awan. Jika anda belum melakukannya, selami lebih dalam penjelasan model yang dihasilkan oleh AutoML untuk model-model terbaik dan cuba fahami mengapa model terbaik lebih baik daripada yang lain. + +Anda boleh mendalami AutoML Low code/No code dengan membaca [dokumentasi ini](https://docs.microsoft.com/azure/machine-learning/tutorial-first-experiment-automated-ml?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). + +## Tugasan + +[Projek Data Sains Low code/No code di Azure ML](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/5-Data-Science-In-Cloud/18-Low-Code/assignment.md b/translations/ms/5-Data-Science-In-Cloud/18-Low-Code/assignment.md new file mode 100644 index 00000000..9f9e2439 --- /dev/null +++ b/translations/ms/5-Data-Science-In-Cloud/18-Low-Code/assignment.md @@ -0,0 +1,25 @@ + +# Projek Sains Data Low code/No code di Azure ML + +## Arahan + +Kita telah melihat cara menggunakan platform Azure ML untuk melatih, menerapkan, dan menggunakan model secara Low code/No code. Sekarang, cari data yang boleh digunakan untuk melatih model lain, menerapkannya, dan menggunakannya. Anda boleh mencari set data di [Kaggle](https://kaggle.com) dan [Azure Open Datasets](https://azure.microsoft.com/services/open-datasets/catalog?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). + +## Rubrik + +| Cemerlang | Memadai | Perlu Penambahbaikan | +|-----------|----------|-------------------| +|Semasa memuat naik data, anda memastikan untuk menukar jenis ciri jika perlu. Anda juga membersihkan data jika diperlukan. Anda menjalankan latihan pada set data melalui AutoML, dan anda memeriksa penjelasan model. Anda menerapkan model terbaik dan berjaya menggunakannya. | Semasa memuat naik data, anda memastikan untuk menukar jenis ciri jika perlu. Anda menjalankan latihan pada set data melalui AutoML, anda menerapkan model terbaik dan berjaya menggunakannya. | Anda telah menerapkan model terbaik yang dilatih oleh AutoML dan berjaya menggunakannya. | + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/5-Data-Science-In-Cloud/19-Azure/README.md b/translations/ms/5-Data-Science-In-Cloud/19-Azure/README.md new file mode 100644 index 00000000..4b4d0247 --- /dev/null +++ b/translations/ms/5-Data-Science-In-Cloud/19-Azure/README.md @@ -0,0 +1,313 @@ + +# Sains Data di Awan: Cara "Azure ML SDK" + +|![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/19-DataScience-Cloud.png)| +|:---:| +| Sains Data di Awan: Azure ML SDK - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +Kandungan: + +- [Sains Data di Awan: Cara "Azure ML SDK"](../../../../5-Data-Science-In-Cloud/19-Azure) + - [Kuiz Pra-Kuliah](../../../../5-Data-Science-In-Cloud/19-Azure) + - [1. Pengenalan](../../../../5-Data-Science-In-Cloud/19-Azure) + - [1.1 Apa itu Azure ML SDK?](../../../../5-Data-Science-In-Cloud/19-Azure) + - [1.2 Pengenalan projek dan dataset ramalan kegagalan jantung](../../../../5-Data-Science-In-Cloud/19-Azure) + - [2. Melatih model dengan Azure ML SDK](../../../../5-Data-Science-In-Cloud/19-Azure) + - [2.1 Membuat ruang kerja Azure ML](../../../../5-Data-Science-In-Cloud/19-Azure) + - [2.2 Membuat instans pengiraan](../../../../5-Data-Science-In-Cloud/19-Azure) + - [2.3 Memuat dataset](../../../../5-Data-Science-In-Cloud/19-Azure) + - [2.4 Membuat Notebook](../../../../5-Data-Science-In-Cloud/19-Azure) + - [2.5 Melatih model](../../../../5-Data-Science-In-Cloud/19-Azure) + - [2.5.1 Menyediakan ruang kerja, eksperimen, kluster pengiraan, dan dataset](../../../../5-Data-Science-In-Cloud/19-Azure) + - [2.5.2 Konfigurasi dan latihan AutoML](../../../../5-Data-Science-In-Cloud/19-Azure) + - [3. Penyebaran model dan penggunaan endpoint dengan Azure ML SDK](../../../../5-Data-Science-In-Cloud/19-Azure) + - [3.1 Menyimpan model terbaik](../../../../5-Data-Science-In-Cloud/19-Azure) + - [3.2 Penyebaran model](../../../../5-Data-Science-In-Cloud/19-Azure) + - [3.3 Penggunaan endpoint](../../../../5-Data-Science-In-Cloud/19-Azure) + - [🚀 Cabaran](../../../../5-Data-Science-In-Cloud/19-Azure) + - [Kuiz Pasca-Kuliah](../../../../5-Data-Science-In-Cloud/19-Azure) + - [Ulasan & Kajian Kendiri](../../../../5-Data-Science-In-Cloud/19-Azure) + - [Tugasan](../../../../5-Data-Science-In-Cloud/19-Azure) + +## [Kuiz Pra-Kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/36) + +## 1. Pengenalan + +### 1.1 Apa itu Azure ML SDK? + +Saintis data dan pembangun AI menggunakan Azure Machine Learning SDK untuk membina dan menjalankan alur kerja pembelajaran mesin dengan perkhidmatan Azure Machine Learning. Anda boleh berinteraksi dengan perkhidmatan ini dalam mana-mana persekitaran Python, termasuk Jupyter Notebooks, Visual Studio Code, atau IDE Python kegemaran anda. + +Bidang utama SDK termasuk: + +- Meneroka, menyediakan, dan mengurus kitaran hayat dataset yang digunakan dalam eksperimen pembelajaran mesin. +- Mengurus sumber awan untuk pemantauan, log, dan pengorganisasian eksperimen pembelajaran mesin anda. +- Melatih model sama ada secara tempatan atau menggunakan sumber awan, termasuk latihan model yang dipercepatkan GPU. +- Menggunakan pembelajaran mesin automatik, yang menerima parameter konfigurasi dan data latihan. Ia secara automatik mengulangi algoritma dan tetapan hiperparameter untuk mencari model terbaik untuk menjalankan ramalan. +- Menyebarkan perkhidmatan web untuk menukar model yang telah dilatih menjadi perkhidmatan RESTful yang boleh digunakan dalam mana-mana aplikasi. + +[Ketahui lebih lanjut tentang Azure Machine Learning SDK](https://docs.microsoft.com/python/api/overview/azure/ml?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) + +Dalam [pelajaran sebelumnya](../18-Low-Code/README.md), kita telah melihat cara melatih, menyebarkan, dan menggunakan model dengan cara Low code/No code. Kita menggunakan dataset Kegagalan Jantung untuk menghasilkan model ramalan kegagalan jantung. Dalam pelajaran ini, kita akan melakukan perkara yang sama tetapi menggunakan Azure Machine Learning SDK. + +![skema-projek](../../../../translated_images/project-schema.420e56d495624541eaecf2b737f138c86fb7d8162bb1c0bf8783c350872ffc4d.ms.png) + +### 1.2 Pengenalan projek dan dataset ramalan kegagalan jantung + +Rujuk [di sini](../18-Low-Code/README.md) untuk pengenalan projek dan dataset ramalan kegagalan jantung. + +## 2. Melatih model dengan Azure ML SDK +### 2.1 Membuat ruang kerja Azure ML + +Untuk kemudahan, kita akan bekerja di jupyter notebook. Ini bermakna anda sudah mempunyai Ruang Kerja dan instans pengiraan. Jika anda sudah mempunyai Ruang Kerja, anda boleh terus ke bahagian 2.3 Penciptaan Notebook. + +Jika tidak, sila ikuti arahan dalam bahagian **2.1 Membuat ruang kerja Azure ML** dalam [pelajaran sebelumnya](../18-Low-Code/README.md) untuk membuat ruang kerja. + +### 2.2 Membuat instans pengiraan + +Dalam [ruang kerja Azure ML](https://ml.azure.com/) yang telah kita buat sebelum ini, pergi ke menu pengiraan dan anda akan melihat pelbagai sumber pengiraan yang tersedia. + +![instans-pengiraan-1](../../../../translated_images/compute-instance-1.dba347cb199ca4996b3e3d649295ed95626ba481479d3986557b9b98e76d8816.ms.png) + +Mari kita buat instans pengiraan untuk menyediakan jupyter notebook. +1. Klik pada butang + Baru. +2. Berikan nama kepada instans pengiraan anda. +3. Pilih pilihan anda: CPU atau GPU, saiz VM dan bilangan teras. +4. Klik pada butang Cipta. + +Tahniah, anda baru sahaja mencipta instans pengiraan! Kita akan menggunakan instans pengiraan ini untuk mencipta Notebook di bahagian [Membuat Notebook](../../../../5-Data-Science-In-Cloud/19-Azure). + +### 2.3 Memuat dataset +Rujuk [pelajaran sebelumnya](../18-Low-Code/README.md) dalam bahagian **2.3 Memuat dataset** jika anda belum memuat naik dataset. + +### 2.4 Membuat Notebook + +> **_NOTA:_** Untuk langkah seterusnya, anda boleh sama ada mencipta notebook baru dari awal, atau anda boleh memuat naik [notebook yang telah kita buat](notebook.ipynb) ke dalam Azure ML Studio anda. Untuk memuat naiknya, klik sahaja pada menu "Notebook" dan muat naik notebook tersebut. + +Notebook adalah bahagian yang sangat penting dalam proses sains data. Ia boleh digunakan untuk Melakukan Analisis Data Eksplorasi (EDA), memanggil kluster komputer untuk melatih model, atau memanggil kluster inferens untuk menyebarkan endpoint. + +Untuk mencipta Notebook, kita memerlukan nod pengiraan yang menyediakan instans jupyter notebook. Kembali ke [ruang kerja Azure ML](https://ml.azure.com/) dan klik pada Instans Pengiraan. Dalam senarai instans pengiraan, anda sepatutnya melihat [instans pengiraan yang kita buat sebelum ini](../../../../5-Data-Science-In-Cloud/19-Azure). + +1. Dalam bahagian Aplikasi, klik pada pilihan Jupyter. +2. Tandakan kotak "Ya, saya faham" dan klik pada butang Teruskan. +![notebook-1](../../../../translated_images/notebook-1.12998af7b02c83f536c11b3aeba561be16e0f05e94146600728ec64270ce1105.ms.png) +3. Ini akan membuka tab pelayar baru dengan instans jupyter notebook anda seperti berikut. Klik pada butang "Baru" untuk mencipta notebook. + +![notebook-2](../../../../translated_images/notebook-2.9a657c037e34f1cf26c0212f5ee9e2da8545b3e107c7682c55114e494167a8aa.ms.png) + +Sekarang kita mempunyai Notebook, kita boleh mula melatih model dengan Azure ML SDK. + +### 2.5 Melatih model + +Pertama sekali, jika anda mempunyai keraguan, rujuk [dokumentasi Azure ML SDK](https://docs.microsoft.com/python/api/overview/azure/ml?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). Ia mengandungi semua maklumat yang diperlukan untuk memahami modul yang akan kita lihat dalam pelajaran ini. + +#### 2.5.1 Menyediakan ruang kerja, eksperimen, kluster pengiraan, dan dataset + +Anda perlu memuatkan `workspace` dari fail konfigurasi menggunakan kod berikut: + +```python +from azureml.core import Workspace +ws = Workspace.from_config() +``` + +Ini akan mengembalikan objek jenis `Workspace` yang mewakili ruang kerja. Kemudian anda perlu mencipta `experiment` menggunakan kod berikut: + +```python +from azureml.core import Experiment +experiment_name = 'aml-experiment' +experiment = Experiment(ws, experiment_name) +``` +Untuk mendapatkan atau mencipta eksperimen dari ruang kerja, anda meminta eksperimen menggunakan nama eksperimen. Nama eksperimen mesti terdiri daripada 3-36 aksara, bermula dengan huruf atau nombor, dan hanya boleh mengandungi huruf, nombor, garis bawah, dan tanda hubung. Jika eksperimen tidak dijumpai dalam ruang kerja, eksperimen baru akan dicipta. + +Sekarang anda perlu mencipta kluster pengiraan untuk latihan menggunakan kod berikut. Perhatikan bahawa langkah ini mungkin mengambil masa beberapa minit. + +```python +from azureml.core.compute import AmlCompute + +aml_name = "heart-f-cluster" +try: + aml_compute = AmlCompute(ws, aml_name) + print('Found existing AML compute context.') +except: + print('Creating new AML compute context.') + aml_config = AmlCompute.provisioning_configuration(vm_size = "Standard_D2_v2", min_nodes=1, max_nodes=3) + aml_compute = AmlCompute.create(ws, name = aml_name, provisioning_configuration = aml_config) + aml_compute.wait_for_completion(show_output = True) + +cts = ws.compute_targets +compute_target = cts[aml_name] +``` + +Anda boleh mendapatkan dataset dari ruang kerja menggunakan nama dataset dengan cara berikut: + +```python +dataset = ws.datasets['heart-failure-records'] +df = dataset.to_pandas_dataframe() +df.describe() +``` +#### 2.5.2 Konfigurasi dan latihan AutoML + +Untuk menetapkan konfigurasi AutoML, gunakan [kelas AutoMLConfig](https://docs.microsoft.com/python/api/azureml-train-automl-client/azureml.train.automl.automlconfig(class)?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). + +Seperti yang diterangkan dalam dokumen, terdapat banyak parameter yang boleh anda ubah suai. Untuk projek ini, kita akan menggunakan parameter berikut: + +- `experiment_timeout_minutes`: Masa maksimum (dalam minit) yang dibenarkan untuk eksperimen berjalan sebelum ia dihentikan secara automatik dan hasilnya tersedia secara automatik. +- `max_concurrent_iterations`: Bilangan maksimum iterasi latihan serentak yang dibenarkan untuk eksperimen. +- `primary_metric`: Metrik utama yang digunakan untuk menentukan status eksperimen. +- `compute_target`: Sasaran pengiraan Azure Machine Learning untuk menjalankan eksperimen Pembelajaran Mesin Automatik. +- `task`: Jenis tugas yang akan dijalankan. Nilai boleh 'classification', 'regression', atau 'forecasting' bergantung pada jenis masalah ML automatik yang ingin diselesaikan. +- `training_data`: Data latihan yang akan digunakan dalam eksperimen. Ia harus mengandungi ciri latihan dan lajur label (secara opsional lajur berat sampel). +- `label_column_name`: Nama lajur label. +- `path`: Laluan penuh ke folder projek Azure Machine Learning. +- `enable_early_stopping`: Sama ada untuk membolehkan penamatan awal jika skor tidak bertambah baik dalam jangka pendek. +- `featurization`: Penunjuk sama ada langkah featurization harus dilakukan secara automatik atau tidak, atau sama ada featurization tersuai harus digunakan. +- `debug_log`: Fail log untuk menulis maklumat debug. + +```python +from azureml.train.automl import AutoMLConfig + +project_folder = './aml-project' + +automl_settings = { + "experiment_timeout_minutes": 20, + "max_concurrent_iterations": 3, + "primary_metric" : 'AUC_weighted' +} + +automl_config = AutoMLConfig(compute_target=compute_target, + task = "classification", + training_data=dataset, + label_column_name="DEATH_EVENT", + path = project_folder, + enable_early_stopping= True, + featurization= 'auto', + debug_log = "automl_errors.log", + **automl_settings + ) +``` +Sekarang setelah konfigurasi anda ditetapkan, anda boleh melatih model menggunakan kod berikut. Langkah ini mungkin mengambil masa sehingga satu jam bergantung pada saiz kluster anda. + +```python +remote_run = experiment.submit(automl_config) +``` +Anda boleh menjalankan widget RunDetails untuk menunjukkan eksperimen yang berbeza. +```python +from azureml.widgets import RunDetails +RunDetails(remote_run).show() +``` +## 3. Penyebaran model dan penggunaan endpoint dengan Azure ML SDK + +### 3.1 Menyimpan model terbaik + +`remote_run` adalah objek jenis [AutoMLRun](https://docs.microsoft.com/python/api/azureml-train-automl-client/azureml.train.automl.run.automlrun?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). Objek ini mengandungi kaedah `get_output()` yang mengembalikan eksperimen terbaik dan model yang sesuai. + +```python +best_run, fitted_model = remote_run.get_output() +``` +Anda boleh melihat parameter yang digunakan untuk model terbaik dengan hanya mencetak `fitted_model` dan melihat sifat model terbaik dengan menggunakan kaedah [get_properties()](https://docs.microsoft.com/python/api/azureml-core/azureml.core.run(class)?view=azure-ml-py#azureml_core_Run_get_properties?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). + +```python +best_run.get_properties() +``` + +Sekarang daftarkan model dengan kaedah [register_model](https://docs.microsoft.com/python/api/azureml-train-automl-client/azureml.train.automl.run.automlrun?view=azure-ml-py#register-model-model-name-none--description-none--tags-none--iteration-none--metric-none-?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). +```python +model_name = best_run.properties['model_name'] +script_file_name = 'inference/score.py' +best_run.download_file('outputs/scoring_file_v_1_0_0.py', 'inference/score.py') +description = "aml heart failure project sdk" +model = best_run.register_model(model_name = model_name, + model_path = './outputs/', + description = description, + tags = None) +``` +### 3.2 Penyebaran model + +Setelah model terbaik disimpan, kita boleh menyebarkannya dengan kelas [InferenceConfig](https://docs.microsoft.com/python/api/azureml-core/azureml.core.model.inferenceconfig?view=azure-ml-py?ocid=AID3041109). InferenceConfig mewakili tetapan konfigurasi untuk persekitaran tersuai yang digunakan untuk penyebaran. Kelas [AciWebservice](https://docs.microsoft.com/python/api/azureml-core/azureml.core.webservice.aciwebservice?view=azure-ml-py) mewakili model pembelajaran mesin yang disebarkan sebagai endpoint perkhidmatan web pada Azure Container Instances. Perkhidmatan web yang disebarkan adalah endpoint HTTP yang seimbang beban dengan API REST. Anda boleh menghantar data ke API ini dan menerima ramalan yang dikembalikan oleh model. + +Model disebarkan menggunakan kaedah [deploy](https://docs.microsoft.com/python/api/azureml-core/azureml.core.model(class)?view=azure-ml-py#deploy-workspace--name--models--inference-config-none--deployment-config-none--deployment-target-none--overwrite-false--show-output-false-?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). + +```python +from azureml.core.model import InferenceConfig, Model +from azureml.core.webservice import AciWebservice + +inference_config = InferenceConfig(entry_script=script_file_name, environment=best_run.get_environment()) + +aciconfig = AciWebservice.deploy_configuration(cpu_cores = 1, + memory_gb = 1, + tags = {'type': "automl-heart-failure-prediction"}, + description = 'Sample service for AutoML Heart Failure Prediction') + +aci_service_name = 'automl-hf-sdk' +aci_service = Model.deploy(ws, aci_service_name, [model], inference_config, aciconfig) +aci_service.wait_for_deployment(True) +print(aci_service.state) +``` +Langkah ini mungkin mengambil masa beberapa minit. + +### 3.3 Penggunaan endpoint + +Anda boleh menggunakan endpoint anda dengan mencipta input sampel: + +```python +data = { + "data": + [ + { + 'age': "60", + 'anaemia': "false", + 'creatinine_phosphokinase': "500", + 'diabetes': "false", + 'ejection_fraction': "38", + 'high_blood_pressure': "false", + 'platelets': "260000", + 'serum_creatinine': "1.40", + 'serum_sodium': "137", + 'sex': "false", + 'smoking': "false", + 'time': "130", + }, + ], +} + +test_sample = str.encode(json.dumps(data)) +``` +Dan kemudian anda boleh menghantar input ini ke model anda untuk mendapatkan ramalan: +```python +response = aci_service.run(input_data=test_sample) +response +``` +Ini sepatutnya menghasilkan `'{"result": [false]}'`. Ini bermaksud bahawa input pesakit yang kita hantar ke endpoint menghasilkan ramalan `false` yang bermaksud orang ini tidak berkemungkinan mengalami serangan jantung. + +Tahniah! Anda baru sahaja menggunakan model yang telah dideploy dan dilatih di Azure ML dengan Azure ML SDK! + + +> **_NOTA:_** Setelah anda selesai dengan projek ini, jangan lupa untuk memadam semua sumber. + +## 🚀 Cabaran + +Terdapat banyak perkara lain yang boleh anda lakukan melalui SDK, malangnya, kita tidak dapat melihat semuanya dalam pelajaran ini. Tetapi berita baik, belajar cara untuk menyemak imbas dokumentasi SDK boleh membantu anda jauh secara sendiri. Lihat dokumentasi Azure ML SDK dan cari kelas `Pipeline` yang membolehkan anda mencipta pipeline. Pipeline adalah koleksi langkah-langkah yang boleh dilaksanakan sebagai satu aliran kerja. + +**PETUNJUK:** Pergi ke [dokumentasi SDK](https://docs.microsoft.com/python/api/overview/azure/ml/?view=azure-ml-py?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) dan taip kata kunci seperti "Pipeline" di bar carian. Anda sepatutnya melihat kelas `azureml.pipeline.core.Pipeline` dalam hasil carian. + +## [Kuiz selepas kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/37) + +## Ulasan & Kajian Kendiri + +Dalam pelajaran ini, anda telah belajar cara melatih, mendeply dan menggunakan model untuk meramal risiko kegagalan jantung dengan Azure ML SDK di awan. Semak [dokumentasi ini](https://docs.microsoft.com/python/api/overview/azure/ml/?view=azure-ml-py?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) untuk maklumat lanjut tentang Azure ML SDK. Cuba cipta model anda sendiri dengan Azure ML SDK. + +## Tugasan + +[Projek Sains Data menggunakan Azure ML SDK](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/5-Data-Science-In-Cloud/19-Azure/assignment.md b/translations/ms/5-Data-Science-In-Cloud/19-Azure/assignment.md new file mode 100644 index 00000000..f6e0b6f5 --- /dev/null +++ b/translations/ms/5-Data-Science-In-Cloud/19-Azure/assignment.md @@ -0,0 +1,25 @@ + +# Projek Sains Data menggunakan Azure ML SDK + +## Arahan + +Kita telah melihat bagaimana menggunakan platform Azure ML untuk melatih, menyebarkan, dan menggunakan model dengan Azure ML SDK. Sekarang cari data yang boleh digunakan untuk melatih model lain, menyebarkannya, dan menggunakannya. Anda boleh mencari set data di [Kaggle](https://kaggle.com) dan [Azure Open Datasets](https://azure.microsoft.com/services/open-datasets/catalog?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). + +## Rubrik + +| Cemerlang | Memadai | Perlu Penambahbaikan | +|-----------|----------|----------------------| +|Semasa melakukan Konfigurasi AutoML, anda merujuk dokumentasi SDK untuk melihat parameter yang boleh digunakan. Anda menjalankan latihan pada set data melalui AutoML menggunakan Azure ML SDK, dan anda memeriksa penjelasan model. Anda menyebarkan model terbaik dan berjaya menggunakannya melalui Azure ML SDK. | Anda menjalankan latihan pada set data melalui AutoML menggunakan Azure ML SDK, dan anda memeriksa penjelasan model. Anda menyebarkan model terbaik dan berjaya menggunakannya melalui Azure ML SDK. | Anda menjalankan latihan pada set data melalui AutoML menggunakan Azure ML SDK. Anda menyebarkan model terbaik dan berjaya menggunakannya melalui Azure ML SDK. | + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/5-Data-Science-In-Cloud/README.md b/translations/ms/5-Data-Science-In-Cloud/README.md new file mode 100644 index 00000000..d42bb2a7 --- /dev/null +++ b/translations/ms/5-Data-Science-In-Cloud/README.md @@ -0,0 +1,35 @@ + +# Sains Data di Awan + +![cloud-picture](../../../translated_images/cloud-picture.f5526de3c6c6387b2d656ba94f019b3352e5e3854a78440e4fb00c93e2dea675.ms.jpg) + +> Foto oleh [Jelleke Vanooteghem](https://unsplash.com/@ilumire) dari [Unsplash](https://unsplash.com/s/photos/cloud?orientation=landscape) + +Apabila melibatkan sains data dengan data besar, awan boleh menjadi pengubah permainan. Dalam tiga pelajaran seterusnya, kita akan melihat apa itu awan dan mengapa ia sangat berguna. Kita juga akan meneroka dataset kegagalan jantung dan membina model untuk membantu menilai kebarangkalian seseorang mengalami kegagalan jantung. Kita akan menggunakan kuasa awan untuk melatih, menyebarkan, dan menggunakan model dengan dua cara berbeza. Satu cara menggunakan antara muka pengguna sahaja dalam pendekatan Low code/No code, dan cara lain menggunakan Azure Machine Learning Software Developer Kit (Azure ML SDK). + +![project-schema](../../../translated_images/project-schema.420e56d495624541eaecf2b737f138c86fb7d8162bb1c0bf8783c350872ffc4d.ms.png) + +### Topik + +1. [Mengapa menggunakan Awan untuk Sains Data?](17-Introduction/README.md) +2. [Sains Data di Awan: Cara "Low code/No code"](18-Low-Code/README.md) +3. [Sains Data di Awan: Cara "Azure ML SDK"](19-Azure/README.md) + +### Kredit +Pelajaran ini ditulis dengan ☁️ dan 💕 oleh [Maud Levy](https://twitter.com/maudstweets) dan [Tiffany Souterre](https://twitter.com/TiffanySouterre) + +Data untuk projek Ramalan Kegagalan Jantung diperoleh daripada [ +Larxel](https://www.kaggle.com/andrewmvd) di [Kaggle](https://www.kaggle.com/andrewmvd/heart-failure-clinical-data). Ia dilesenkan di bawah [Attribution 4.0 International (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/6-Data-Science-In-Wild/20-Real-World-Examples/README.md b/translations/ms/6-Data-Science-In-Wild/20-Real-World-Examples/README.md new file mode 100644 index 00000000..b9836bce --- /dev/null +++ b/translations/ms/6-Data-Science-In-Wild/20-Real-World-Examples/README.md @@ -0,0 +1,155 @@ + +# Sains Data di Dunia Sebenar + +| ![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-RealWorld.png) | +| :--------------------------------------------------------------------------------------------------------------: | +| Sains Data di Dunia Sebenar - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +Kita hampir sampai ke penghujung perjalanan pembelajaran ini! + +Kita bermula dengan definisi sains data dan etika, meneroka pelbagai alat & teknik untuk analisis dan visualisasi data, mengkaji kitaran hayat sains data, dan melihat cara untuk meningkatkan skala serta mengautomasi aliran kerja sains data menggunakan perkhidmatan pengkomputeran awan. Jadi, anda mungkin tertanya-tanya: _"Bagaimana sebenarnya saya boleh memetakan semua pembelajaran ini kepada konteks dunia sebenar?"_ + +Dalam pelajaran ini, kita akan meneroka aplikasi dunia sebenar sains data merentasi industri dan menyelami contoh-contoh spesifik dalam konteks penyelidikan, kemanusiaan digital, dan kelestarian. Kita akan melihat peluang projek pelajar dan mengakhiri dengan sumber berguna untuk membantu anda meneruskan perjalanan pembelajaran anda! + +## Kuiz Pra-Kuliah + +[Kuiz pra-kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/38) + +## Sains Data + Industri + +Terima kasih kepada pendemokrasian AI, pembangun kini lebih mudah untuk mereka bentuk dan mengintegrasikan pembuatan keputusan berasaskan AI serta pandangan berasaskan data ke dalam pengalaman pengguna dan aliran kerja pembangunan. Berikut adalah beberapa contoh bagaimana sains data "digunakan" dalam aplikasi dunia sebenar merentasi industri: + + * [Google Flu Trends](https://www.wired.com/2015/10/can-learn-epic-failure-google-flu-trends/) menggunakan sains data untuk mengaitkan istilah carian dengan trend selesema. Walaupun pendekatan ini mempunyai kelemahan, ia meningkatkan kesedaran tentang kemungkinan (dan cabaran) ramalan penjagaan kesihatan berasaskan data. + + * [UPS Routing Predictions](https://www.technologyreview.com/2018/11/21/139000/how-ups-uses-ai-to-outsmart-bad-weather/) - menerangkan bagaimana UPS menggunakan sains data dan pembelajaran mesin untuk meramalkan laluan penghantaran yang optimum, dengan mengambil kira keadaan cuaca, corak trafik, tarikh akhir penghantaran dan banyak lagi. + + * [NYC Taxicab Route Visualization](http://chriswhong.github.io/nyctaxi/) - data yang dikumpulkan menggunakan [Freedom Of Information Laws](https://chriswhong.com/open-data/foil_nyc_taxi/) membantu memvisualisasikan satu hari dalam kehidupan teksi NYC, membantu kita memahami bagaimana mereka menavigasi bandar yang sibuk, pendapatan mereka, dan tempoh perjalanan dalam setiap tempoh 24 jam. + + * [Uber Data Science Workbench](https://eng.uber.com/dsw/) - menggunakan data (lokasi pengambilan & penghantaran, tempoh perjalanan, laluan pilihan dll.) yang dikumpulkan daripada berjuta-juta perjalanan Uber *setiap hari* untuk membina alat analitik data bagi membantu dengan penetapan harga, keselamatan, pengesanan penipuan dan keputusan navigasi. + + * [Sports Analytics](https://towardsdatascience.com/scope-of-analytics-in-sports-world-37ed09c39860) - memberi tumpuan kepada _analitik ramalan_ (analisis pasukan dan pemain - fikirkan [Moneyball](https://datasciencedegree.wisconsin.edu/blog/moneyball-proves-importance-big-data-big-ideas/) - dan pengurusan peminat) dan _visualisasi data_ (papan pemuka pasukan & peminat, permainan dll.) dengan aplikasi seperti pencarian bakat, perjudian sukan dan pengurusan inventori/tempat. + + * [Sains Data dalam Perbankan](https://data-flair.training/blogs/data-science-in-banking/) - menonjolkan nilai sains data dalam industri kewangan dengan aplikasi yang merangkumi pemodelan risiko dan pengesanan penipuan, kepada segmentasi pelanggan, ramalan masa nyata dan sistem cadangan. Analitik ramalan juga mendorong langkah kritikal seperti [skor kredit](https://dzone.com/articles/using-big-data-and-predictive-analytics-for-credit). + + * [Sains Data dalam Penjagaan Kesihatan](https://data-flair.training/blogs/data-science-in-healthcare/) - menonjolkan aplikasi seperti pengimejan perubatan (contohnya, MRI, X-Ray, CT-Scan), genomik (penjujukan DNA), pembangunan ubat (penilaian risiko, ramalan kejayaan), analitik ramalan (penjagaan pesakit & logistik bekalan), pengesanan & pencegahan penyakit dll. + +![Aplikasi Sains Data di Dunia Sebenar](../../../../translated_images/data-science-applications.4e5019cd8790ebac2277ff5f08af386f8727cac5d30f77727c7090677e6adb9c.ms.png) Kredit Imej: [Data Flair: 6 Amazing Data Science Applications ](https://data-flair.training/blogs/data-science-applications/) + +Rajah menunjukkan domain lain dan contoh untuk menerapkan teknik sains data. Mahu meneroka aplikasi lain? Lihat bahagian [Review & Self Study](../../../../6-Data-Science-In-Wild/20-Real-World-Examples) di bawah. + +## Sains Data + Penyelidikan + +| ![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-Research.png) | +| :---------------------------------------------------------------------------------------------------------------: | +| Sains Data & Penyelidikan - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +Walaupun aplikasi dunia sebenar sering memberi tumpuan kepada kes penggunaan industri pada skala besar, aplikasi dan projek _penyelidikan_ boleh berguna dari dua perspektif: + +* _peluang inovasi_ - meneroka prototaip pantas konsep maju dan menguji pengalaman pengguna untuk aplikasi generasi akan datang. +* _cabaran pelaksanaan_ - menyiasat potensi bahaya atau akibat yang tidak diingini daripada teknologi sains data dalam konteks dunia sebenar. + +Bagi pelajar, projek penyelidikan ini boleh memberikan peluang pembelajaran dan kerjasama yang dapat meningkatkan pemahaman anda tentang topik tersebut, serta memperluaskan kesedaran dan penglibatan anda dengan individu atau pasukan yang relevan yang bekerja dalam bidang yang diminati. Jadi, bagaimana rupa projek penyelidikan dan bagaimana ia boleh memberi impak? + +Mari kita lihat satu contoh - [MIT Gender Shades Study](http://gendershades.org/overview.html) oleh Joy Buolamwini (MIT Media Labs) dengan [kertas penyelidikan utama](http://proceedings.mlr.press/v81/buolamwini18a/buolamwini18a.pdf) yang ditulis bersama Timnit Gebru (ketika itu di Microsoft Research) yang memberi tumpuan kepada + + * **Apa:** Objektif projek penyelidikan adalah untuk _menilai bias yang terdapat dalam algoritma dan set data analisis wajah automatik_ berdasarkan jantina dan jenis kulit. + * **Mengapa:** Analisis wajah digunakan dalam bidang seperti penguatkuasaan undang-undang, keselamatan lapangan terbang, sistem pengambilan pekerja dan banyak lagi - konteks di mana klasifikasi yang tidak tepat (contohnya, disebabkan bias) boleh menyebabkan potensi bahaya ekonomi dan sosial kepada individu atau kumpulan yang terjejas. Memahami (dan menghapuskan atau mengurangkan) bias adalah kunci kepada keadilan dalam penggunaan. + * **Bagaimana:** Penyelidik menyedari bahawa penanda aras sedia ada menggunakan subjek yang kebanyakannya berkulit cerah, dan mengumpulkan set data baharu (1000+ imej) yang _lebih seimbang_ mengikut jantina dan jenis kulit. Set data ini digunakan untuk menilai ketepatan tiga produk klasifikasi jantina (daripada Microsoft, IBM & Face++). + +Hasil menunjukkan bahawa walaupun ketepatan klasifikasi keseluruhan adalah baik, terdapat perbezaan yang ketara dalam kadar kesilapan antara pelbagai subkumpulan - dengan **misgendering** lebih tinggi untuk wanita atau individu berkulit gelap, menunjukkan adanya bias. + +**Hasil Utama:** Meningkatkan kesedaran bahawa sains data memerlukan lebih banyak _set data yang mewakili_ (subkumpulan seimbang) dan lebih banyak _pasukan inklusif_ (latar belakang yang pelbagai) untuk mengenali dan menghapuskan atau mengurangkan bias seperti ini lebih awal dalam penyelesaian AI. Usaha penyelidikan seperti ini juga penting dalam banyak organisasi untuk menentukan prinsip dan amalan bagi _AI yang bertanggungjawab_ untuk meningkatkan keadilan dalam produk dan proses AI mereka. + +**Mahu belajar tentang usaha penyelidikan yang relevan di Microsoft?** + +* Lihat [Projek Penyelidikan Microsoft](https://www.microsoft.com/research/research-area/artificial-intelligence/?facet%5Btax%5D%5Bmsr-research-area%5D%5B%5D=13556&facet%5Btax%5D%5Bmsr-content-type%5D%5B%5D=msr-project) mengenai Kecerdasan Buatan. +* Terokai projek pelajar dari [Microsoft Research Data Science Summer School](https://www.microsoft.com/en-us/research/academic-program/data-science-summer-school/). +* Lihat projek [Fairlearn](https://fairlearn.org/) dan inisiatif [AI yang Bertanggungjawab](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1%3aprimaryr6). + +## Sains Data + Kemanusiaan + +| ![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-Humanities.png) | +| :---------------------------------------------------------------------------------------------------------------: | +| Sains Data & Kemanusiaan Digital - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +Kemanusiaan Digital [telah ditakrifkan](https://digitalhumanities.stanford.edu/about-dh-stanford) sebagai "koleksi amalan dan pendekatan yang menggabungkan kaedah pengiraan dengan penyelidikan kemanusiaan". Projek [Stanford](https://digitalhumanities.stanford.edu/projects) seperti _"rebooting history"_ dan _"poetic thinking"_ menggambarkan hubungan antara [Kemanusiaan Digital dan Sains Data](https://digitalhumanities.stanford.edu/digital-humanities-and-data-science) - menekankan teknik seperti analisis rangkaian, visualisasi maklumat, analisis spatial dan teks yang boleh membantu kita mengkaji semula set data sejarah dan sastera untuk mendapatkan pandangan serta perspektif baharu. + +*Mahu meneroka dan melanjutkan projek dalam bidang ini?* + +Lihat ["Emily Dickinson and the Meter of Mood"](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671) - contoh hebat daripada [Jen Looper](https://twitter.com/jenlooper) yang bertanya bagaimana kita boleh menggunakan sains data untuk mengkaji semula puisi yang biasa dan menilai semula maknanya serta sumbangan pengarangnya dalam konteks baharu. Sebagai contoh, _bolehkah kita meramalkan musim di mana puisi ditulis dengan menganalisis nada atau sentimennya_ - dan apa yang ini memberitahu kita tentang keadaan fikiran pengarang sepanjang tempoh yang relevan? + +Untuk menjawab soalan itu, kita mengikuti langkah-langkah kitaran hayat sains data: + * [`Pemerolehan Data`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#acquiring-the-dataset) - untuk mengumpulkan set data yang relevan untuk analisis. Pilihan termasuk menggunakan API (contohnya, [Poetry DB API](https://poetrydb.org/index.html)) atau mengikis halaman web (contohnya, [Project Gutenberg](https://www.gutenberg.org/files/12242/12242-h/12242-h.htm)) menggunakan alat seperti [Scrapy](https://scrapy.org/). + * [`Pembersihan Data`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#clean-the-data) - menerangkan bagaimana teks boleh diformat, disanitasi dan dipermudahkan menggunakan alat asas seperti Visual Studio Code dan Microsoft Excel. + * [`Analisis Data`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#working-with-the-data-in-a-notebook) - menerangkan bagaimana kita boleh mengimport set data ke dalam "Notebooks" untuk analisis menggunakan pakej Python (seperti pandas, numpy dan matplotlib) untuk mengatur dan memvisualisasikan data. + * [`Analisis Sentimen`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#sentiment-analysis-using-cognitive-services) - menerangkan bagaimana kita boleh mengintegrasikan perkhidmatan awan seperti Text Analytics, menggunakan alat kod rendah seperti [Power Automate](https://flow.microsoft.com/en-us/) untuk aliran kerja pemprosesan data automatik. + +Menggunakan aliran kerja ini, kita boleh meneroka kesan musim terhadap sentimen puisi, dan membantu kita membentuk perspektif kita sendiri tentang pengarangnya. Cuba sendiri - kemudian lanjutkan notebook untuk bertanya soalan lain atau memvisualisasikan data dengan cara baharu! + +> Anda boleh menggunakan beberapa alat dalam [Digital Humanities toolkit](https://github.com/Digital-Humanities-Toolkit) untuk meneruskan jalan penyelidikan ini. + +## Sains Data + Kelestarian + +| ![ Sketchnote oleh [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-Sustainability.png) | +| :---------------------------------------------------------------------------------------------------------------: | +| Sains Data & Kelestarian - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +[Agenda 2030 Untuk Pembangunan Lestari](https://sdgs.un.org/2030agenda) - yang diterima pakai oleh semua anggota Pertubuhan Bangsa-Bangsa Bersatu pada tahun 2015 - mengenal pasti 17 matlamat termasuk yang memberi tumpuan kepada **Melindungi Planet** daripada kemerosotan dan kesan perubahan iklim. Inisiatif [Microsoft Sustainability](https://www.microsoft.com/en-us/sustainability) menyokong matlamat ini dengan meneroka cara penyelesaian teknologi boleh menyokong dan membina masa depan yang lebih lestari dengan [fokus pada 4 matlamat](https://dev.to/azure/a-visual-guide-to-sustainable-software-engineering-53hh) - menjadi karbon negatif, air positif, sifar sisa, dan bio-diversiti menjelang 2030. + +Menangani cabaran ini secara berskala dan tepat pada masanya memerlukan pemikiran berskala awan - dan data berskala besar. Inisiatif [Planetary Computer](https://planetarycomputer.microsoft.com/) menyediakan 4 komponen untuk membantu saintis data dan pembangun dalam usaha ini: + + * [Katalog Data](https://planetarycomputer.microsoft.com/catalog) - dengan petabyte data Sistem Bumi (percuma & dihoskan Azure). + * [Planetary API](https://planetarycomputer.microsoft.com/docs/reference/stac/) - untuk membantu pengguna mencari data yang relevan merentasi ruang dan masa. + * [Hub](https://planetarycomputer.microsoft.com/docs/overview/environment/) - persekitaran terurus untuk saintis memproses set data geospatial yang besar. + * [Aplikasi](https://planetarycomputer.microsoft.com/applications) - mempamerkan kes penggunaan & alat untuk pandangan kelestarian. +**Projek Planetary Computer kini dalam pratonton (sehingga Sep 2021)** - berikut adalah cara anda boleh mula menyumbang kepada penyelesaian kelestarian menggunakan sains data. + +* [Mohon akses](https://planetarycomputer.microsoft.com/account/request) untuk memulakan penerokaan dan berhubung dengan rakan sebaya. +* [Terokai dokumentasi](https://planetarycomputer.microsoft.com/docs/overview/about) untuk memahami dataset dan API yang disokong. +* Terokai aplikasi seperti [Pemantauan Ekosistem](https://analytics-lab.org/ecosystemmonitoring/) untuk mendapatkan inspirasi idea aplikasi. + +Fikirkan bagaimana anda boleh menggunakan visualisasi data untuk mendedahkan atau memperkuatkan pandangan yang relevan dalam bidang seperti perubahan iklim dan penebangan hutan. Atau fikirkan bagaimana pandangan ini boleh digunakan untuk mencipta pengalaman pengguna baharu yang mendorong perubahan tingkah laku ke arah kehidupan yang lebih lestari. + +## Sains Data + Pelajar + +Kami telah membincangkan aplikasi dunia sebenar dalam industri dan penyelidikan, serta meneroka contoh aplikasi sains data dalam kemanusiaan digital dan kelestarian. Jadi, bagaimana anda boleh membina kemahiran anda dan berkongsi kepakaran anda sebagai pemula dalam sains data? + +Berikut adalah beberapa contoh projek pelajar sains data untuk memberi inspirasi kepada anda. + + * [Sekolah Musim Panas Sains Data MSR](https://www.microsoft.com/en-us/research/academic-program/data-science-summer-school/#!projects) dengan [projek GitHub](https://github.com/msr-ds3) yang meneroka topik seperti: + - [Bias Perkauman dalam Penggunaan Kekuatan oleh Polis](https://www.microsoft.com/en-us/research/video/data-science-summer-school-2019-replicating-an-empirical-analysis-of-racial-differences-in-police-use-of-force/) | [Github](https://github.com/msr-ds3/stop-question-frisk) + - [Kebolehpercayaan Sistem Subway NYC](https://www.microsoft.com/en-us/research/video/data-science-summer-school-2018-exploring-the-reliability-of-the-nyc-subway-system/) | [Github](https://github.com/msr-ds3/nyctransit) + * [Pendigitalan Budaya Material: Meneroka pengagihan sosio-ekonomi di Sirkap](https://claremont.maps.arcgis.com/apps/Cascade/index.html?appid=bdf2aef0f45a4674ba41cd373fa23afc) - daripada [Ornella Altunyan](https://twitter.com/ornelladotcom) dan pasukan di Claremont, menggunakan [ArcGIS StoryMaps](https://storymaps.arcgis.com/). + +## 🚀 Cabaran + +Cari artikel yang mencadangkan projek sains data yang mesra pemula - seperti [50 bidang topik ini](https://www.upgrad.com/blog/data-science-project-ideas-topics-beginners/) atau [21 idea projek ini](https://www.intellspot.com/data-science-project-ideas) atau [16 projek ini dengan kod sumber](https://data-flair.training/blogs/data-science-project-ideas/) yang boleh anda analisis dan ubah suai. Dan jangan lupa untuk menulis blog tentang perjalanan pembelajaran anda dan berkongsi pandangan anda dengan kami semua. + +## Kuiz Selepas Kuliah + +[Kuiz selepas kuliah](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/39) + +## Ulasan & Kajian Kendiri + +Ingin meneroka lebih banyak kes penggunaan? Berikut adalah beberapa artikel yang relevan: + * [17 Aplikasi dan Contoh Sains Data](https://builtin.com/data-science/data-science-applications-examples) - Jul 2021 + * [11 Aplikasi Sains Data yang Mengagumkan di Dunia Sebenar](https://myblindbird.com/data-science-applications-real-world/) - Mei 2021 + * [Sains Data Dalam Dunia Sebenar](https://towardsdatascience.com/data-science-in-the-real-world/home) - Koleksi Artikel + * Sains Data Dalam: [Pendidikan](https://data-flair.training/blogs/data-science-in-education/), [Pertanian](https://data-flair.training/blogs/data-science-in-agriculture/), [Kewangan](https://data-flair.training/blogs/data-science-in-finance/), [Filem](https://data-flair.training/blogs/data-science-at-movies/) & banyak lagi. + +## Tugasan + +[Terokai Dataset Planetary Computer](assignment.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/6-Data-Science-In-Wild/20-Real-World-Examples/assignment.md b/translations/ms/6-Data-Science-In-Wild/20-Real-World-Examples/assignment.md new file mode 100644 index 00000000..9b026838 --- /dev/null +++ b/translations/ms/6-Data-Science-In-Wild/20-Real-World-Examples/assignment.md @@ -0,0 +1,50 @@ + +# Terokai Dataset Planetary Computer + +## Arahan + +Dalam pelajaran ini, kita telah membincangkan pelbagai domain aplikasi sains data - dengan penekanan mendalam pada contoh-contoh berkaitan penyelidikan, kelestarian, dan kemanusiaan digital. Dalam tugasan ini, anda akan meneroka salah satu contoh ini dengan lebih terperinci, dan menggunakan pembelajaran anda tentang visualisasi data dan analisis untuk mendapatkan wawasan tentang data kelestarian. + +Projek [Planetary Computer](https://planetarycomputer.microsoft.com/) mempunyai dataset dan API yang boleh diakses dengan akaun - mohon satu akaun jika anda ingin mencuba langkah bonus dalam tugasan ini. Laman web ini juga menyediakan ciri [Explorer](https://planetarycomputer.microsoft.com/explore) yang boleh digunakan tanpa perlu membuat akaun. + +`Langkah-langkah:` +Antara muka Explorer (seperti yang ditunjukkan dalam tangkapan skrin di bawah) membolehkan anda memilih dataset (daripada pilihan yang disediakan), pertanyaan pratetap (untuk menapis data), dan pilihan rendering (untuk mencipta visualisasi yang relevan). Dalam tugasan ini, tugas anda adalah: + + 1. Baca [dokumentasi Explorer](https://planetarycomputer.microsoft.com/docs/overview/explorer/) - fahami opsyen yang ada. + 2. Terokai [Katalog dataset](https://planetarycomputer.microsoft.com/catalog) - pelajari tujuan setiap dataset. + 3. Gunakan Explorer - pilih dataset yang menarik, pilih pertanyaan dan pilihan rendering yang relevan. + +![The Planetary Computer Explorer](../../../../translated_images/planetary-computer-explorer.c1e95a9b053167d64e2e8e4347cfb689e47e2037c33103fc1bbea1a149d4f85b.ms.png) + +`Tugas Anda:` +Sekarang kaji visualisasi yang dipaparkan dalam pelayar dan jawab soalan berikut: + * Apakah _ciri-ciri_ yang terdapat dalam dataset tersebut? + * Apakah _wawasan_ atau hasil yang diberikan oleh visualisasi tersebut? + * Apakah _implikasi_ daripada wawasan tersebut terhadap matlamat kelestarian projek? + * Apakah _keterbatasan_ visualisasi tersebut (iaitu, apakah wawasan yang tidak anda peroleh)? + * Jika anda boleh mendapatkan data mentah, apakah _visualisasi alternatif_ yang akan anda cipta, dan mengapa? + +`Mata Bonus:` +Mohon akaun - dan log masuk apabila diterima. + * Gunakan opsyen _Launch Hub_ untuk membuka data mentah dalam Notebook. + * Terokai data secara interaktif, dan laksanakan visualisasi alternatif yang anda fikirkan. + * Sekarang analisis visualisasi tersuai anda - adakah anda dapat memperoleh wawasan yang anda terlepas sebelum ini? + +## Rubrik + +Cemerlang | Memadai | Perlu Penambahbaikan +--- | --- | -- | +Kelima-lima soalan utama dijawab. Pelajar dengan jelas mengenal pasti bagaimana visualisasi semasa dan alternatif boleh memberikan wawasan terhadap objektif atau hasil kelestarian.| Pelajar menjawab sekurang-kurangnya 3 soalan utama dengan terperinci, menunjukkan pengalaman praktikal dengan Explorer. | Pelajar gagal menjawab beberapa soalan, atau memberikan perincian yang tidak mencukupi - menunjukkan tiada usaha bermakna dilakukan untuk projek ini | + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/6-Data-Science-In-Wild/README.md b/translations/ms/6-Data-Science-In-Wild/README.md new file mode 100644 index 00000000..5988cab7 --- /dev/null +++ b/translations/ms/6-Data-Science-In-Wild/README.md @@ -0,0 +1,25 @@ + +# Sains Data di Dunia Nyata + +Aplikasi sebenar sains data merentasi pelbagai industri. + +### Topik + +1. [Sains Data di Dunia Nyata](20-Real-World-Examples/README.md) + +### Kredit + +Ditulis dengan ❤️ oleh [Nitya Narasimhan](https://twitter.com/nitya) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/CODE_OF_CONDUCT.md b/translations/ms/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..c73f076c --- /dev/null +++ b/translations/ms/CODE_OF_CONDUCT.md @@ -0,0 +1,23 @@ + +# Kod Etika Sumber Terbuka Microsoft + +Projek ini telah mengguna pakai [Kod Etika Sumber Terbuka Microsoft](https://opensource.microsoft.com/codeofconduct/). + +Sumber: + +- [Kod Etika Sumber Terbuka Microsoft](https://opensource.microsoft.com/codeofconduct/) +- [Soalan Lazim Kod Etika Microsoft](https://opensource.microsoft.com/codeofconduct/faq/) +- Hubungi [opencode@microsoft.com](mailto:opencode@microsoft.com) untuk sebarang pertanyaan atau kebimbangan + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/CONTRIBUTING.md b/translations/ms/CONTRIBUTING.md new file mode 100644 index 00000000..2c29fc9c --- /dev/null +++ b/translations/ms/CONTRIBUTING.md @@ -0,0 +1,28 @@ + +# Menyumbang + +Projek ini mengalu-alukan sumbangan dan cadangan. Kebanyakan sumbangan memerlukan anda +bersetuju dengan Perjanjian Lesen Penyumbang (CLA) yang menyatakan bahawa anda mempunyai hak untuk, +dan benar-benar memberikan kami hak untuk menggunakan sumbangan anda. Untuk maklumat lanjut, sila lawati +https://cla.microsoft.com. + +Apabila anda menghantar permintaan tarik (pull request), bot CLA akan secara automatik menentukan sama ada anda perlu +menyediakan CLA dan menghias PR dengan sewajarnya (contohnya, label, komen). Ikuti sahaja +arahan yang diberikan oleh bot. Anda hanya perlu melakukan ini sekali untuk semua repositori yang menggunakan CLA kami. + +Projek ini telah mengguna pakai [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). +Untuk maklumat lanjut, lihat [Soalan Lazim Kod Tingkah Laku](https://opensource.microsoft.com/codeofconduct/faq/) +atau hubungi [opencode@microsoft.com](mailto:opencode@microsoft.com) untuk sebarang soalan atau komen tambahan. + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/README.md b/translations/ms/README.md new file mode 100644 index 00000000..0eef9856 --- /dev/null +++ b/translations/ms/README.md @@ -0,0 +1,157 @@ + +# Sains Data untuk Pemula - Kurikulum + +Azure Cloud Advocates di Microsoft dengan bangga menawarkan kurikulum 10 minggu, 20 pelajaran yang berkaitan dengan Sains Data. Setiap pelajaran termasuk kuiz sebelum dan selepas pelajaran, arahan bertulis untuk menyelesaikan pelajaran, penyelesaian, dan tugasan. Pedagogi berasaskan projek kami membolehkan anda belajar sambil membina, cara yang terbukti untuk kemahiran baru 'melekat'. + +**Terima kasih yang tulus kepada penulis kami:** [Jasmine Greenaway](https://www.twitter.com/paladique), [Dmitry Soshnikov](http://soshnikov.com), [Nitya Narasimhan](https://twitter.com/nitya), [Jalen McGee](https://twitter.com/JalenMcG), [Jen Looper](https://twitter.com/jenlooper), [Maud Levy](https://twitter.com/maudstweets), [Tiffany Souterre](https://twitter.com/TiffanySouterre), [Christopher Harrison](https://www.twitter.com/geektrainer). + +**🙏 Terima kasih khas 🙏 kepada [Microsoft Student Ambassador](https://studentambassadors.microsoft.com/) penulis, pengulas dan penyumbang kandungan kami,** terutamanya Aaryan Arora, [Aditya Garg](https://github.com/AdityaGarg00), [Alondra Sanchez](https://www.linkedin.com/in/alondra-sanchez-molina/), [Ankita Singh](https://www.linkedin.com/in/ankitasingh007), [Anupam Mishra](https://www.linkedin.com/in/anupam--mishra/), [Arpita Das](https://www.linkedin.com/in/arpitadas01/), ChhailBihari Dubey, [Dibri Nsofor](https://www.linkedin.com/in/dibrinsofor), [Dishita Bhasin](https://www.linkedin.com/in/dishita-bhasin-7065281bb), [Majd Safi](https://www.linkedin.com/in/majd-s/), [Max Blum](https://www.linkedin.com/in/max-blum-6036a1186/), [Miguel Correa](https://www.linkedin.com/in/miguelmque/), [Mohamma Iftekher (Iftu) Ebne Jalal](https://twitter.com/iftu119), [Nawrin Tabassum](https://www.linkedin.com/in/nawrin-tabassum), [Raymond Wangsa Putra](https://www.linkedin.com/in/raymond-wp/), [Rohit Yadav](https://www.linkedin.com/in/rty2423), Samridhi Sharma, [Sanya Sinha](https://www.linkedin.com/mwlite/in/sanya-sinha-13aab1200), +[Sheena Narula](https://www.linkedin.com/in/sheena-narua-n/), [Tauqeer Ahmad](https://www.linkedin.com/in/tauqeerahmad5201/), Yogendrasingh Pawar , [Vidushi Gupta](https://www.linkedin.com/in/vidushi-gupta07/), [Jasleen Sondhi](https://www.linkedin.com/in/jasleen-sondhi/) + +|![Sketchnote oleh @sketchthedocs https://sketchthedocs.dev](../../translated_images/00-Title.8af36cd35da1ac555b678627fbdc6e320c75f0100876ea41d30ea205d3b08d22.ms.png)| +|:---:| +| Sains Data untuk Pemula - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + +### 🌐 Sokongan Pelbagai Bahasa + +#### Disokong melalui GitHub Action (Automatik & Sentiasa Terkini) + +[French](../fr/README.md) | [Spanish](../es/README.md) | [German](../de/README.md) | [Russian](../ru/README.md) | [Arabic](../ar/README.md) | [Persian (Farsi)](../fa/README.md) | [Urdu](../ur/README.md) | [Chinese (Simplified)](../zh/README.md) | [Chinese (Traditional, Macau)](../mo/README.md) | [Chinese (Traditional, Hong Kong)](../hk/README.md) | [Chinese (Traditional, Taiwan)](../tw/README.md) | [Japanese](../ja/README.md) | [Korean](../ko/README.md) | [Hindi](../hi/README.md) | [Bengali](../bn/README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Portuguese (Portugal)](../pt/README.md) | [Portuguese (Brazil)](../br/README.md) | [Italian](../it/README.md) | [Polish](../pl/README.md) | [Turkish](../tr/README.md) | [Greek](../el/README.md) | [Thai](../th/README.md) | [Swedish](../sv/README.md) | [Danish](../da/README.md) | [Norwegian](../no/README.md) | [Finnish](../fi/README.md) | [Dutch](../nl/README.md) | [Hebrew](../he/README.md) | [Vietnamese](../vi/README.md) | [Indonesian](../id/README.md) | [Malay](./README.md) | [Tagalog (Filipino)](../tl/README.md) | [Swahili](../sw/README.md) | [Hungarian](../hu/README.md) | [Czech](../cs/README.md) | [Slovak](../sk/README.md) | [Romanian](../ro/README.md) | [Bulgarian](../bg/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Croatian](../hr/README.md) | [Slovenian](../sl/README.md) | [Ukrainian](../uk/README.md) | [Burmese (Myanmar)](../my/README.md) + +**Jika anda ingin menambah sokongan bahasa tambahan, senarai bahasa yang disokong tersedia [di sini](https://github.com/Azure/co-op-translator/blob/main/getting_started/supported-languages.md)** + +#### Sertai Komuniti Kami +[![Azure AI Discord](https://dcbadge.limes.pink/api/server/kzRShWzttr)](https://discord.gg/kzRShWzttr) + +# Adakah anda seorang pelajar? + +Mulakan dengan sumber berikut: + +- [Halaman Student Hub](https://docs.microsoft.com/en-gb/learn/student-hub?WT.mc_id=academic-77958-bethanycheum) Di halaman ini, anda akan menemui sumber untuk pemula, pakej pelajar dan juga cara untuk mendapatkan baucar sijil percuma. Ini adalah satu halaman yang anda ingin tandai dan periksa dari semasa ke semasa kerana kami menukar kandungan sekurang-kurangnya setiap bulan. +- [Microsoft Learn Student Ambassadors](https://studentambassadors.microsoft.com?WT.mc_id=academic-77958-bethanycheum) Sertai komuniti global duta pelajar, ini boleh menjadi jalan anda ke Microsoft. + +# Memulakan + +> **Guru**: kami telah [menyertakan beberapa cadangan](for-teachers.md) tentang cara menggunakan kurikulum ini. Kami sangat menghargai maklum balas anda [di forum perbincangan kami](https://github.com/microsoft/Data-Science-For-Beginners/discussions)! + +> **[Pelajar](https://aka.ms/student-page)**: untuk menggunakan kurikulum ini secara individu, fork keseluruhan repo dan selesaikan latihan secara sendiri, bermula dengan kuiz sebelum kuliah. Kemudian baca kuliah dan selesaikan aktiviti yang lain. Cuba buat projek dengan memahami pelajaran daripada menyalin kod penyelesaian; walau bagaimanapun, kod tersebut tersedia dalam folder /solutions dalam setiap pelajaran berorientasikan projek. Idea lain adalah membentuk kumpulan belajar dengan rakan-rakan dan melalui kandungan bersama-sama. Untuk kajian lanjut, kami mengesyorkan [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/qprpajyoy3x0g7?WT.mc_id=academic-77958-bethanycheum). + +## Kenali Pasukan + +[![Video promo](../../ds-for-beginners.gif)](https://youtu.be/8mzavjQSMM4 "Video promo") + +**Gif oleh** [Mohit Jaisal](https://www.linkedin.com/in/mohitjaisal) + +> 🎥 Klik imej di atas untuk video tentang projek dan orang yang menciptanya! + +## Pedagogi + +Kami telah memilih dua prinsip pedagogi semasa membina kurikulum ini: memastikan ia berasaskan projek dan termasuk kuiz yang kerap. Menjelang akhir siri ini, pelajar akan mempelajari prinsip asas sains data, termasuk konsep etika, penyediaan data, pelbagai cara bekerja dengan data, visualisasi data, analisis data, kes penggunaan dunia sebenar sains data, dan banyak lagi. + +Selain itu, kuiz berisiko rendah sebelum kelas menetapkan niat pelajar untuk mempelajari topik, manakala kuiz kedua selepas kelas memastikan pengekalan yang lebih lanjut. Kurikulum ini direka untuk fleksibel dan menyeronokkan dan boleh diambil secara keseluruhan atau sebahagian. Projek bermula kecil dan menjadi semakin kompleks menjelang akhir kitaran 10 minggu. +> Cari [Kod Etika](CODE_OF_CONDUCT.md), [Panduan Menyumbang](CONTRIBUTING.md), [Panduan Terjemahan](TRANSLATIONS.md). Kami mengalu-alukan maklum balas membina daripada anda! +## Setiap pelajaran merangkumi: + +- Sketchnote pilihan +- Video tambahan pilihan +- Kuiz pemanasan sebelum pelajaran +- Pelajaran bertulis +- Untuk pelajaran berasaskan projek, panduan langkah demi langkah tentang cara membina projek +- Pemeriksaan pengetahuan +- Cabaran +- Bacaan tambahan +- Tugasan +- [Kuiz selepas pelajaran](https://ff-quizzes.netlify.app/en/) + +> **Nota tentang kuiz**: Semua kuiz terdapat dalam folder Quiz-App, dengan jumlah keseluruhan 40 kuiz yang masing-masing mempunyai tiga soalan. Kuiz ini dihubungkan dari dalam pelajaran, tetapi aplikasi kuiz boleh dijalankan secara tempatan atau dideploy ke Azure; ikuti arahan dalam folder `quiz-app`. Kuiz ini sedang dilokalkan secara beransur-ansur. + +## Pelajaran + + +|![ Sketchnote oleh @sketchthedocs https://sketchthedocs.dev](../../translated_images/00-Roadmap.4905d6567dff47532b9bfb8e0b8980fc6b0b1292eebb24181c1a9753b33bc0f5.ms.png)| +|:---:| +| Data Science Untuk Pemula: Peta Jalan - _Sketchnote oleh [@nitya](https://twitter.com/nitya)_ | + + +| Nombor Pelajaran | Topik | Pengelompokan Pelajaran | Objektif Pembelajaran | Pelajaran Terhubung | Penulis | +| :-----------: | :----------------------------------------: | :--------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------: | :----: | +| 01 | Mendefinisikan Sains Data | [Pengenalan](1-Introduction/README.md) | Belajar konsep asas di sebalik sains data dan bagaimana ia berkaitan dengan kecerdasan buatan, pembelajaran mesin, dan data besar. | [pelajaran](1-Introduction/01-defining-data-science/README.md) [video](https://youtu.be/beZ7Mb_oz9I) | [Dmitry](http://soshnikov.com) | +| 02 | Etika Sains Data | [Pengenalan](1-Introduction/README.md) | Konsep Etika Data, Cabaran & Kerangka Kerja. | [pelajaran](1-Introduction/02-ethics/README.md) | [Nitya](https://twitter.com/nitya) | +| 03 | Mendefinisikan Data | [Pengenalan](1-Introduction/README.md) | Bagaimana data diklasifikasikan dan sumber-sumber umumnya. | [pelajaran](1-Introduction/03-defining-data/README.md) | [Jasmine](https://www.twitter.com/paladique) | +| 04 | Pengenalan kepada Statistik & Kebarangkalian | [Pengenalan](1-Introduction/README.md) | Teknik matematik kebarangkalian dan statistik untuk memahami data. | [pelajaran](1-Introduction/04-stats-and-probability/README.md) [video](https://youtu.be/Z5Zy85g4Yjw) | [Dmitry](http://soshnikov.com) | +| 05 | Bekerja dengan Data Relasi | [Bekerja Dengan Data](2-Working-With-Data/README.md) | Pengenalan kepada data relasi dan asas penerokaan serta analisis data relasi dengan Structured Query Language, juga dikenali sebagai SQL (disebut “see-quell”). | [pelajaran](2-Working-With-Data/05-relational-databases/README.md) | [Christopher](https://www.twitter.com/geektrainer) | | | +| 06 | Bekerja dengan Data NoSQL | [Bekerja Dengan Data](2-Working-With-Data/README.md) | Pengenalan kepada data bukan relasi, pelbagai jenisnya, dan asas penerokaan serta analisis pangkalan data dokumen. | [pelajaran](2-Working-With-Data/06-non-relational/README.md) | [Jasmine](https://twitter.com/paladique)| +| 07 | Bekerja dengan Python | [Bekerja Dengan Data](2-Working-With-Data/README.md) | Asas menggunakan Python untuk penerokaan data dengan pustaka seperti Pandas. Pemahaman asas tentang pengaturcaraan Python disarankan. | [pelajaran](2-Working-With-Data/07-python/README.md) [video](https://youtu.be/dZjWOGbsN4Y) | [Dmitry](http://soshnikov.com) | +| 08 | Penyediaan Data | [Bekerja Dengan Data](2-Working-With-Data/README.md) | Topik tentang teknik data untuk membersihkan dan mengubah data bagi menangani cabaran data yang hilang, tidak tepat, atau tidak lengkap. | [pelajaran](2-Working-With-Data/08-data-preparation/README.md) | [Jasmine](https://www.twitter.com/paladique) | +| 09 | Memvisualisasikan Kuantiti | [Visualisasi Data](3-Data-Visualization/README.md) | Belajar cara menggunakan Matplotlib untuk memvisualisasikan data burung 🦆 | [pelajaran](3-Data-Visualization/09-visualization-quantities/README.md) | [Jen](https://twitter.com/jenlooper) | +| 10 | Memvisualisasikan Taburan Data | [Visualisasi Data](3-Data-Visualization/README.md) | Memvisualisasikan pemerhatian dan tren dalam satu interval. | [pelajaran](3-Data-Visualization/10-visualization-distributions/README.md) | [Jen](https://twitter.com/jenlooper) | +| 11 | Memvisualisasikan Perkadaran | [Visualisasi Data](3-Data-Visualization/README.md) | Memvisualisasikan peratusan diskret dan berkumpulan. | [pelajaran](3-Data-Visualization/11-visualization-proportions/README.md) | [Jen](https://twitter.com/jenlooper) | +| 12 | Memvisualisasikan Hubungan | [Visualisasi Data](3-Data-Visualization/README.md) | Memvisualisasikan hubungan dan korelasi antara set data dan pemboleh ubahnya. | [pelajaran](3-Data-Visualization/12-visualization-relationships/README.md) | [Jen](https://twitter.com/jenlooper) | +| 13 | Visualisasi Bermakna | [Visualisasi Data](3-Data-Visualization/README.md) | Teknik dan panduan untuk menjadikan visualisasi anda bernilai bagi penyelesaian masalah dan wawasan yang efektif. | [pelajaran](3-Data-Visualization/13-meaningful-visualizations/README.md) | [Jen](https://twitter.com/jenlooper) | +| 14 | Pengenalan kepada Kitaran Hayat Sains Data | [Kitaran Hayat](4-Data-Science-Lifecycle/README.md) | Pengenalan kepada kitaran hayat sains data dan langkah pertama untuk memperoleh serta mengekstrak data. | [pelajaran](4-Data-Science-Lifecycle/14-Introduction/README.md) | [Jasmine](https://twitter.com/paladique) | +| 15 | Menganalisis | [Kitaran Hayat](4-Data-Science-Lifecycle/README.md) | Fasa ini dalam kitaran hayat sains data memberi tumpuan kepada teknik untuk menganalisis data. | [pelajaran](4-Data-Science-Lifecycle/15-analyzing/README.md) | [Jasmine](https://twitter.com/paladique) | | | +| 16 | Komunikasi | [Kitaran Hayat](4-Data-Science-Lifecycle/README.md) | Fasa ini dalam kitaran hayat sains data memberi tumpuan kepada menyampaikan wawasan daripada data dengan cara yang memudahkan pembuat keputusan untuk memahami. | [pelajaran](4-Data-Science-Lifecycle/16-communication/README.md) | [Jalen](https://twitter.com/JalenMcG) | | | +| 17 | Sains Data di Awan | [Data Awan](5-Data-Science-In-Cloud/README.md) | Siri pelajaran ini memperkenalkan sains data di awan dan manfaatnya. | [pelajaran](5-Data-Science-In-Cloud/17-Introduction/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) dan [Maud](https://twitter.com/maudstweets) | +| 18 | Sains Data di Awan | [Data Awan](5-Data-Science-In-Cloud/README.md) | Melatih model menggunakan alat Low Code. |[pelajaran](5-Data-Science-In-Cloud/18-Low-Code/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) dan [Maud](https://twitter.com/maudstweets) | +| 19 | Sains Data di Awan | [Data Awan](5-Data-Science-In-Cloud/README.md) | Mendeply model dengan Azure Machine Learning Studio. | [pelajaran](5-Data-Science-In-Cloud/19-Azure/README.md)| [Tiffany](https://twitter.com/TiffanySouterre) dan [Maud](https://twitter.com/maudstweets) | +| 20 | Sains Data di Dunia Nyata | [Di Dunia Nyata](6-Data-Science-In-Wild/README.md) | Projek yang didorong oleh sains data dalam dunia nyata. | [pelajaran](6-Data-Science-In-Wild/20-Real-World-Examples/README.md) | [Nitya](https://twitter.com/nitya) | + +## GitHub Codespaces + +Ikuti langkah-langkah ini untuk membuka sampel ini dalam Codespace: +1. Klik menu drop-down Code dan pilih pilihan Open with Codespaces. +2. Pilih + New codespace di bahagian bawah panel. +Untuk maklumat lanjut, lihat [dokumentasi GitHub](https://docs.github.com/en/codespaces/developing-in-codespaces/creating-a-codespace-for-a-repository#creating-a-codespace). + +## VSCode Remote - Containers +Ikuti langkah-langkah ini untuk membuka repo ini dalam container menggunakan mesin tempatan anda dan VSCode dengan sambungan VS Code Remote - Containers: + +1. Jika ini kali pertama anda menggunakan container pembangunan, pastikan sistem anda memenuhi prasyarat (contohnya, mempunyai Docker dipasang) dalam [dokumentasi memulakan](https://code.visualstudio.com/docs/devcontainers/containers#_getting-started). + +Untuk menggunakan repositori ini, anda boleh membukanya dalam volume Docker yang terasing: + +**Nota**: Di belakang tabir, ini akan menggunakan Remote-Containers: **Clone Repository in Container Volume...** arahan untuk mengklon kod sumber dalam volume Docker dan bukannya sistem fail tempatan. [Volumes](https://docs.docker.com/storage/volumes/) adalah mekanisme yang disukai untuk mengekalkan data container. + +Atau buka versi repositori yang telah diklon atau dimuat turun secara tempatan: + +- Klon repositori ini ke sistem fail tempatan anda. +- Tekan F1 dan pilih arahan **Remote-Containers: Open Folder in Container...**. +- Pilih salinan folder yang telah diklon, tunggu container untuk dimulakan, dan cuba perkara-perkara di dalamnya. + +## Akses Luar Talian + +Anda boleh menjalankan dokumentasi ini secara luar talian dengan menggunakan [Docsify](https://docsify.js.org/#/). Fork repo ini, [pasang Docsify](https://docsify.js.org/#/quickstart) pada mesin tempatan anda, kemudian di folder root repo ini, taip `docsify serve`. Laman web akan disediakan pada port 3000 di localhost anda: `localhost:3000`. + +> Nota, notebook tidak akan dirender melalui Docsify, jadi apabila anda perlu menjalankan notebook, lakukan itu secara berasingan dalam VS Code yang menjalankan kernel Python. + +## Kurikulum Lain + +Pasukan kami menghasilkan kurikulum lain! Lihat: + +- [Generative AI untuk Pemula](https://aka.ms/genai-beginners) +- [Generative AI untuk Pemula .NET](https://github.com/microsoft/Generative-AI-for-beginners-dotnet) +- [Generative AI dengan JavaScript](https://github.com/microsoft/generative-ai-with-javascript) +- [Generative AI dengan Java](https://aka.ms/genaijava) +- [AI untuk Pemula](https://aka.ms/ai-beginners) +- [Sains Data untuk Pemula](https://aka.ms/datascience-beginners) +- [ML untuk Pemula](https://aka.ms/ml-beginners) +- [Keselamatan Siber untuk Pemula](https://github.com/microsoft/Security-101) +- [Pembangunan Web untuk Pemula](https://aka.ms/webdev-beginners) +- [IoT untuk Pemula](https://aka.ms/iot-beginners) +- [Pembangunan XR untuk Pemula](https://github.com/microsoft/xr-development-for-beginners) +- [Menguasai GitHub Copilot untuk Pengaturcaraan Berpasangan](https://github.com/microsoft/Mastering-GitHub-Copilot-for-Paired-Programming) +- [Menguasai GitHub Copilot untuk Pembangun C#/.NET](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers) +- [Pilih Pengembaraan Copilot Anda Sendiri](https://github.com/microsoft/CopilotAdventures) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/SECURITY.md b/translations/ms/SECURITY.md new file mode 100644 index 00000000..3c4c2fb9 --- /dev/null +++ b/translations/ms/SECURITY.md @@ -0,0 +1,51 @@ + +## Keselamatan + +Microsoft mengambil serius keselamatan produk dan perkhidmatan perisian kami, termasuk semua repositori kod sumber yang diuruskan melalui organisasi GitHub kami, yang merangkumi [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), dan [organisasi GitHub kami](https://opensource.microsoft.com/). + +Jika anda percaya bahawa anda telah menemui kerentanan keselamatan dalam mana-mana repositori milik Microsoft yang memenuhi [definisi kerentanan keselamatan Microsoft](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc751383(v=technet.10)), sila laporkan kepada kami seperti yang diterangkan di bawah. + +## Melaporkan Isu Keselamatan + +**Sila jangan laporkan kerentanan keselamatan melalui isu GitHub awam.** + +Sebaliknya, sila laporkan kepada Microsoft Security Response Center (MSRC) di [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report). + +Jika anda lebih suka menghantar tanpa log masuk, hantarkan emel ke [secure@microsoft.com](mailto:secure@microsoft.com). Jika boleh, enkripsikan mesej anda dengan kunci PGP kami; sila muat turun dari [halaman Kunci PGP Microsoft Security Response Center](https://www.microsoft.com/en-us/msrc/pgp-key-msrc). + +Anda sepatutnya menerima maklum balas dalam masa 24 jam. Jika atas sebab tertentu anda tidak menerimanya, sila susuli melalui emel untuk memastikan kami menerima mesej asal anda. Maklumat tambahan boleh didapati di [microsoft.com/msrc](https://www.microsoft.com/msrc). + +Sila sertakan maklumat yang diminta seperti di bawah (sebanyak yang anda boleh sediakan) untuk membantu kami memahami dengan lebih baik sifat dan skop isu yang mungkin berlaku: + + * Jenis isu (contoh: buffer overflow, suntikan SQL, cross-site scripting, dll.) + * Laluan penuh fail sumber yang berkaitan dengan manifestasi isu + * Lokasi kod sumber yang terjejas (tag/cabang/komit atau URL langsung) + * Sebarang konfigurasi khas yang diperlukan untuk menghasilkan semula isu + * Arahan langkah demi langkah untuk menghasilkan semula isu + * Kod bukti konsep atau eksploitasi (jika boleh) + * Kesan isu, termasuk bagaimana penyerang mungkin mengeksploitasi isu tersebut + +Maklumat ini akan membantu kami memproses laporan anda dengan lebih cepat. + +Jika anda melaporkan untuk program ganjaran bug, laporan yang lebih lengkap boleh menyumbang kepada ganjaran yang lebih tinggi. Sila lawati halaman [Program Ganjaran Bug Microsoft](https://microsoft.com/msrc/bounty) kami untuk maklumat lanjut mengenai program aktif kami. + +## Bahasa Pilihan + +Kami lebih suka semua komunikasi dilakukan dalam Bahasa Inggeris. + +## Polisi + +Microsoft mengikuti prinsip [Pendedahan Kerentanan yang Diselaraskan](https://www.microsoft.com/en-us/msrc/cvd). + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/SUPPORT.md b/translations/ms/SUPPORT.md new file mode 100644 index 00000000..8ea03696 --- /dev/null +++ b/translations/ms/SUPPORT.md @@ -0,0 +1,24 @@ + +# Sokongan +## Cara melaporkan isu dan mendapatkan bantuan + +Projek ini menggunakan GitHub Issues untuk menjejaki pepijat dan permintaan ciri. Sila cari isu yang sedia ada sebelum melaporkan isu baru untuk mengelakkan pendua. Untuk isu baru, laporkan pepijat atau permintaan ciri anda sebagai Isu baru. + +Untuk bantuan dan soalan mengenai penggunaan projek ini, laporkan isu. + +## Polisi Sokongan Microsoft + +Sokongan untuk repositori ini adalah terhad kepada sumber yang disenaraikan di atas. + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/docs/_sidebar.md b/translations/ms/docs/_sidebar.md new file mode 100644 index 00000000..3a2149a8 --- /dev/null +++ b/translations/ms/docs/_sidebar.md @@ -0,0 +1,40 @@ + +- Pengenalan + - [Mendefinisikan Sains Data](../1-Introduction/01-defining-data-science/README.md) + - [Etika Sains Data](../1-Introduction/02-ethics/README.md) + - [Mendefinisikan Data](../1-Introduction/03-defining-data/README.md) + - [Kebarangkalian dan Statistik](../1-Introduction/04-stats-and-probability/README.md) +- Bekerja Dengan Data + - [Pangkalan Data Relasi](../2-Working-With-Data/05-relational-databases/README.md) + - [Pangkalan Data Bukan Relasi](../2-Working-With-Data/06-non-relational/README.md) + - [Python](../2-Working-With-Data/07-python/README.md) + - [Penyediaan Data](../2-Working-With-Data/08-data-preparation/README.md) +- Visualisasi Data + - [Memvisualkan Kuantiti](../3-Data-Visualization/09-visualization-quantities/README.md) + - [Memvisualkan Taburan](../3-Data-Visualization/10-visualization-distributions/README.md) + - [Memvisualkan Perkadaran](../3-Data-Visualization/11-visualization-proportions/README.md) + - [Memvisualkan Hubungan](../3-Data-Visualization/12-visualization-relationships/README.md) + - [Visualisasi Bermakna](../3-Data-Visualization/13-meaningful-visualizations/README.md) +- Kitaran Hayat Sains Data + - [Pengenalan](../4-Data-Science-Lifecycle/14-Introduction/README.md) + - [Menganalisis](../4-Data-Science-Lifecycle/15-analyzing/README.md) + - [Komunikasi](../4-Data-Science-Lifecycle/16-communication/README.md) +- Sains Data di Awan + - [Pengenalan](../5-Data-Science-In-Cloud/17-Introduction/README.md) + - [Kod Rendah](../5-Data-Science-In-Cloud/18-Low-Code/README.md) + - [Azure](../5-Data-Science-In-Cloud/19-Azure/README.md) +- Sains Data di Alam Liar + - [Sains Data di Alam Liar](../6-Data-Science-In-Wild/README.md) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/for-teachers.md b/translations/ms/for-teachers.md new file mode 100644 index 00000000..613e655d --- /dev/null +++ b/translations/ms/for-teachers.md @@ -0,0 +1,78 @@ + +## Untuk Pendidik + +Adakah anda ingin menggunakan kurikulum ini di dalam kelas anda? Jangan ragu untuk mencubanya! + +Malah, anda boleh menggunakannya terus di GitHub dengan menggunakan GitHub Classroom. + +Untuk melakukannya, fork repo ini. Anda perlu mencipta repo untuk setiap pelajaran, jadi anda perlu mengekstrak setiap folder ke dalam repo yang berasingan. Dengan cara ini, [GitHub Classroom](https://classroom.github.com/classrooms) boleh mengambil setiap pelajaran secara berasingan. + +Arahan lengkap ini [di sini](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) akan memberikan anda idea bagaimana untuk menyediakan kelas anda. + +## Menggunakan repo seperti sedia ada + +Jika anda ingin menggunakan repo ini seperti yang ada sekarang, tanpa menggunakan GitHub Classroom, itu juga boleh dilakukan. Anda hanya perlu berkomunikasi dengan pelajar anda tentang pelajaran mana yang perlu dilalui bersama. + +Dalam format dalam talian (Zoom, Teams, atau lain-lain), anda boleh membentuk bilik pecahan untuk kuiz, dan membimbing pelajar untuk membantu mereka bersedia untuk belajar. Kemudian jemput pelajar untuk kuiz dan serahkan jawapan mereka sebagai 'issues' pada masa tertentu. Anda juga boleh melakukan perkara yang sama dengan tugasan, jika anda mahu pelajar bekerja secara kolaboratif secara terbuka. + +Jika anda lebih suka format yang lebih peribadi, minta pelajar anda untuk fork kurikulum ini, pelajaran demi pelajaran, ke repo GitHub mereka sendiri sebagai repo peribadi, dan berikan anda akses. Kemudian mereka boleh melengkapkan kuiz dan tugasan secara peribadi dan menyerahkannya kepada anda melalui 'issues' pada repo kelas anda. + +Terdapat banyak cara untuk menjadikan ini berfungsi dalam format kelas dalam talian. Beritahu kami apa yang paling sesuai untuk anda! + +## Termasuk dalam kurikulum ini: + +20 pelajaran, 40 kuiz, dan 20 tugasan. Sketchnotes disertakan bersama pelajaran untuk pelajar visual. Banyak pelajaran tersedia dalam Python dan R dan boleh diselesaikan menggunakan Jupyter notebooks dalam VS Code. Ketahui lebih lanjut tentang cara menyediakan kelas anda untuk menggunakan teknologi ini: https://code.visualstudio.com/docs/datascience/jupyter-notebooks. + +Semua sketchnotes, termasuk poster bersaiz besar, terdapat dalam [folder ini](../../sketchnotes). + +Keseluruhan kurikulum tersedia [dalam bentuk PDF](../../pdf/readme.pdf). + +Anda juga boleh menjalankan kurikulum ini sebagai laman web yang berdiri sendiri dan mesra luar talian dengan menggunakan [Docsify](https://docsify.js.org/#/). [Pasang Docsify](https://docsify.js.org/#/quickstart) pada mesin tempatan anda, kemudian di folder root salinan repo tempatan anda, taip `docsify serve`. Laman web akan disediakan pada port 3000 di localhost anda: `localhost:3000`. + +Versi mesra luar talian kurikulum akan dibuka sebagai laman web berdiri sendiri: https://localhost:3000 + +Pelajaran dibahagikan kepada 6 bahagian: + +- 1: Pengenalan + - 1: Mendefinisikan Sains Data + - 2: Etika + - 3: Mendefinisikan Data + - 4: Gambaran Keseluruhan Kebarangkalian dan Statistik +- 2: Bekerja dengan Data + - 5: Pangkalan Data Relasi + - 6: Pangkalan Data Tidak Relasi + - 7: Python + - 8: Penyediaan Data +- 3: Visualisasi Data + - 9: Visualisasi Kuantiti + - 10: Visualisasi Taburan + - 11: Visualisasi Perkadaran + - 12: Visualisasi Hubungan + - 13: Visualisasi Bermakna +- 4: Kitaran Hayat Sains Data + - 14: Pengenalan + - 15: Menganalisis + - 16: Komunikasi +- 5: Sains Data di Awan + - 17: Pengenalan + - 18: Pilihan Kod Rendah + - 19: Azure +- 6: Sains Data di Dunia Nyata + - 20: Gambaran Keseluruhan + +## Sila berikan pendapat anda! + +Kami ingin menjadikan kurikulum ini berfungsi untuk anda dan pelajar anda. Sila berikan maklum balas di papan perbincangan! Jangan ragu untuk mencipta kawasan kelas di papan perbincangan untuk pelajar anda. + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/quiz-app/README.md b/translations/ms/quiz-app/README.md new file mode 100644 index 00000000..56d33588 --- /dev/null +++ b/translations/ms/quiz-app/README.md @@ -0,0 +1,138 @@ + +# Kuiz + +Kuiz-kuiz ini adalah kuiz sebelum dan selepas kuliah untuk kurikulum sains data di https://aka.ms/datascience-beginners + +## Menambah set kuiz terjemahan + +Tambah terjemahan kuiz dengan mencipta struktur kuiz yang sepadan dalam folder `assets/translations`. Kuiz asal terdapat dalam `assets/translations/en`. Kuiz-kuiz ini dibahagikan kepada beberapa kumpulan. Pastikan nombor kuiz sejajar dengan bahagian kuiz yang betul. Terdapat 40 kuiz keseluruhan dalam kurikulum ini, dengan kiraan bermula dari 0. + +Selepas mengedit terjemahan, edit fail index.js dalam folder terjemahan untuk mengimport semua fail mengikut konvensyen dalam `en`. + +Edit fail `index.js` dalam `assets/translations` untuk mengimport fail terjemahan yang baru. + +Kemudian, edit dropdown dalam `App.vue` dalam aplikasi ini untuk menambah bahasa anda. Padankan singkatan yang telah dilokalkan dengan nama folder untuk bahasa anda. + +Akhir sekali, edit semua pautan kuiz dalam pelajaran yang diterjemahkan, jika ada, untuk memasukkan lokalisasi ini sebagai parameter pertanyaan: `?loc=fr` sebagai contoh. + +## Persediaan Projek + +``` +npm install +``` + +### Kompil dan muat semula secara langsung untuk pembangunan + +``` +npm run serve +``` + +### Kompil dan minimakan untuk pengeluaran + +``` +npm run build +``` + +### Lint dan betulkan fail + +``` +npm run lint +``` + +### Sesuaikan konfigurasi + +Lihat [Rujukan Konfigurasi](https://cli.vuejs.org/config/). + +Kredit: Terima kasih kepada versi asal aplikasi kuiz ini: https://github.com/arpan45/simple-quiz-vue + +## Menyebarkan ke Azure + +Berikut adalah panduan langkah demi langkah untuk membantu anda bermula: + +1. Fork Repositori GitHub +Pastikan kod aplikasi web statik anda berada dalam repositori GitHub anda. Fork repositori ini. + +2. Cipta Aplikasi Web Statik Azure +- Cipta akaun [Azure](http://azure.microsoft.com) +- Pergi ke [portal Azure](https://portal.azure.com) +- Klik “Create a resource” dan cari “Static Web App”. +- Klik “Create”. + +3. Konfigurasi Aplikasi Web Statik +- Asas: Langganan: Pilih langganan Azure anda. +- Kumpulan Sumber: Cipta kumpulan sumber baru atau gunakan yang sedia ada. +- Nama: Berikan nama untuk aplikasi web statik anda. +- Wilayah: Pilih wilayah yang paling dekat dengan pengguna anda. + +- #### Butiran Penyebaran: +- Sumber: Pilih “GitHub”. +- Akaun GitHub: Benarkan Azure mengakses akaun GitHub anda. +- Organisasi: Pilih organisasi GitHub anda. +- Repositori: Pilih repositori yang mengandungi aplikasi web statik anda. +- Cawangan: Pilih cawangan yang anda ingin sebarkan. + +- #### Butiran Pembinaan: +- Preset Pembinaan: Pilih kerangka kerja yang digunakan oleh aplikasi anda (contoh: React, Angular, Vue, dll.). +- Lokasi Aplikasi: Nyatakan folder yang mengandungi kod aplikasi anda (contoh: / jika berada di root). +- Lokasi API: Jika anda mempunyai API, nyatakan lokasinya (pilihan). +- Lokasi Output: Nyatakan folder di mana output pembinaan dihasilkan (contoh: build atau dist). + +4. Semak dan Cipta +Semak tetapan anda dan klik “Create”. Azure akan menyediakan sumber yang diperlukan dan mencipta fail aliran kerja GitHub Actions dalam repositori anda. + +5. Aliran Kerja GitHub Actions +Azure akan secara automatik mencipta fail aliran kerja GitHub Actions dalam repositori anda (.github/workflows/azure-static-web-apps-.yml). Aliran kerja ini akan mengendalikan proses pembinaan dan penyebaran. + +6. Pantau Penyebaran +Pergi ke tab “Actions” dalam repositori GitHub anda. +Anda sepatutnya melihat aliran kerja sedang berjalan. Aliran kerja ini akan membina dan menyebarkan aplikasi web statik anda ke Azure. +Setelah aliran kerja selesai, aplikasi anda akan tersedia secara langsung pada URL Azure yang disediakan. + +### Contoh Fail Aliran Kerja + +Berikut adalah contoh bagaimana fail aliran kerja GitHub Actions mungkin kelihatan: +name: Azure Static Web Apps CI/CD +``` +on: + push: + branches: + - main + pull_request: + types: [opened, synchronize, reopened, closed] + branches: + - main + +jobs: + build_and_deploy_job: + runs-on: ubuntu-latest + name: Build and Deploy Job + steps: + - uses: actions/checkout@v2 + - name: Build And Deploy + id: builddeploy + uses: Azure/static-web-apps-deploy@v1 + with: + azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }} + repo_token: ${{ secrets.GITHUB_TOKEN }} + action: "upload" + app_location: "quiz-app" # App source code path + api_location: ""API source code path optional + output_location: "dist" #Built app content directory - optional +``` + +### Sumber Tambahan +- [Dokumentasi Azure Static Web Apps](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [Dokumentasi GitHub Actions](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/ms/sketchnotes/README.md b/translations/ms/sketchnotes/README.md new file mode 100644 index 00000000..8fa3928b --- /dev/null +++ b/translations/ms/sketchnotes/README.md @@ -0,0 +1,21 @@ + +Cari semua sketchnote di sini! + +## Kredit + +Nitya Narasimhan, artis + +![sketchnote peta jalan](../../../translated_images/00-Roadmap.4905d6567dff47532b9bfb8e0b8980fc6b0b1292eebb24181c1a9753b33bc0f5.ms.png) + +--- + +**Penafian**: +Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini. \ No newline at end of file diff --git a/translations/vi/1-Introduction/01-defining-data-science/README.md b/translations/vi/1-Introduction/01-defining-data-science/README.md new file mode 100644 index 00000000..711a2137 --- /dev/null +++ b/translations/vi/1-Introduction/01-defining-data-science/README.md @@ -0,0 +1,80 @@ + +## Các Loại Dữ Liệu + +Như đã đề cập, dữ liệu có mặt ở khắp mọi nơi. Chúng ta chỉ cần thu thập nó đúng cách! Việc phân biệt giữa dữ liệu **có cấu trúc** và **không có cấu trúc** là rất hữu ích. Dữ liệu có cấu trúc thường được biểu diễn dưới dạng có tổ chức, thường là một bảng hoặc nhiều bảng, trong khi dữ liệu không có cấu trúc chỉ là một tập hợp các tệp. Đôi khi, chúng ta cũng có thể nói về dữ liệu **bán cấu trúc**, có một số dạng cấu trúc nhưng có thể thay đổi rất nhiều. + +| Có cấu trúc | Bán cấu trúc | Không có cấu trúc | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | --------------------------------------- | +| Danh sách người với số điện thoại của họ | Các trang Wikipedia với các liên kết | Văn bản của Bách khoa toàn thư Britannica | +| Nhiệt độ trong tất cả các phòng của một tòa nhà mỗi phút trong 20 năm qua | Bộ sưu tập các bài báo khoa học ở định dạng JSON với tác giả, ngày xuất bản và tóm tắt | Chia sẻ tệp với các tài liệu công ty | +| Dữ liệu về tuổi và giới tính của tất cả những người vào tòa nhà | Các trang Internet | Video thô từ camera giám sát | + +## Nguồn Dữ Liệu + +Có rất nhiều nguồn dữ liệu khác nhau, và sẽ không thể liệt kê hết tất cả! Tuy nhiên, hãy đề cập đến một số nơi điển hình mà bạn có thể lấy dữ liệu: + +* **Có cấu trúc** + - **Internet of Things** (IoT), bao gồm dữ liệu từ các cảm biến khác nhau, như cảm biến nhiệt độ hoặc áp suất, cung cấp rất nhiều dữ liệu hữu ích. Ví dụ, nếu một tòa nhà văn phòng được trang bị cảm biến IoT, chúng ta có thể tự động điều chỉnh hệ thống sưởi và chiếu sáng để giảm thiểu chi phí. + - **Khảo sát** mà chúng ta yêu cầu người dùng hoàn thành sau khi mua hàng hoặc sau khi truy cập một trang web. + - **Phân tích hành vi** có thể giúp chúng ta hiểu người dùng đi sâu vào trang web đến mức nào và lý do phổ biến khiến họ rời khỏi trang. +* **Không có cấu trúc** + - **Văn bản** có thể là một nguồn thông tin phong phú, chẳng hạn như điểm **cảm xúc tổng thể**, hoặc trích xuất từ khóa và ý nghĩa ngữ nghĩa. + - **Hình ảnh** hoặc **Video**. Một video từ camera giám sát có thể được sử dụng để ước tính lưu lượng giao thông trên đường và thông báo cho mọi người về các điểm tắc nghẽn tiềm năng. + - **Nhật ký máy chủ web** có thể được sử dụng để hiểu những trang nào trên trang web của chúng ta được truy cập nhiều nhất và trong bao lâu. +* **Bán cấu trúc** + - **Đồ thị mạng xã hội** có thể là nguồn dữ liệu tuyệt vời về tính cách người dùng và hiệu quả tiềm năng trong việc lan truyền thông tin. + - Khi chúng ta có một loạt ảnh từ một bữa tiệc, chúng ta có thể cố gắng trích xuất dữ liệu **Động lực nhóm** bằng cách xây dựng một đồ thị về những người chụp ảnh cùng nhau. + +Bằng cách biết các nguồn dữ liệu khác nhau, bạn có thể nghĩ đến các kịch bản khác nhau mà các kỹ thuật khoa học dữ liệu có thể được áp dụng để hiểu rõ hơn tình hình và cải thiện quy trình kinh doanh. + +## Bạn Có Thể Làm Gì Với Dữ Liệu + +Trong Khoa học Dữ liệu, chúng ta tập trung vào các bước sau trong hành trình dữ liệu: + +Tùy thuộc vào dữ liệu thực tế, một số bước có thể bị bỏ qua (ví dụ: khi chúng ta đã có dữ liệu trong cơ sở dữ liệu, hoặc khi không cần huấn luyện mô hình), hoặc một số bước có thể được lặp lại nhiều lần (chẳng hạn như xử lý dữ liệu). + +## Số Hóa và Chuyển Đổi Số + +Trong thập kỷ qua, nhiều doanh nghiệp đã bắt đầu hiểu tầm quan trọng của dữ liệu trong việc đưa ra quyết định kinh doanh. Để áp dụng các nguyên tắc khoa học dữ liệu vào việc điều hành doanh nghiệp, trước tiên cần thu thập một số dữ liệu, tức là chuyển đổi các quy trình kinh doanh sang dạng số hóa. Điều này được gọi là **số hóa**. Việc áp dụng các kỹ thuật khoa học dữ liệu vào dữ liệu này để hướng dẫn các quyết định có thể dẫn đến sự gia tăng đáng kể về năng suất (hoặc thậm chí thay đổi hướng kinh doanh), được gọi là **chuyển đổi số**. + +Hãy xem xét một ví dụ. Giả sử chúng ta có một khóa học khoa học dữ liệu (như khóa học này) mà chúng ta cung cấp trực tuyến cho sinh viên, và chúng ta muốn sử dụng khoa học dữ liệu để cải thiện nó. Chúng ta có thể làm điều đó như thế nào? + +Chúng ta có thể bắt đầu bằng cách hỏi "Cái gì có thể được số hóa?" Cách đơn giản nhất là đo thời gian mỗi sinh viên hoàn thành từng mô-đun, và đo lường kiến thức đạt được bằng cách đưa ra một bài kiểm tra trắc nghiệm ở cuối mỗi mô-đun. Bằng cách tính trung bình thời gian hoàn thành của tất cả sinh viên, chúng ta có thể tìm ra những mô-đun gây khó khăn nhất cho sinh viên và làm việc để đơn giản hóa chúng. +Bạn có thể tranh luận rằng cách tiếp cận này không lý tưởng, vì các module có thể có độ dài khác nhau. Có lẽ sẽ công bằng hơn nếu chia thời gian theo độ dài của module (tính bằng số ký tự) và so sánh các giá trị đó thay thế. +Khi chúng ta bắt đầu phân tích kết quả của các bài kiểm tra trắc nghiệm, chúng ta có thể cố gắng xác định những khái niệm mà học sinh gặp khó khăn trong việc hiểu, và sử dụng thông tin đó để cải thiện nội dung. Để làm được điều này, chúng ta cần thiết kế các bài kiểm tra sao cho mỗi câu hỏi liên kết với một khái niệm hoặc phần kiến thức cụ thể. + +Nếu muốn phân tích phức tạp hơn, chúng ta có thể vẽ biểu đồ thời gian hoàn thành từng mô-đun so với nhóm tuổi của học sinh. Chúng ta có thể phát hiện rằng đối với một số nhóm tuổi, thời gian hoàn thành mô-đun quá dài hoặc học sinh bỏ dở trước khi hoàn thành. Điều này có thể giúp chúng ta đưa ra khuyến nghị về độ tuổi phù hợp cho mô-đun và giảm thiểu sự không hài lòng của mọi người do kỳ vọng sai lệch. + +## 🚀 Thử thách + +Trong thử thách này, chúng ta sẽ cố gắng tìm các khái niệm liên quan đến lĩnh vực Khoa học Dữ liệu bằng cách phân tích văn bản. Chúng ta sẽ lấy một bài viết trên Wikipedia về Khoa học Dữ liệu, tải xuống và xử lý văn bản, sau đó tạo một đám mây từ như hình dưới đây: + +![Đám mây từ cho Khoa học Dữ liệu](../../../../translated_images/ds_wordcloud.664a7c07dca57de017c22bf0498cb40f898d48aa85b3c36a80620fea12fadd42.vi.png) + +Truy cập [`notebook.ipynb`](../../../../../../../../../1-Introduction/01-defining-data-science/notebook.ipynb ':ignore') để đọc qua mã. Bạn cũng có thể chạy mã và xem cách nó thực hiện tất cả các chuyển đổi dữ liệu trong thời gian thực. + +> Nếu bạn không biết cách chạy mã trong Jupyter Notebook, hãy xem [bài viết này](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). + +## [Câu hỏi sau bài giảng](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/1) + +## Bài tập + +* **Nhiệm vụ 1**: Sửa đổi mã trên để tìm các khái niệm liên quan đến các lĩnh vực **Dữ liệu lớn** và **Học máy** +* **Nhiệm vụ 2**: [Suy nghĩ về các kịch bản Khoa học Dữ liệu](assignment.md) + +## Tín dụng + +Bài học này được viết với ♥️ bởi [Dmitry Soshnikov](http://soshnikov.com) + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/1-Introduction/01-defining-data-science/assignment.md b/translations/vi/1-Introduction/01-defining-data-science/assignment.md new file mode 100644 index 00000000..7810dd56 --- /dev/null +++ b/translations/vi/1-Introduction/01-defining-data-science/assignment.md @@ -0,0 +1,46 @@ + +# Bài tập: Các tình huống Khoa học Dữ liệu + +Trong bài tập đầu tiên này, chúng tôi yêu cầu bạn suy nghĩ về một quy trình hoặc vấn đề thực tế trong các lĩnh vực khác nhau, và cách bạn có thể cải thiện nó bằng quy trình Khoa học Dữ liệu. Hãy cân nhắc các câu hỏi sau: + +1. Bạn có thể thu thập dữ liệu nào? +1. Bạn sẽ thu thập dữ liệu đó như thế nào? +1. Bạn sẽ lưu trữ dữ liệu ở đâu? Dữ liệu có khả năng lớn đến mức nào? +1. Những thông tin nào bạn có thể rút ra từ dữ liệu này? Những quyết định nào chúng ta có thể đưa ra dựa trên dữ liệu? + +Hãy thử nghĩ về 3 vấn đề/quy trình khác nhau và mô tả từng điểm trên cho mỗi lĩnh vực vấn đề. + +Dưới đây là một số lĩnh vực vấn đề và câu hỏi để bạn bắt đầu suy nghĩ: + +1. Làm thế nào bạn có thể sử dụng dữ liệu để cải thiện quy trình giáo dục cho trẻ em trong trường học? +1. Làm thế nào bạn có thể sử dụng dữ liệu để kiểm soát việc tiêm chủng trong đại dịch? +1. Làm thế nào bạn có thể sử dụng dữ liệu để đảm bảo rằng bạn đang làm việc hiệu quả? + +## Hướng dẫn + +Điền vào bảng sau (thay thế các lĩnh vực vấn đề được gợi ý bằng các lĩnh vực của riêng bạn nếu cần): + +| Lĩnh vực vấn đề | Vấn đề | Dữ liệu cần thu thập | Cách lưu trữ dữ liệu | Những thông tin/quyết định có thể đưa ra | +|-----------------|--------|---------------------|-----------------------|------------------------------------------| +| Giáo dục | | | | | +| Tiêm chủng | | | | | +| Năng suất | | | | | + +## Tiêu chí đánh giá + +Xuất sắc | Đạt yêu cầu | Cần cải thiện +--- | --- | -- | +Có thể xác định các nguồn dữ liệu hợp lý, cách lưu trữ dữ liệu và các quyết định/thông tin có thể rút ra cho tất cả các lĩnh vực vấn đề | Một số khía cạnh của giải pháp không được chi tiết, lưu trữ dữ liệu không được thảo luận, ít nhất 2 lĩnh vực vấn đề được mô tả | Chỉ mô tả một phần của giải pháp dữ liệu, chỉ xem xét một lĩnh vực vấn đề. + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/1-Introduction/01-defining-data-science/solution/assignment.md b/translations/vi/1-Introduction/01-defining-data-science/solution/assignment.md new file mode 100644 index 00000000..32ebb15c --- /dev/null +++ b/translations/vi/1-Introduction/01-defining-data-science/solution/assignment.md @@ -0,0 +1,48 @@ + +# Bài tập: Các tình huống Khoa học Dữ liệu + +Trong bài tập đầu tiên này, chúng tôi yêu cầu bạn suy nghĩ về một quy trình hoặc vấn đề thực tế trong các lĩnh vực khác nhau, và cách bạn có thể cải thiện nó bằng quy trình Khoa học Dữ liệu. Hãy cân nhắc các câu hỏi sau: + +1. Bạn có thể thu thập dữ liệu nào? +1. Bạn sẽ thu thập dữ liệu như thế nào? +1. Bạn sẽ lưu trữ dữ liệu ở đâu? Dữ liệu có khả năng lớn đến mức nào? +1. Những thông tin nào bạn có thể rút ra từ dữ liệu này? Những quyết định nào chúng ta có thể đưa ra dựa trên dữ liệu? + +Hãy cố gắng suy nghĩ về 3 vấn đề/quy trình khác nhau và mô tả từng điểm trên cho mỗi lĩnh vực. + +Dưới đây là một số lĩnh vực và vấn đề để bạn bắt đầu suy nghĩ: + +1. Làm thế nào bạn có thể sử dụng dữ liệu để cải thiện quá trình giáo dục cho trẻ em trong trường học? +1. Làm thế nào bạn có thể sử dụng dữ liệu để kiểm soát việc tiêm chủng trong đại dịch? +1. Làm thế nào bạn có thể sử dụng dữ liệu để đảm bảo rằng bạn đang làm việc hiệu quả? + +## Hướng dẫn + +Điền vào bảng sau (thay thế các lĩnh vực gợi ý bằng các lĩnh vực của riêng bạn nếu cần): + +| Lĩnh vực | Vấn đề | Dữ liệu cần thu thập | Cách lưu trữ dữ liệu | Những thông tin/quyết định có thể đưa ra | +|----------|--------|----------------------|----------------------|------------------------------------------| +| Giáo dục | Trong trường đại học, chúng tôi thường có tỷ lệ tham dự thấp trong các buổi giảng, và chúng tôi có giả thuyết rằng sinh viên tham dự lớp học thường xuyên hơn sẽ làm bài thi tốt hơn. Chúng tôi muốn khuyến khích tham dự và kiểm tra giả thuyết này. | Chúng tôi có thể theo dõi sự tham dự thông qua hình ảnh chụp bởi camera an ninh trong lớp, hoặc bằng cách theo dõi địa chỉ bluetooth/wifi của điện thoại di động của sinh viên trong lớp. Dữ liệu bài thi đã có sẵn trong cơ sở dữ liệu của trường. | Trong trường hợp chúng tôi theo dõi hình ảnh từ camera an ninh - chúng tôi cần lưu trữ một vài (5-10) bức ảnh trong lớp (dữ liệu không có cấu trúc), sau đó sử dụng AI để nhận diện khuôn mặt sinh viên (chuyển dữ liệu sang dạng có cấu trúc). | Chúng tôi có thể tính toán dữ liệu tham dự trung bình cho mỗi sinh viên, và xem liệu có bất kỳ mối tương quan nào với điểm thi hay không. Chúng tôi sẽ nói thêm về tương quan trong phần [xác suất và thống kê](../../04-stats-and-probability/README.md). Để khuyến khích sinh viên tham dự, chúng tôi có thể công bố xếp hạng tham dự hàng tuần trên cổng thông tin của trường, và trao giải thưởng cho những người có tỷ lệ tham dự cao nhất. | +| Tiêm chủng | | | | | +| Hiệu suất làm việc | | | | | + +> *Chúng tôi chỉ cung cấp một câu trả lời làm ví dụ, để bạn có thể hình dung những gì được mong đợi trong bài tập này.* + +## Tiêu chí đánh giá + +Xuất sắc | Đạt yêu cầu | Cần cải thiện +--- | --- | -- | +Có thể xác định các nguồn dữ liệu hợp lý, cách lưu trữ dữ liệu và các quyết định/thông tin có thể rút ra cho tất cả các lĩnh vực | Một số khía cạnh của giải pháp không được chi tiết, cách lưu trữ dữ liệu không được thảo luận, ít nhất 2 lĩnh vực được mô tả | Chỉ mô tả một phần của giải pháp dữ liệu, chỉ xem xét một lĩnh vực. + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/1-Introduction/02-ethics/README.md b/translations/vi/1-Introduction/02-ethics/README.md new file mode 100644 index 00000000..4d0a912f --- /dev/null +++ b/translations/vi/1-Introduction/02-ethics/README.md @@ -0,0 +1,263 @@ + +# Giới thiệu về Đạo đức Dữ liệu + +|![ Sketchnote bởi [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/02-Ethics.png)| +|:---:| +| Đạo đức Khoa học Dữ liệu - _Sketchnote bởi [@nitya](https://twitter.com/nitya)_ | + +--- + +Chúng ta đều là công dân dữ liệu sống trong một thế giới được số hóa bởi dữ liệu. + +Xu hướng thị trường cho thấy rằng đến năm 2022, cứ 3 tổ chức lớn thì sẽ có 1 tổ chức mua và bán dữ liệu của họ thông qua các [Thị trường và Sàn giao dịch](https://www.gartner.com/smarterwithgartner/gartner-top-10-trends-in-data-and-analytics-for-2020/). Là **Nhà phát triển ứng dụng**, chúng ta sẽ thấy việc tích hợp các thông tin chi tiết dựa trên dữ liệu và tự động hóa dựa trên thuật toán vào trải nghiệm người dùng hàng ngày trở nên dễ dàng và rẻ hơn. Nhưng khi AI trở nên phổ biến, chúng ta cũng cần hiểu những tác hại tiềm ẩn do [việc vũ khí hóa](https://www.youtube.com/watch?v=TQHs8SA1qpk) các thuật toán này ở quy mô lớn. + +Xu hướng cũng chỉ ra rằng chúng ta sẽ tạo ra và tiêu thụ hơn [180 zettabyte](https://www.statista.com/statistics/871513/worldwide-data-created/) dữ liệu vào năm 2025. Là **Nhà khoa học dữ liệu**, điều này mang lại cho chúng ta mức độ truy cập chưa từng có vào dữ liệu cá nhân. Điều này có nghĩa là chúng ta có thể xây dựng hồ sơ hành vi của người dùng và ảnh hưởng đến việc ra quyết định theo cách tạo ra một [ảo tưởng về sự lựa chọn tự do](https://www.datasciencecentral.com/profiles/blogs/the-illusion-of-choice) trong khi có thể hướng người dùng đến các kết quả mà chúng ta mong muốn. Nó cũng đặt ra các câu hỏi rộng hơn về quyền riêng tư dữ liệu và bảo vệ người dùng. + +Đạo đức dữ liệu giờ đây là _hàng rào cần thiết_ cho khoa học và kỹ thuật dữ liệu, giúp chúng ta giảm thiểu các tác hại tiềm ẩn và hậu quả không mong muốn từ các hành động dựa trên dữ liệu của mình. [Chu kỳ Hype của Gartner về AI](https://www.gartner.com/smarterwithgartner/2-megatrends-dominate-the-gartner-hype-cycle-for-artificial-intelligence-2020/) xác định các xu hướng liên quan đến đạo đức kỹ thuật số, AI có trách nhiệm và quản trị AI là các yếu tố thúc đẩy các xu hướng lớn hơn xung quanh _dân chủ hóa_ và _công nghiệp hóa_ AI. + +![Chu kỳ Hype của Gartner về AI - 2020](https://images-cdn.newscred.com/Zz1mOWJhNzlkNDA2ZTMxMWViYjRiOGFiM2IyMjQ1YmMwZQ==) + +Trong bài học này, chúng ta sẽ khám phá lĩnh vực thú vị về đạo đức dữ liệu - từ các khái niệm và thách thức cốt lõi, đến các nghiên cứu điển hình và các khái niệm AI ứng dụng như quản trị - giúp thiết lập văn hóa đạo đức trong các nhóm và tổ chức làm việc với dữ liệu và AI. + +## [Câu hỏi trước bài giảng](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/2) 🎯 + +## Định nghĩa cơ bản + +Hãy bắt đầu bằng cách hiểu các thuật ngữ cơ bản. + +Từ "đạo đức" xuất phát từ [từ tiếng Hy Lạp "ethikos"](https://en.wikipedia.org/wiki/Ethics) (và gốc của nó "ethos") có nghĩa là _tính cách hoặc bản chất đạo đức_. + +**Đạo đức** là về các giá trị chung và nguyên tắc đạo đức chi phối hành vi của chúng ta trong xã hội. Đạo đức không dựa trên luật pháp mà dựa trên các chuẩn mực được chấp nhận rộng rãi về điều gì là "đúng và sai". Tuy nhiên, các cân nhắc đạo đức có thể ảnh hưởng đến các sáng kiến quản trị doanh nghiệp và quy định của chính phủ, tạo ra nhiều động lực hơn cho việc tuân thủ. + +**Đạo đức dữ liệu** là một [nhánh mới của đạo đức](https://royalsocietypublishing.org/doi/full/10.1098/rsta.2016.0360#sec-1) nghiên cứu và đánh giá các vấn đề đạo đức liên quan đến _dữ liệu, thuật toán và các thực hành tương ứng_. Ở đây, **"dữ liệu"** tập trung vào các hành động liên quan đến việc tạo ra, ghi lại, quản lý, xử lý, phổ biến, chia sẻ và sử dụng; **"thuật toán"** tập trung vào AI, tác nhân, học máy và robot; và **"thực hành"** tập trung vào các chủ đề như đổi mới có trách nhiệm, lập trình, hack và các quy tắc đạo đức. + +**Đạo đức ứng dụng** là [việc áp dụng thực tế các cân nhắc đạo đức](https://en.wikipedia.org/wiki/Applied_ethics). Đây là quá trình điều tra tích cực các vấn đề đạo đức trong bối cảnh _hành động, sản phẩm và quy trình thực tế_, và thực hiện các biện pháp khắc phục để đảm bảo rằng chúng vẫn phù hợp với các giá trị đạo đức đã xác định. + +**Văn hóa đạo đức** là về [_hiện thực hóa_ đạo đức ứng dụng](https://hbr.org/2019/05/how-to-design-an-ethical-organization) để đảm bảo rằng các nguyên tắc và thực hành đạo đức của chúng ta được áp dụng một cách nhất quán và có thể mở rộng trên toàn tổ chức. Các văn hóa đạo đức thành công xác định các nguyên tắc đạo đức trên toàn tổ chức, cung cấp các động lực có ý nghĩa cho việc tuân thủ, và củng cố các chuẩn mực đạo đức bằng cách khuyến khích và khuếch đại các hành vi mong muốn ở mọi cấp độ của tổ chức. + +## Các khái niệm về đạo đức + +Trong phần này, chúng ta sẽ thảo luận về các khái niệm như **giá trị chung** (nguyên tắc) và **thách thức đạo đức** (vấn đề) đối với đạo đức dữ liệu - và khám phá **các nghiên cứu điển hình** giúp bạn hiểu các khái niệm này trong bối cảnh thực tế. + +### 1. Nguyên tắc đạo đức + +Mọi chiến lược đạo đức dữ liệu đều bắt đầu bằng việc xác định _các nguyên tắc đạo đức_ - "giá trị chung" mô tả các hành vi chấp nhận được và hướng dẫn các hành động tuân thủ trong các dự án dữ liệu & AI của chúng ta. Bạn có thể xác định chúng ở cấp độ cá nhân hoặc nhóm. Tuy nhiên, hầu hết các tổ chức lớn đều phác thảo chúng trong một tuyên bố sứ mệnh hoặc khung đạo đức AI được xác định ở cấp độ doanh nghiệp và được thực thi nhất quán trên tất cả các nhóm. + +**Ví dụ:** Tuyên bố sứ mệnh [AI có trách nhiệm](https://www.microsoft.com/en-us/ai/responsible-ai) của Microsoft nêu rõ: _"Chúng tôi cam kết thúc đẩy AI dựa trên các nguyên tắc đạo đức đặt con người lên hàng đầu"_ - xác định 6 nguyên tắc đạo đức trong khung dưới đây: + +![AI có trách nhiệm tại Microsoft](https://docs.microsoft.com/en-gb/azure/cognitive-services/personalizer/media/ethics-and-responsible-use/ai-values-future-computed.png) + +Hãy cùng khám phá ngắn gọn các nguyên tắc này. _Minh bạch_ và _trách nhiệm_ là các giá trị nền tảng mà các nguyên tắc khác được xây dựng dựa trên - vì vậy hãy bắt đầu từ đó: + +* [**Trách nhiệm**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) khiến các nhà thực hành _chịu trách nhiệm_ về các hoạt động dữ liệu & AI của họ, và tuân thủ các nguyên tắc đạo đức này. +* [**Minh bạch**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) đảm bảo rằng các hành động dữ liệu và AI _có thể hiểu được_ (có thể diễn giải) đối với người dùng, giải thích điều gì và tại sao đằng sau các quyết định. +* [**Công bằng**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1%3aprimaryr6) - tập trung vào việc đảm bảo AI đối xử _công bằng với tất cả mọi người_, giải quyết bất kỳ thiên vị xã hội-kỹ thuật nào trong dữ liệu và hệ thống. +* [**Độ tin cậy & An toàn**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) - đảm bảo rằng AI hoạt động _nhất quán_ với các giá trị đã xác định, giảm thiểu các tác hại tiềm ẩn hoặc hậu quả không mong muốn. +* [**Quyền riêng tư & Bảo mật**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) - là về việc hiểu nguồn gốc dữ liệu và cung cấp _quyền riêng tư dữ liệu và các bảo vệ liên quan_ cho người dùng. +* [**Tính bao gồm**](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1:primaryr6) - là về việc thiết kế các giải pháp AI với ý định, điều chỉnh chúng để đáp ứng _một loạt các nhu cầu và khả năng của con người_. + +> 🚨 Hãy nghĩ về tuyên bố sứ mệnh đạo đức dữ liệu của bạn có thể là gì. Khám phá các khung đạo đức AI từ các tổ chức khác - đây là các ví dụ từ [IBM](https://www.ibm.com/cloud/learn/ai-ethics), [Google](https://ai.google/principles), và [Facebook](https://ai.facebook.com/blog/facebooks-five-pillars-of-responsible-ai/). Các giá trị chung của họ có điểm gì tương đồng? Các nguyên tắc này liên quan như thế nào đến sản phẩm AI hoặc ngành mà họ hoạt động? + +### 2. Thách thức đạo đức + +Khi chúng ta đã xác định các nguyên tắc đạo đức, bước tiếp theo là đánh giá các hành động dữ liệu và AI của chúng ta để xem liệu chúng có phù hợp với các giá trị chung đó hay không. Hãy nghĩ về các hành động của bạn trong hai danh mục: _thu thập dữ liệu_ và _thiết kế thuật toán_. + +Với việc thu thập dữ liệu, các hành động có thể liên quan đến **dữ liệu cá nhân** hoặc thông tin nhận dạng cá nhân (PII) cho các cá nhân có thể nhận dạng. Điều này bao gồm [các mục dữ liệu không cá nhân đa dạng](https://ec.europa.eu/info/law/law-topic/data-protection/reform/what-personal-data_en) mà _tập hợp lại_ có thể nhận dạng một cá nhân. Các thách thức đạo đức có thể liên quan đến _quyền riêng tư dữ liệu_, _quyền sở hữu dữ liệu_, và các chủ đề liên quan như _sự đồng ý được thông báo_ và _quyền sở hữu trí tuệ_ của người dùng. + +Với thiết kế thuật toán, các hành động sẽ liên quan đến việc thu thập & quản lý **bộ dữ liệu**, sau đó sử dụng chúng để huấn luyện & triển khai **mô hình dữ liệu** dự đoán kết quả hoặc tự động hóa quyết định trong các bối cảnh thực tế. Các thách thức đạo đức có thể phát sinh từ _thiên vị bộ dữ liệu_, _vấn đề chất lượng dữ liệu_, _sự không công bằng_, và _sự sai lệch_ trong thuật toán - bao gồm một số vấn đề mang tính hệ thống. + +Trong cả hai trường hợp, các thách thức đạo đức làm nổi bật các lĩnh vực mà hành động của chúng ta có thể gặp xung đột với các giá trị chung. Để phát hiện, giảm thiểu, giảm bớt hoặc loại bỏ các mối quan ngại này - chúng ta cần đặt ra các câu hỏi đạo đức "có/không" liên quan đến hành động của mình, sau đó thực hiện các hành động khắc phục khi cần thiết. Hãy cùng xem xét một số thách thức đạo đức và các câu hỏi đạo đức mà chúng đặt ra: + +#### 2.1 Quyền sở hữu dữ liệu + +Việc thu thập dữ liệu thường liên quan đến dữ liệu cá nhân có thể nhận dạng các đối tượng dữ liệu. [Quyền sở hữu dữ liệu](https://permission.io/blog/data-ownership) là về _kiểm soát_ và [_quyền của người dùng_](https://permission.io/blog/data-ownership) liên quan đến việc tạo ra, xử lý và phổ biến dữ liệu. + +Các câu hỏi đạo đức cần đặt ra là: +* Ai sở hữu dữ liệu? (người dùng hay tổ chức) +* Các quyền mà đối tượng dữ liệu có là gì? (ví dụ: truy cập, xóa, di chuyển) +* Các quyền mà tổ chức có là gì? (ví dụ: chỉnh sửa đánh giá người dùng độc hại) + +#### 2.2 Sự đồng ý được thông báo + +[Sự đồng ý được thông báo](https://legaldictionary.net/informed-consent/) định nghĩa hành động người dùng đồng ý với một hành động (như thu thập dữ liệu) với _sự hiểu biết đầy đủ_ về các sự kiện liên quan bao gồm mục đích, rủi ro tiềm ẩn, và các lựa chọn thay thế. + +Các câu hỏi cần khám phá ở đây là: +* Người dùng (đối tượng dữ liệu) có cho phép thu thập và sử dụng dữ liệu không? +* Người dùng có hiểu mục đích mà dữ liệu đó được thu thập không? +* Người dùng có hiểu các rủi ro tiềm ẩn từ sự tham gia của họ không? + +#### 2.3 Quyền sở hữu trí tuệ + +[Quyền sở hữu trí tuệ](https://en.wikipedia.org/wiki/Intellectual_property) đề cập đến các sáng tạo vô hình xuất phát từ sáng kiến của con người, có thể _có giá trị kinh tế_ đối với cá nhân hoặc doanh nghiệp. + +Các câu hỏi cần khám phá ở đây là: +* Dữ liệu được thu thập có giá trị kinh tế đối với người dùng hoặc doanh nghiệp không? +* Người dùng có quyền sở hữu trí tuệ ở đây không? +* Tổ chức có quyền sở hữu trí tuệ ở đây không? +* Nếu các quyền này tồn tại, chúng ta đang bảo vệ chúng như thế nào? + +#### 2.4 Quyền riêng tư dữ liệu + +[Quyền riêng tư dữ liệu](https://www.northeastern.edu/graduate/blog/what-is-data-privacy/) hoặc quyền riêng tư thông tin đề cập đến việc bảo vệ quyền riêng tư của người dùng và bảo vệ danh tính của họ liên quan đến thông tin nhận dạng cá nhân. + +Các câu hỏi cần khám phá ở đây là: +* Dữ liệu (cá nhân) của người dùng có được bảo mật chống lại các cuộc tấn công và rò rỉ không? +* Dữ liệu của người dùng có chỉ được truy cập bởi các người dùng và bối cảnh được ủy quyền không? +* Tính ẩn danh của người dùng có được bảo tồn khi dữ liệu được chia sẻ hoặc phổ biến không? +* Người dùng có thể được không nhận dạng từ các bộ dữ liệu đã được ẩn danh không? + +#### 2.5 Quyền được lãng quên + +[Quyền được lãng quên](https://en.wikipedia.org/wiki/Right_to_be_forgotten) hoặc [Quyền xóa bỏ](https://www.gdpreu.org/right-to-be-forgotten/) cung cấp thêm sự bảo vệ dữ liệu cá nhân cho người dùng. Cụ thể, nó cho phép người dùng yêu cầu xóa hoặc loại bỏ dữ liệu cá nhân khỏi các tìm kiếm trên Internet và các địa điểm khác, _trong các trường hợp cụ thể_ - cho phép họ có một khởi đầu mới trực tuyến mà không bị các hành động trong quá khứ chống lại họ. + +Các câu hỏi cần khám phá ở đây là: +* Hệ thống có cho phép đối tượng dữ liệu yêu cầu xóa bỏ không? +* Việc rút lại sự đồng ý của người dùng có nên kích hoạt việc xóa bỏ tự động không? +* Dữ liệu có được thu thập mà không có sự đồng ý hoặc bằng các phương tiện bất hợp pháp không? +* Chúng ta có tuân thủ các quy định của chính phủ về quyền riêng tư dữ liệu không? + +#### 2.6 Thiên vị bộ dữ liệu + +Thiên vị bộ dữ liệu hoặc [Thiên vị thu thập](http://researcharticles.com/index.php/bias-in-data-collection-in-research/) là về việc chọn một tập hợp con _không đại diện_ của dữ liệu để phát triển thuật toán, tạo ra sự không công bằng tiềm ẩn trong kết quả cho các nhóm đa dạng. Các loại thiên bias bao gồm thiên bias chọn lọc hoặc lấy mẫu, thiên bias tình nguyện, và thiên bias công cụ. + +Các câu hỏi cần khám phá ở đây là: +* Chúng ta có tuyển chọn một tập hợp đại diện của các đối tượng dữ liệu không? +* Chúng ta có kiểm tra bộ dữ liệu đã thu thập hoặc quản lý để phát hiện các thiên bias khác nhau không? +* Chúng ta có thể giảm thiểu hoặc loại bỏ các thiên bias đã phát hiện không? + +#### 2.7 Chất lượng dữ liệu + +[Chất lượng dữ liệu](https://lakefs.io/data-quality-testing/) xem xét tính hợp lệ của bộ dữ liệu được quản lý để phát triển thuật toán của chúng ta, kiểm tra xem các đặc điểm và bản ghi có đáp ứng yêu cầu về mức độ chính xác và nhất quán cần thiết cho mục đích AI của chúng ta hay không. + +Các câu hỏi cần khám phá ở đây là: +* Chúng ta có thu thập các _đặc điểm hợp lệ_ cho trường hợp sử dụng của mình không? +* Dữ liệu có được thu thập _ +[Algorithm Fairness](https://towardsdatascience.com/what-is-algorithm-fairness-3182e161cf9f) kiểm tra xem thiết kế thuật toán có phân biệt đối xử một cách hệ thống với các nhóm đối tượng dữ liệu cụ thể hay không, dẫn đến [những tổn hại tiềm tàng](https://docs.microsoft.com/en-us/azure/machine-learning/concept-fairness-ml) trong _phân bổ_ (nơi tài nguyên bị từ chối hoặc không được cung cấp cho nhóm đó) và _chất lượng dịch vụ_ (nơi AI không chính xác đối với một số nhóm như đối với các nhóm khác). + +Các câu hỏi cần khám phá ở đây là: + * Chúng ta đã đánh giá độ chính xác của mô hình đối với các nhóm và điều kiện đa dạng chưa? + * Chúng ta đã xem xét hệ thống để tìm các tổn hại tiềm tàng (ví dụ: định kiến) chưa? + * Chúng ta có thể sửa đổi dữ liệu hoặc huấn luyện lại mô hình để giảm thiểu các tổn hại đã xác định không? + +Khám phá các tài nguyên như [AI Fairness checklists](https://query.prod.cms.rt.microsoft.com/cms/api/am/binary/RE4t6dA) để tìm hiểu thêm. + +#### 2.9 Sai lệch thông tin + +[Sai lệch thông tin dữ liệu](https://www.sciencedirect.com/topics/computer-science/misrepresentation) liên quan đến việc đặt câu hỏi liệu chúng ta có đang truyền đạt những thông tin từ dữ liệu được báo cáo một cách trung thực nhưng lại gây hiểu lầm để hỗ trợ một câu chuyện mong muốn hay không. + +Các câu hỏi cần khám phá ở đây là: + * Chúng ta có đang báo cáo dữ liệu không đầy đủ hoặc không chính xác không? + * Chúng ta có đang trực quan hóa dữ liệu theo cách dẫn đến kết luận sai lệch không? + * Chúng ta có đang sử dụng các kỹ thuật thống kê chọn lọc để thao túng kết quả không? + * Có những giải thích thay thế nào có thể đưa ra kết luận khác không? + +#### 2.10 Quyền tự do lựa chọn +[Ảo tưởng về quyền tự do lựa chọn](https://www.datasciencecentral.com/profiles/blogs/the-illusion-of-choice) xảy ra khi "kiến trúc lựa chọn" của hệ thống sử dụng các thuật toán ra quyết định để thúc đẩy mọi người chọn một kết quả ưu tiên trong khi vẫn tạo cảm giác rằng họ có quyền lựa chọn và kiểm soát. Những [mô hình tối](https://www.darkpatterns.org/) này có thể gây hại về mặt xã hội và kinh tế cho người dùng. Vì các quyết định của người dùng ảnh hưởng đến hồ sơ hành vi, những hành động này có thể thúc đẩy các lựa chọn trong tương lai, làm khuếch đại hoặc kéo dài tác động của những tổn hại này. + +Các câu hỏi cần khám phá ở đây là: + * Người dùng có hiểu rõ các tác động của việc đưa ra lựa chọn đó không? + * Người dùng có nhận thức được các lựa chọn (thay thế) và ưu nhược điểm của từng lựa chọn không? + * Người dùng có thể đảo ngược một lựa chọn tự động hoặc bị ảnh hưởng sau này không? + +### 3. Nghiên cứu tình huống + +Để đặt những thách thức đạo đức này vào bối cảnh thực tế, việc xem xét các nghiên cứu tình huống giúp làm nổi bật những tổn hại và hậu quả tiềm tàng đối với cá nhân và xã hội khi các vi phạm đạo đức như vậy bị bỏ qua. + +Dưới đây là một vài ví dụ: + +| Thách thức đạo đức | Nghiên cứu tình huống | +|--- |--- | +| **Sự đồng ý được thông báo** | 1972 - [Tuskegee Syphilis Study](https://en.wikipedia.org/wiki/Tuskegee_Syphilis_Study) - Những người đàn ông Mỹ gốc Phi tham gia nghiên cứu được hứa hẹn chăm sóc y tế miễn phí _nhưng bị lừa dối_ bởi các nhà nghiên cứu không thông báo cho họ về chẩn đoán hoặc sự sẵn có của phương pháp điều trị. Nhiều người đã chết và đối tác hoặc con cái của họ bị ảnh hưởng; nghiên cứu kéo dài 40 năm. | +| **Quyền riêng tư dữ liệu** | 2007 - [Netflix data prize](https://www.wired.com/2007/12/why-anonymous-data-sometimes-isnt/) cung cấp cho các nhà nghiên cứu _10 triệu xếp hạng phim ẩn danh từ 50 nghìn khách hàng_ để cải thiện thuật toán gợi ý. Tuy nhiên, các nhà nghiên cứu đã có thể liên kết dữ liệu ẩn danh với dữ liệu nhận dạng cá nhân trong _các tập dữ liệu bên ngoài_ (ví dụ: bình luận IMDb) - thực tế "giải ẩn danh" một số người dùng Netflix.| +| **Thiên vị trong thu thập dữ liệu** | 2013 - Thành phố Boston [phát triển Street Bump](https://www.boston.gov/transportation/street-bump), một ứng dụng cho phép công dân báo cáo ổ gà, cung cấp cho thành phố dữ liệu đường xá tốt hơn để tìm và sửa chữa các vấn đề. Tuy nhiên, [những người thuộc nhóm thu nhập thấp ít có quyền truy cập vào ô tô và điện thoại hơn](https://hbr.org/2013/04/the-hidden-biases-in-big-data), khiến các vấn đề đường xá của họ trở nên vô hình trong ứng dụng này. Các nhà phát triển đã làm việc với các học giả để giải quyết _vấn đề tiếp cận công bằng và chia rẽ kỹ thuật số_ nhằm đảm bảo tính công bằng. | +| **Công bằng thuật toán** | 2018 - [Gender Shades Study](http://gendershades.org/overview.html) của MIT đánh giá độ chính xác của các sản phẩm AI phân loại giới tính, phơi bày những khoảng cách về độ chính xác đối với phụ nữ và người da màu. Một [Apple Card năm 2019](https://www.wired.com/story/the-apple-card-didnt-see-genderand-thats-the-problem/) dường như cung cấp ít tín dụng hơn cho phụ nữ so với nam giới. Cả hai đều minh họa các vấn đề về thiên vị thuật toán dẫn đến tổn hại kinh tế xã hội.| +| **Sai lệch thông tin dữ liệu** | 2020 - [Sở Y tế Georgia công bố biểu đồ COVID-19](https://www.vox.com/covid-19-coronavirus-us-response-trump/2020/5/18/21262265/georgia-covid-19-cases-declining-reopening) dường như gây hiểu lầm cho công dân về xu hướng các ca bệnh được xác nhận với thứ tự không theo thời gian trên trục x. Điều này minh họa sự sai lệch thông tin thông qua các thủ thuật trực quan hóa. | +| **Ảo tưởng về quyền tự do lựa chọn** | 2020 - Ứng dụng học tập [ABCmouse trả 10 triệu USD để giải quyết khiếu nại của FTC](https://www.washingtonpost.com/business/2020/09/04/abcmouse-10-million-ftc-settlement/) nơi phụ huynh bị mắc kẹt trong việc trả tiền cho các gói đăng ký mà họ không thể hủy bỏ. Điều này minh họa các mô hình tối trong kiến trúc lựa chọn, nơi người dùng bị thúc đẩy đến các lựa chọn có thể gây hại. | +| **Quyền riêng tư dữ liệu & Quyền người dùng** | 2021 - [Facebook Data Breach](https://www.npr.org/2021/04/09/986005820/after-data-breach-exposes-530-million-facebook-says-it-will-not-notify-users) làm lộ dữ liệu của 530 triệu người dùng, dẫn đến khoản bồi thường 5 tỷ USD cho FTC. Tuy nhiên, Facebook từ chối thông báo cho người dùng về vi phạm, vi phạm quyền của người dùng liên quan đến tính minh bạch và quyền truy cập dữ liệu. | + +Muốn khám phá thêm các nghiên cứu tình huống? Hãy xem các tài nguyên sau: +* [Ethics Unwrapped](https://ethicsunwrapped.utexas.edu/case-studies) - các tình huống đạo đức trong nhiều ngành công nghiệp. +* [Khóa học Đạo đức Khoa học Dữ liệu](https://www.coursera.org/learn/data-science-ethics#syllabus) - nghiên cứu các tình huống nổi bật. +* [Những nơi đã xảy ra sai sót](https://deon.drivendata.org/examples/) - danh sách kiểm tra Deon với các ví dụ. + +> 🚨 Hãy nghĩ về các nghiên cứu tình huống bạn đã thấy - bạn đã từng trải qua hoặc bị ảnh hưởng bởi một thách thức đạo đức tương tự trong cuộc sống chưa? Bạn có thể nghĩ ra ít nhất một nghiên cứu tình huống khác minh họa một trong những thách thức đạo đức mà chúng ta đã thảo luận trong phần này không? + +## Đạo đức ứng dụng + +Chúng ta đã nói về các khái niệm đạo đức, thách thức và nghiên cứu tình huống trong bối cảnh thực tế. Nhưng làm thế nào để chúng ta bắt đầu _áp dụng_ các nguyên tắc và thực hành đạo đức vào các dự án của mình? Và làm thế nào để chúng ta _hiện thực hóa_ những thực hành này để cải thiện quản trị? Hãy khám phá một số giải pháp thực tế: + +### 1. Bộ quy tắc nghề nghiệp + +Bộ quy tắc nghề nghiệp cung cấp một lựa chọn cho các tổ chức để "khuyến khích" các thành viên hỗ trợ các nguyên tắc đạo đức và tuyên bố sứ mệnh của họ. Các bộ quy tắc là _hướng dẫn đạo đức_ cho hành vi nghề nghiệp, giúp nhân viên hoặc thành viên đưa ra quyết định phù hợp với các nguyên tắc của tổ chức. Chúng chỉ hiệu quả khi có sự tuân thủ tự nguyện từ các thành viên; tuy nhiên, nhiều tổ chức cung cấp thêm phần thưởng và hình phạt để thúc đẩy sự tuân thủ từ các thành viên. + +Các ví dụ bao gồm: + + * [Oxford Munich](http://www.code-of-ethics.org/code-of-conduct/) Bộ quy tắc đạo đức + * [Hiệp hội Khoa học Dữ liệu](http://datascienceassn.org/code-of-conduct.html) Bộ quy tắc ứng xử (được tạo năm 2013) + * [ACM Code of Ethics and Professional Conduct](https://www.acm.org/code-of-ethics) (từ năm 1993) + +> 🚨 Bạn có thuộc một tổ chức kỹ thuật hoặc khoa học dữ liệu chuyên nghiệp không? Hãy khám phá trang web của họ để xem liệu họ có định nghĩa một bộ quy tắc đạo đức nghề nghiệp không. Điều này nói gì về các nguyên tắc đạo đức của họ? Họ đang "khuyến khích" các thành viên tuân theo bộ quy tắc như thế nào? + +### 2. Danh sách kiểm tra đạo đức + +Trong khi các bộ quy tắc nghề nghiệp định nghĩa hành vi _đạo đức cần thiết_ từ các nhà thực hành, chúng [có những hạn chế đã biết](https://resources.oreilly.com/examples/0636920203964/blob/master/of_oaths_and_checklists.md) trong việc thực thi, đặc biệt trong các dự án quy mô lớn. Thay vào đó, nhiều chuyên gia khoa học dữ liệu [ủng hộ danh sách kiểm tra](https://resources.oreilly.com/examples/0636920203964/blob/master/of_oaths_and_checklists.md), có thể **kết nối các nguyên tắc với thực hành** theo cách xác định và có thể hành động hơn. + +Danh sách kiểm tra chuyển đổi các câu hỏi thành các nhiệm vụ "có/không" có thể hiện thực hóa, cho phép chúng được theo dõi như một phần của quy trình phát hành sản phẩm tiêu chuẩn. + +Các ví dụ bao gồm: + * [Deon](https://deon.drivendata.org/) - danh sách kiểm tra đạo đức dữ liệu đa mục đích được tạo từ [khuyến nghị ngành](https://deon.drivendata.org/#checklist-citations) với công cụ dòng lệnh để tích hợp dễ dàng. + * [Danh sách kiểm tra kiểm toán quyền riêng tư](https://cyber.harvard.edu/ecommerce/privacyaudit.html) - cung cấp hướng dẫn chung về thực hành xử lý thông tin từ góc độ pháp lý và xã hội. + * [Danh sách kiểm tra công bằng AI](https://www.microsoft.com/en-us/research/project/ai-fairness-checklist/) - được tạo bởi các nhà thực hành AI để hỗ trợ việc áp dụng và tích hợp các kiểm tra công bằng vào chu kỳ phát triển AI. + * [22 câu hỏi về đạo đức trong dữ liệu và AI](https://medium.com/the-organization/22-questions-for-ethics-in-data-and-ai-efb68fd19429) - khung mở hơn, được cấu trúc để khám phá ban đầu các vấn đề đạo đức trong thiết kế, triển khai và bối cảnh tổ chức. + +### 3. Quy định đạo đức + +Đạo đức là về việc định nghĩa các giá trị chung và làm điều đúng _một cách tự nguyện_. **Tuân thủ** là về _tuân theo luật pháp_ nếu và nơi được định nghĩa. **Quản trị** bao quát tất cả các cách mà các tổ chức hoạt động để thực thi các nguyên tắc đạo đức và tuân thủ các luật đã được thiết lập. + +Ngày nay, quản trị có hai hình thức trong các tổ chức. Đầu tiên, đó là việc định nghĩa các nguyên tắc **AI đạo đức** và thiết lập các thực hành để hiện thực hóa việc áp dụng trên tất cả các dự án liên quan đến AI trong tổ chức. Thứ hai, đó là việc tuân thủ tất cả các quy định **bảo vệ dữ liệu** do chính phủ quy định cho các khu vực mà tổ chức hoạt động. + +Các ví dụ về quy định bảo vệ dữ liệu và quyền riêng tư: + + * `1974`, [US Privacy Act](https://www.justice.gov/opcl/privacy-act-1974) - quy định việc thu thập, sử dụng và tiết lộ thông tin cá nhân của _chính phủ liên bang_. + * `1996`, [US Health Insurance Portability & Accountability Act (HIPAA)](https://www.cdc.gov/phlp/publications/topic/hipaa.html) - bảo vệ dữ liệu sức khỏe cá nhân. + * `1998`, [US Children's Online Privacy Protection Act (COPPA)](https://www.ftc.gov/enforcement/rules/rulemaking-regulatory-reform-proceedings/childrens-online-privacy-protection-rule) - bảo vệ quyền riêng tư dữ liệu của trẻ em dưới 13 tuổi. + * `2018`, [General Data Protection Regulation (GDPR)](https://gdpr-info.eu/) - cung cấp quyền người dùng, bảo vệ dữ liệu và quyền riêng tư. + * `2018`, [California Consumer Privacy Act (CCPA)](https://www.oag.ca.gov/privacy/ccpa) cung cấp cho người tiêu dùng nhiều _quyền_ hơn đối với dữ liệu (cá nhân) của họ. + * `2021`, [Luật Bảo vệ Thông tin Cá nhân của Trung Quốc](https://www.reuters.com/world/china/china-passes-new-personal-data-privacy-law-take-effect-nov-1-2021-08-20/) vừa được thông qua, tạo ra một trong những quy định bảo vệ quyền riêng tư dữ liệu trực tuyến mạnh nhất trên toàn thế giới. + +> 🚨 Liên minh châu Âu đã định nghĩa GDPR (Quy định Bảo vệ Dữ liệu Chung) vẫn là một trong những quy định bảo vệ quyền riêng tư dữ liệu có ảnh hưởng nhất hiện nay. Bạn có biết rằng nó cũng định nghĩa [8 quyền người dùng](https://www.freeprivacypolicy.com/blog/8-user-rights-gdpr) để bảo vệ quyền riêng tư kỹ thuật số và dữ liệu cá nhân của công dân không? Tìm hiểu về những quyền này và tại sao chúng lại quan trọng. + +### 4. Văn hóa đạo đức + +Lưu ý rằng vẫn còn một khoảng cách vô hình giữa _tuân thủ_ (làm đủ để đáp ứng "tinh thần của luật pháp") và giải quyết [các vấn đề hệ thống](https://www.coursera.org/learn/data-science-ethics/home/week/4) (như sự cứng nhắc, bất đối xứng thông tin và sự không công bằng trong phân phối) có thể đẩy nhanh việc vũ khí hóa AI. + +Điều này đòi hỏi [các cách tiếp cận hợp tác để định nghĩa văn hóa đạo đức](https://towardsdatascience.com/why-ai-ethics-requires-a-culture-driven-approach-26f451afa29f) nhằm xây dựng kết nối cảm xúc và các giá trị chung nhất quán _trong các tổ chức_ trong ngành. Điều này kêu gọi [văn hóa đạo đức dữ liệu được chính thức hóa](https://www.codeforamerica.org/news/formalizing-an-ethical-data-culture/) trong các tổ chức - cho phép _bất kỳ ai_ [kéo dây Andon](https://en.wikipedia.org/wiki/Andon_(manufacturing)) (để nêu lên các mối quan ngại về đạo đức sớm trong quy trình) và làm cho _đánh giá đạo đức_ (ví dụ: trong tuyển dụng) trở thành tiêu chí cốt lõi trong việc hình thành nhóm cho các dự án AI. + +--- +## [Câu hỏi kiểm tra sau bài giảng](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/3) 🎯 +## Ôn tập & Tự học + +Các khóa học và sách giúp hiểu các khái niệm đạo đức cốt lõi và thách thức, trong khi các nghiên cứu tình huống và công cụ giúp thực hành đạo đức trong bối cảnh thực tế. Dưới đây là một vài tài nguyên để bắt đầu. + +* [Machine Learning For Beginners](https://github.com/microsoft/ML-For-Beginners/blob/main/1-Introduction/3-fairness/README.md) - bài học về Công bằng, từ Microsoft. +* [Nguyên tắc AI có trách nhiệm](https://docs.microsoft.com/en-us/learn/modules/responsible-ai-principles/) - lộ trình học miễn phí từ Microsoft Learn. +* [Đạo đức và Khoa học Dữ liệu](https://resources.oreilly.com/examples/0636920203964) - Sách điện tử O'Reilly (M. Loukides, H. Mason và các tác giả khác). +* [Đạo đức trong Khoa học Dữ liệu](https://www.coursera.org/learn/data-science-ethics#syllabus) - khóa học trực tuyến từ Đại học Michigan. +* [Ethics Unwrapped](https://ethicsunwrapped.utexas.edu/case-studies) - các nghiên cứu tình huống từ Đại học Texas. + +# Bài tập + +[Viết một nghiên cứu tình huống về đạo đức dữ liệu](assignment.md) + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/1-Introduction/02-ethics/assignment.md b/translations/vi/1-Introduction/02-ethics/assignment.md new file mode 100644 index 00000000..93ebc05c --- /dev/null +++ b/translations/vi/1-Introduction/02-ethics/assignment.md @@ -0,0 +1,33 @@ + +## Viết Một Nghiên Cứu Tình Huống Về Đạo Đức Dữ Liệu + +## Hướng dẫn + +Bạn đã học về các [Thách Thức Đạo Đức Dữ Liệu](README.md#2-ethics-challenges) và đã xem một số ví dụ về [Nghiên Cứu Tình Huống](README.md#3-case-studies) phản ánh các thách thức đạo đức dữ liệu trong bối cảnh thực tế. + +Trong bài tập này, bạn sẽ viết nghiên cứu tình huống của riêng mình phản ánh một thách thức đạo đức dữ liệu từ kinh nghiệm cá nhân của bạn, hoặc từ một bối cảnh thực tế có liên quan mà bạn quen thuộc. Chỉ cần làm theo các bước sau: + +1. `Chọn một Thách Thức Đạo Đức Dữ Liệu`. Xem [các ví dụ trong bài học](README.md#2-ethics-challenges) hoặc khám phá các ví dụ trực tuyến như [Danh Sách Kiểm Tra Deon](https://deon.drivendata.org/examples/) để lấy cảm hứng. + +2. `Mô tả một Ví Dụ Thực Tế`. Nghĩ về một tình huống mà bạn đã nghe nói đến (tin tức, nghiên cứu, v.v.) hoặc đã trải nghiệm (cộng đồng địa phương), nơi mà thách thức cụ thể này đã xảy ra. Suy nghĩ về các câu hỏi đạo đức dữ liệu liên quan đến thách thức - và thảo luận về những tác hại hoặc hậu quả không mong muốn có thể phát sinh do vấn đề này. Điểm cộng: suy nghĩ về các giải pháp hoặc quy trình có thể được áp dụng ở đây để giúp loại bỏ hoặc giảm thiểu tác động tiêu cực của thách thức này. + +3. `Cung cấp danh sách Tài Nguyên Liên Quan`. Chia sẻ một hoặc nhiều tài nguyên (liên kết đến một bài báo, bài viết blog cá nhân hoặc hình ảnh, bài nghiên cứu trực tuyến, v.v.) để chứng minh rằng đây là một sự kiện thực tế. Điểm cộng: chia sẻ các tài nguyên cũng nêu bật những tác hại và hậu quả từ sự cố, hoặc làm nổi bật các bước tích cực đã được thực hiện để ngăn chặn sự tái diễn. + +## Tiêu chí đánh giá + +Xuất sắc | Đạt yêu cầu | Cần cải thiện +--- | --- | -- | +Một hoặc nhiều thách thức đạo đức dữ liệu được xác định.

Nghiên cứu tình huống mô tả rõ ràng một sự cố thực tế phản ánh thách thức đó, và nêu bật những hậu quả hoặc tác hại không mong muốn mà nó gây ra.

Có ít nhất một tài nguyên được liên kết để chứng minh sự kiện này đã xảy ra. | Một thách thức đạo đức dữ liệu được xác định.

Ít nhất một tác hại hoặc hậu quả liên quan được thảo luận ngắn gọn.

Tuy nhiên, phần thảo luận còn hạn chế hoặc thiếu bằng chứng về sự kiện thực tế. | Một thách thức dữ liệu được xác định.

Tuy nhiên, phần mô tả hoặc tài nguyên không phản ánh đầy đủ thách thức hoặc không chứng minh được sự kiện thực tế. | + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/1-Introduction/03-defining-data/README.md b/translations/vi/1-Introduction/03-defining-data/README.md new file mode 100644 index 00000000..6c7ad2bd --- /dev/null +++ b/translations/vi/1-Introduction/03-defining-data/README.md @@ -0,0 +1,84 @@ + +# Định nghĩa Dữ liệu + +|![ Sketchnote của [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/03-DefiningData.png)| +|:---:| +|Định nghĩa Dữ liệu - _Sketchnote của [@nitya](https://twitter.com/nitya)_ | + +Dữ liệu là các sự kiện, thông tin, quan sát và đo lường được sử dụng để khám phá và hỗ trợ các quyết định có cơ sở. Một điểm dữ liệu là một đơn vị dữ liệu duy nhất trong một tập dữ liệu, là tập hợp các điểm dữ liệu. Tập dữ liệu có thể có nhiều định dạng và cấu trúc khác nhau, thường dựa trên nguồn gốc của nó hoặc nơi dữ liệu được thu thập. Ví dụ, thu nhập hàng tháng của một công ty có thể được lưu trong bảng tính, nhưng dữ liệu nhịp tim theo giờ từ một đồng hồ thông minh có thể ở định dạng [JSON](https://stackoverflow.com/a/383699). Các nhà khoa học dữ liệu thường làm việc với nhiều loại dữ liệu khác nhau trong một tập dữ liệu. + +Bài học này tập trung vào việc xác định và phân loại dữ liệu dựa trên đặc điểm và nguồn gốc của nó. + +## [Câu hỏi trước bài giảng](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/4) +## Cách mô tả dữ liệu + +### Dữ liệu thô +Dữ liệu thô là dữ liệu được lấy từ nguồn của nó ở trạng thái ban đầu và chưa được phân tích hay tổ chức. Để hiểu được điều gì đang xảy ra với một tập dữ liệu, nó cần được tổ chức thành một định dạng mà con người cũng như công nghệ họ sử dụng có thể hiểu và phân tích thêm. Cấu trúc của một tập dữ liệu mô tả cách nó được tổ chức và có thể được phân loại thành có cấu trúc, không có cấu trúc và bán cấu trúc. Các loại cấu trúc này sẽ khác nhau tùy thuộc vào nguồn gốc nhưng cuối cùng sẽ thuộc một trong ba loại này. + +### Dữ liệu định lượng +Dữ liệu định lượng là các quan sát số trong một tập dữ liệu và thường có thể được phân tích, đo lường và sử dụng trong toán học. Một số ví dụ về dữ liệu định lượng là: dân số của một quốc gia, chiều cao của một người hoặc thu nhập hàng quý của một công ty. Với một số phân tích bổ sung, dữ liệu định lượng có thể được sử dụng để khám phá các xu hướng theo mùa của Chỉ số Chất lượng Không khí (AQI) hoặc ước tính xác suất tắc đường vào một ngày làm việc điển hình. + +### Dữ liệu định tính +Dữ liệu định tính, còn được gọi là dữ liệu phân loại, là dữ liệu không thể đo lường một cách khách quan như các quan sát của dữ liệu định lượng. Nó thường là các định dạng dữ liệu chủ quan khác nhau, ghi lại chất lượng của một sản phẩm hoặc quy trình. Đôi khi, dữ liệu định tính là số nhưng không được sử dụng trong toán học, như số điện thoại hoặc dấu thời gian. Một số ví dụ về dữ liệu định tính là: bình luận video, nhãn hiệu và mẫu xe hơi hoặc màu sắc yêu thích của những người bạn thân nhất của bạn. Dữ liệu định tính có thể được sử dụng để hiểu sản phẩm nào được người tiêu dùng yêu thích nhất hoặc xác định các từ khóa phổ biến trong hồ sơ xin việc. + +### Dữ liệu có cấu trúc +Dữ liệu có cấu trúc là dữ liệu được tổ chức thành các hàng và cột, trong đó mỗi hàng sẽ có cùng một tập hợp các cột. Các cột đại diện cho một giá trị của một loại cụ thể và sẽ được xác định bằng một tên mô tả giá trị đó đại diện cho điều gì, trong khi các hàng chứa các giá trị thực tế. Các cột thường có một tập hợp các quy tắc hoặc hạn chế cụ thể về giá trị để đảm bảo rằng các giá trị chính xác đại diện cho cột. Ví dụ, hãy tưởng tượng một bảng tính khách hàng trong đó mỗi hàng phải có một số điện thoại và các số điện thoại không bao giờ chứa ký tự chữ cái. Có thể có các quy tắc áp dụng cho cột số điện thoại để đảm bảo nó không bao giờ trống và chỉ chứa số. + +Một lợi ích của dữ liệu có cấu trúc là nó có thể được tổ chức theo cách mà nó có thể liên quan đến dữ liệu có cấu trúc khác. Tuy nhiên, vì dữ liệu được thiết kế để được tổ chức theo một cách cụ thể, việc thay đổi cấu trúc tổng thể của nó có thể tốn rất nhiều công sức. Ví dụ, thêm một cột email vào bảng tính khách hàng mà không được để trống có nghĩa là bạn sẽ cần tìm cách thêm các giá trị này vào các hàng khách hàng hiện có trong tập dữ liệu. + +Ví dụ về dữ liệu có cấu trúc: bảng tính, cơ sở dữ liệu quan hệ, số điện thoại, sao kê ngân hàng + +### Dữ liệu không có cấu trúc +Dữ liệu không có cấu trúc thường không thể được phân loại thành các hàng hoặc cột và không chứa một định dạng hoặc tập hợp các quy tắc để tuân theo. Vì dữ liệu không có cấu trúc có ít hạn chế hơn về cấu trúc của nó, nên việc thêm thông tin mới dễ dàng hơn so với một tập dữ liệu có cấu trúc. Nếu một cảm biến ghi lại dữ liệu áp suất khí quyển mỗi 2 phút nhận được một bản cập nhật cho phép nó đo và ghi lại nhiệt độ, thì không cần phải thay đổi dữ liệu hiện có nếu nó không có cấu trúc. Tuy nhiên, điều này có thể khiến việc phân tích hoặc điều tra loại dữ liệu này mất nhiều thời gian hơn. Ví dụ, một nhà khoa học muốn tìm nhiệt độ trung bình của tháng trước từ dữ liệu của cảm biến, nhưng phát hiện ra rằng cảm biến đã ghi lại một "e" trong một số dữ liệu của nó để ghi chú rằng nó bị hỏng thay vì một con số thông thường, điều này có nghĩa là dữ liệu không đầy đủ. + +Ví dụ về dữ liệu không có cấu trúc: tệp văn bản, tin nhắn văn bản, tệp video + +### Dữ liệu bán cấu trúc +Dữ liệu bán cấu trúc có các đặc điểm khiến nó là sự kết hợp giữa dữ liệu có cấu trúc và không có cấu trúc. Nó thường không tuân theo định dạng hàng và cột nhưng được tổ chức theo cách được coi là có cấu trúc và có thể tuân theo một định dạng cố định hoặc tập hợp các quy tắc. Cấu trúc sẽ khác nhau giữa các nguồn, chẳng hạn như một hệ thống phân cấp được xác định rõ ràng đến một thứ gì đó linh hoạt hơn cho phép tích hợp thông tin mới dễ dàng. Siêu dữ liệu là các chỉ số giúp quyết định cách dữ liệu được tổ chức và lưu trữ và sẽ có các tên khác nhau, dựa trên loại dữ liệu. Một số tên phổ biến cho siêu dữ liệu là thẻ, phần tử, thực thể và thuộc tính. Ví dụ, một tin nhắn email điển hình sẽ có tiêu đề, nội dung và một tập hợp người nhận và có thể được tổ chức theo người gửi hoặc thời gian gửi. + +Ví dụ về dữ liệu bán cấu trúc: HTML, tệp CSV, JavaScript Object Notation (JSON) + +## Nguồn dữ liệu + +Nguồn dữ liệu là vị trí ban đầu nơi dữ liệu được tạo ra hoặc nơi nó "tồn tại" và sẽ khác nhau tùy thuộc vào cách và thời điểm nó được thu thập. Dữ liệu được tạo ra bởi người dùng của nó được gọi là dữ liệu sơ cấp, trong khi dữ liệu thứ cấp đến từ một nguồn đã thu thập dữ liệu để sử dụng chung. Ví dụ, một nhóm các nhà khoa học thu thập các quan sát trong một khu rừng nhiệt đới sẽ được coi là dữ liệu sơ cấp và nếu họ quyết định chia sẻ nó với các nhà khoa học khác, nó sẽ được coi là dữ liệu thứ cấp đối với những người sử dụng nó. + +Cơ sở dữ liệu là một nguồn phổ biến và dựa vào hệ thống quản lý cơ sở dữ liệu để lưu trữ và duy trì dữ liệu, nơi người dùng sử dụng các lệnh gọi là truy vấn để khám phá dữ liệu. Các tệp như nguồn dữ liệu có thể là tệp âm thanh, hình ảnh và video cũng như bảng tính như Excel. Các nguồn internet là một vị trí phổ biến để lưu trữ dữ liệu, nơi có thể tìm thấy cả cơ sở dữ liệu và tệp. Các giao diện lập trình ứng dụng, còn được gọi là API, cho phép lập trình viên tạo ra các cách để chia sẻ dữ liệu với người dùng bên ngoài thông qua internet, trong khi quá trình thu thập dữ liệu từ web trích xuất dữ liệu từ một trang web. [Các bài học trong Làm việc với Dữ liệu](../../../../../../../../../2-Working-With-Data) tập trung vào cách sử dụng các nguồn dữ liệu khác nhau. + +## Kết luận + +Trong bài học này, chúng ta đã học: + +- Dữ liệu là gì +- Cách mô tả dữ liệu +- Cách phân loại và phân nhóm dữ liệu +- Nơi có thể tìm thấy dữ liệu + +## 🚀 Thử thách + +Kaggle là một nguồn tuyệt vời cho các tập dữ liệu mở. Sử dụng [công cụ tìm kiếm tập dữ liệu](https://www.kaggle.com/datasets) để tìm một số tập dữ liệu thú vị và phân loại 3-5 tập dữ liệu theo tiêu chí sau: + +- Dữ liệu là định lượng hay định tính? +- Dữ liệu có cấu trúc, không có cấu trúc hay bán cấu trúc? + +## [Câu hỏi sau bài giảng](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/5) + +## Ôn tập & Tự học + +- Đơn vị Microsoft Learn này, có tiêu đề [Phân loại dữ liệu của bạn](https://docs.microsoft.com/en-us/learn/modules/choose-storage-approach-in-azure/2-classify-data), có một phân tích chi tiết về dữ liệu có cấu trúc, bán cấu trúc và không có cấu trúc. + +## Bài tập + +[Phân loại Tập dữ liệu](assignment.md) + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/1-Introduction/03-defining-data/assignment.md b/translations/vi/1-Introduction/03-defining-data/assignment.md new file mode 100644 index 00000000..9d876384 --- /dev/null +++ b/translations/vi/1-Introduction/03-defining-data/assignment.md @@ -0,0 +1,79 @@ + +# Phân loại Bộ Dữ liệu + +## Hướng dẫn + +Làm theo các yêu cầu trong bài tập này để xác định và phân loại dữ liệu với mỗi loại dữ liệu sau: + +**Loại cấu trúc**: Có cấu trúc, Bán cấu trúc, hoặc Không cấu trúc + +**Loại giá trị**: Định tính hoặc Định lượng + +**Loại nguồn**: Sơ cấp hoặc Thứ cấp + +1. Một công ty đã được mua lại và hiện có công ty mẹ. Các nhà khoa học dữ liệu đã nhận được một bảng tính chứa số điện thoại khách hàng từ công ty mẹ. + +Loại cấu trúc: + +Loại giá trị: + +Loại nguồn: + +--- + +2. Một chiếc đồng hồ thông minh đang thu thập dữ liệu nhịp tim từ người đeo, và dữ liệu thô được lưu ở định dạng JSON. + +Loại cấu trúc: + +Loại giá trị: + +Loại nguồn: + +--- + +3. Một khảo sát tại nơi làm việc về tinh thần nhân viên được lưu trữ trong một tệp CSV. + +Loại cấu trúc: + +Loại giá trị: + +Loại nguồn: + +--- + +4. Các nhà vật lý thiên văn đang truy cập cơ sở dữ liệu về các thiên hà được thu thập bởi một tàu thăm dò không gian. Dữ liệu chứa số lượng hành tinh trong mỗi thiên hà. + +Loại cấu trúc: + +Loại giá trị: + +Loại nguồn: + +--- + +5. Một ứng dụng tài chính cá nhân sử dụng API để kết nối với các tài khoản tài chính của người dùng nhằm tính toán giá trị tài sản ròng của họ. Người dùng có thể xem tất cả các giao dịch của mình ở định dạng hàng và cột, trông giống như một bảng tính. + +Loại cấu trúc: + +Loại giá trị: + +Loại nguồn: + +## Tiêu chí đánh giá + +Xuất sắc | Đạt yêu cầu | Cần cải thiện +--- | --- | -- | +Xác định đúng tất cả các loại cấu trúc, giá trị và nguồn | Xác định đúng 3 loại cấu trúc, giá trị và nguồn | Xác định đúng 2 hoặc ít hơn các loại cấu trúc, giá trị và nguồn | + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/1-Introduction/04-stats-and-probability/README.md b/translations/vi/1-Introduction/04-stats-and-probability/README.md new file mode 100644 index 00000000..c2e18dc0 --- /dev/null +++ b/translations/vi/1-Introduction/04-stats-and-probability/README.md @@ -0,0 +1,277 @@ + +# Giới thiệu Ngắn gọn về Thống kê và Xác suất + +|![ Sketchnote bởi [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/04-Statistics-Probability.png)| +|:---:| +| Thống kê và Xác suất - _Sketchnote bởi [@nitya](https://twitter.com/nitya)_ | + +Lý thuyết Thống kê và Xác suất là hai lĩnh vực liên quan chặt chẽ trong Toán học và rất quan trọng đối với Khoa học Dữ liệu. Bạn có thể làm việc với dữ liệu mà không cần kiến thức sâu về toán học, nhưng vẫn tốt hơn nếu biết ít nhất một số khái niệm cơ bản. Dưới đây là một phần giới thiệu ngắn gọn để giúp bạn bắt đầu. + +[![Video Giới thiệu](../../../../translated_images/video-prob-and-stats.e4282e5efa2f2543400843ed98b1057065c9600cebfc8a728e8931b5702b2ae4.vi.png)](https://youtu.be/Z5Zy85g4Yjw) + +## [Câu hỏi trước bài giảng](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/6) + +## Xác suất và Biến ngẫu nhiên + +**Xác suất** là một số nằm trong khoảng từ 0 đến 1, biểu thị mức độ khả năng xảy ra của một **sự kiện**. Nó được định nghĩa là số kết quả tích cực (dẫn đến sự kiện), chia cho tổng số kết quả, với điều kiện tất cả các kết quả đều có khả năng xảy ra như nhau. Ví dụ, khi chúng ta tung một con xúc xắc, xác suất để có được một số chẵn là 3/6 = 0.5. + +Khi nói về các sự kiện, chúng ta sử dụng **biến ngẫu nhiên**. Ví dụ, biến ngẫu nhiên đại diện cho số nhận được khi tung xúc xắc sẽ có giá trị từ 1 đến 6. Tập hợp các số từ 1 đến 6 được gọi là **không gian mẫu**. Chúng ta có thể nói về xác suất của một biến ngẫu nhiên nhận một giá trị nhất định, ví dụ P(X=3)=1/6. + +Biến ngẫu nhiên trong ví dụ trước được gọi là **rời rạc**, vì nó có không gian mẫu đếm được, tức là có các giá trị riêng biệt có thể liệt kê. Có những trường hợp không gian mẫu là một khoảng số thực, hoặc toàn bộ tập hợp số thực. Những biến như vậy được gọi là **liên tục**. Một ví dụ điển hình là thời gian xe buýt đến. + +## Phân phối Xác suất + +Trong trường hợp biến ngẫu nhiên rời rạc, rất dễ mô tả xác suất của mỗi sự kiện bằng một hàm P(X). Đối với mỗi giá trị *s* từ không gian mẫu *S*, hàm sẽ trả về một số từ 0 đến 1, sao cho tổng tất cả các giá trị của P(X=s) cho tất cả các sự kiện bằng 1. + +Phân phối rời rạc nổi tiếng nhất là **phân phối đồng đều**, trong đó có một không gian mẫu gồm N phần tử, với xác suất bằng nhau là 1/N cho mỗi phần tử. + +Mô tả phân phối xác suất của một biến liên tục khó hơn, với các giá trị được lấy từ một khoảng [a,b], hoặc toàn bộ tập hợp số thực ℝ. Hãy xem xét trường hợp thời gian xe buýt đến. Thực tế, đối với mỗi thời gian đến chính xác *t*, xác suất xe buýt đến đúng thời điểm đó là 0! + +> Bây giờ bạn đã biết rằng các sự kiện có xác suất bằng 0 vẫn xảy ra, và rất thường xuyên! Ít nhất là mỗi lần xe buýt đến! + +Chúng ta chỉ có thể nói về xác suất của một biến nằm trong một khoảng giá trị nhất định, ví dụ P(t1≤X2). Trong trường hợp này, phân phối xác suất được mô tả bằng **hàm mật độ xác suất** p(x), sao cho: + +![P(t_1\le X1, x2, ..., xn. Chúng ta có thể định nghĩa **giá trị trung bình** (hoặc **trung bình số học**) của dãy theo cách truyền thống là (x1+x2+xn)/n. Khi kích thước mẫu tăng lên (tức là lấy giới hạn với n→∞), chúng ta sẽ thu được giá trị trung bình (còn gọi là **kỳ vọng**) của phân phối. Chúng ta sẽ ký hiệu kỳ vọng là **E**(x). + +> Có thể chứng minh rằng đối với bất kỳ phân phối rời rạc nào với các giá trị {x1, x2, ..., xN} và các xác suất tương ứng p1, p2, ..., pN, kỳ vọng sẽ bằng E(X)=x1p1+x2p2+...+xNpN. + +Để xác định mức độ phân tán của các giá trị, chúng ta có thể tính phương sai σ2 = ∑(xi - μ)2/n, trong đó μ là giá trị trung bình của dãy. Giá trị σ được gọi là **độ lệch chuẩn**, và σ2 được gọi là **phương sai**. + +## Giá trị Mode, Median và Quartiles + +Đôi khi, giá trị trung bình không đại diện đầy đủ cho giá trị "điển hình" của dữ liệu. Ví dụ, khi có một vài giá trị cực đoan hoàn toàn nằm ngoài phạm vi, chúng có thể ảnh hưởng đến giá trị trung bình. Một chỉ số tốt khác là **median**, giá trị mà một nửa số điểm dữ liệu thấp hơn nó, và nửa còn lại cao hơn. + +Để giúp chúng ta hiểu phân phối dữ liệu, rất hữu ích khi nói về **quartiles**: + +* Quartile thứ nhất, hoặc Q1, là giá trị mà 25% dữ liệu nằm dưới nó +* Quartile thứ ba, hoặc Q3, là giá trị mà 75% dữ liệu nằm dưới nó + +Chúng ta có thể biểu diễn mối quan hệ giữa median và quartiles bằng một biểu đồ gọi là **box plot**: + + + +Ở đây chúng ta cũng tính **khoảng giữa các quartile** IQR=Q3-Q1, và các giá trị **ngoại lệ** - những giá trị nằm ngoài các giới hạn [Q1-1.5*IQR,Q3+1.5*IQR]. + +Đối với phân phối hữu hạn chứa một số lượng nhỏ các giá trị có thể, một giá trị "điển hình" tốt là giá trị xuất hiện thường xuyên nhất, được gọi là **mode**. Nó thường được áp dụng cho dữ liệu phân loại, chẳng hạn như màu sắc. Hãy xem xét tình huống khi chúng ta có hai nhóm người - một nhóm thích màu đỏ, và nhóm kia thích màu xanh. Nếu chúng ta mã hóa màu sắc bằng các con số, giá trị trung bình cho màu yêu thích sẽ nằm đâu đó trong phổ màu cam-xanh lá, điều này không phản ánh sở thích thực sự của cả hai nhóm. Tuy nhiên, mode sẽ là một trong hai màu, hoặc cả hai màu, nếu số người chọn chúng bằng nhau (trong trường hợp này chúng ta gọi mẫu là **đa mode**). + +## Dữ liệu Thực tế + +Khi chúng ta phân tích dữ liệu từ thực tế, chúng thường không phải là biến ngẫu nhiên theo nghĩa rằng chúng ta không thực hiện các thí nghiệm với kết quả không xác định. Ví dụ, hãy xem xét một đội bóng chày và dữ liệu cơ thể của họ, chẳng hạn như chiều cao, cân nặng và tuổi. Những con số này không hoàn toàn ngẫu nhiên, nhưng chúng ta vẫn có thể áp dụng các khái niệm toán học tương tự. Ví dụ, một dãy cân nặng của mọi người có thể được coi là một dãy giá trị được lấy từ một biến ngẫu nhiên nào đó. Dưới đây là dãy cân nặng của các cầu thủ bóng chày thực tế từ [Major League Baseball](http://mlb.mlb.com/index.jsp), được lấy từ [bộ dữ liệu này](http://wiki.stat.ucla.edu/socr/index.php/SOCR_Data_MLB_HeightsWeights) (để tiện lợi, chỉ hiển thị 20 giá trị đầu tiên): + +``` +[180.0, 215.0, 210.0, 210.0, 188.0, 176.0, 209.0, 200.0, 231.0, 180.0, 188.0, 180.0, 185.0, 160.0, 180.0, 185.0, 197.0, 189.0, 185.0, 219.0] +``` + +> **Note**: Để xem ví dụ về cách làm việc với bộ dữ liệu này, hãy xem [notebook đi kèm](notebook.ipynb). Ngoài ra còn có một số thử thách trong bài học này, và bạn có thể hoàn thành chúng bằng cách thêm một số mã vào notebook đó. Nếu bạn không chắc cách thao tác với dữ liệu, đừng lo lắng - chúng ta sẽ quay lại làm việc với dữ liệu bằng Python sau này. Nếu bạn không biết cách chạy mã trong Jupyter Notebook, hãy xem [bài viết này](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). + +Dưới đây là biểu đồ box plot hiển thị giá trị trung bình, median và quartiles cho dữ liệu của chúng ta: + +![Weight Box Plot](../../../../translated_images/weight-boxplot.1dbab1c03af26f8a008fff4e17680082c8ab147d6df646cbac440bbf8f5b9c42.vi.png) + +Vì dữ liệu của chúng ta chứa thông tin về các **vai trò** của cầu thủ, chúng ta cũng có thể tạo box plot theo vai trò - điều này sẽ cho phép chúng ta hiểu cách các giá trị tham số khác nhau giữa các vai trò. Lần này chúng ta sẽ xem xét chiều cao: + +![Box plot by role](../../../../translated_images/boxplot_byrole.036b27a1c3f52d42f66fba2324ec5cde0a1bca6a01a619eeb0ce7cd054b2527b.vi.png) + +Biểu đồ này cho thấy rằng, trung bình, chiều cao của các cầu thủ ở vị trí đầu tiên cao hơn chiều cao của các cầu thủ ở vị trí thứ hai. Sau này trong bài học, chúng ta sẽ học cách kiểm tra giả thuyết này một cách chính thức hơn, và cách chứng minh rằng dữ liệu của chúng ta có ý nghĩa thống kê để thể hiện điều đó. + +> Khi làm việc với dữ liệu thực tế, chúng ta giả định rằng tất cả các điểm dữ liệu là các mẫu được lấy từ một phân phối xác suất nào đó. Giả định này cho phép chúng ta áp dụng các kỹ thuật học máy và xây dựng các mô hình dự đoán hoạt động. + +Để xem phân phối của dữ liệu của chúng ta, chúng ta có thể vẽ một biểu đồ gọi là **histogram**. Trục X sẽ chứa một số khoảng cân nặng khác nhau (gọi là **bins**), và trục Y sẽ hiển thị số lần mẫu biến ngẫu nhiên nằm trong một khoảng nhất định. + +![Histogram of real world data](../../../../translated_images/weight-histogram.bfd00caf7fc30b145b21e862dba7def41c75635d5280de25d840dd7f0b00545e.vi.png) + +Từ biểu đồ histogram này, bạn có thể thấy rằng tất cả các giá trị tập trung xung quanh một giá trị trung bình cân nặng nhất định, và càng xa giá trị trung bình đó - càng ít giá trị cân nặng được gặp. Tức là, rất khó xảy ra rằng cân nặng của một cầu thủ bóng chày sẽ rất khác so với cân nặng trung bình. Phương sai của cân nặng cho thấy mức độ mà các cân nặng có khả năng khác biệt so với giá trị trung bình. + +> Nếu chúng ta lấy cân nặng của những người khác, không phải từ giải bóng chày, phân phối có thể sẽ khác. Tuy nhiên, hình dạng của phân phối sẽ giống nhau, nhưng giá trị trung bình và phương sai sẽ thay đổi. Vì vậy, nếu chúng ta huấn luyện mô hình của mình trên các cầu thủ bóng chày, nó có thể đưa ra kết quả sai khi áp dụng cho sinh viên của một trường đại học, vì phân phối cơ bản là khác nhau. + +## Phân phối Chuẩn + +Phân phối cân nặng mà chúng ta đã thấy ở trên rất điển hình, và nhiều phép đo từ thực tế tuân theo cùng một loại phân phối, nhưng với giá trị trung bình và phương sai khác nhau. Phân phối này được gọi là **phân phối chuẩn**, và nó đóng vai trò rất quan trọng trong thống kê. + +Sử dụng phân phối chuẩn là cách đúng để tạo ra các cân nặng ngẫu nhiên của các cầu thủ bóng chày tiềm năng. Một khi chúng ta biết cân nặng trung bình `mean` và độ lệch chuẩn `std`, chúng ta có thể tạo ra 1000 mẫu cân nặng theo cách sau: + +```python +samples = np.random.normal(mean,std,1000) +``` + +Nếu chúng ta vẽ biểu đồ histogram của các mẫu được tạo ra, chúng ta sẽ thấy hình ảnh rất giống với hình ảnh được hiển thị ở trên. Và nếu chúng ta tăng số lượng mẫu và số lượng bins, chúng ta có thể tạo ra hình ảnh của một phân phối chuẩn gần với lý tưởng hơn: + +![Normal Distribution with mean=0 and std.dev=1](../../../../translated_images/normal-histogram.dfae0d67c202137d552d0015fb87581eca263925e512404f3c12d8885315432e.vi.png) + +*Phân phối Chuẩn với mean=0 và std.dev=1* + +## Khoảng Tin cậy + +Khi chúng ta nói về cân nặng của các cầu thủ bóng chày, chúng ta giả định rằng có một **biến ngẫu nhiên W** tương ứng với phân phối xác suất lý tưởng của cân nặng của tất cả các cầu thủ bóng chày (gọi là **quần thể**). Dãy cân nặng của chúng ta tương ứng với một tập hợp con của tất cả các cầu thủ bóng chày mà chúng ta gọi là **mẫu**. Một câu hỏi thú vị là, liệu chúng ta có thể biết các tham số của phân phối W, tức là giá trị trung bình và phương sai của quần thể? + +Câu trả lời dễ nhất là tính giá trị trung bình và phương sai của mẫu của chúng ta. Tuy nhiên, có thể xảy ra trường hợp mẫu ngẫu nhiên của chúng ta không đại diện chính xác cho toàn bộ quần thể. Vì vậy, có ý nghĩa khi nói về **khoảng tin cậy**. +> **Khoảng tin cậy** là sự ước tính giá trị trung bình thực của tổng thể dựa trên mẫu của chúng ta, với độ chính xác trong một xác suất nhất định (hoặc **mức độ tin cậy**). +Giả sử chúng ta có một mẫu X1, ..., Xn từ phân phối của mình. Mỗi lần chúng ta lấy mẫu từ phân phối, chúng ta sẽ thu được một giá trị trung bình μ khác nhau. Do đó, μ có thể được coi là một biến ngẫu nhiên. Một **khoảng tin cậy** với độ tin cậy p là một cặp giá trị (Lp,Rp), sao cho **P**(Lp≤μ≤Rp) = p, tức là xác suất giá trị trung bình đo được nằm trong khoảng này bằng p. + +Việc giải thích chi tiết cách tính các khoảng tin cậy vượt quá phạm vi giới thiệu ngắn gọn này. Một số chi tiết thêm có thể được tìm thấy [trên Wikipedia](https://en.wikipedia.org/wiki/Confidence_interval). Tóm lại, chúng ta định nghĩa phân phối của giá trị trung bình mẫu được tính toán so với giá trị trung bình thực của tổng thể, được gọi là **phân phối Student**. + +> **Sự thật thú vị**: Phân phối Student được đặt tên theo nhà toán học William Sealy Gosset, người đã xuất bản bài báo của mình dưới bút danh "Student". Ông làm việc tại nhà máy bia Guinness, và theo một số nguồn tin, chủ của ông không muốn công chúng biết rằng họ đang sử dụng các kiểm định thống kê để xác định chất lượng nguyên liệu thô. + +Nếu chúng ta muốn ước lượng giá trị trung bình μ của tổng thể với độ tin cậy p, chúng ta cần lấy *phân vị (1-p)/2* của phân phối Student A, giá trị này có thể được lấy từ bảng hoặc tính toán bằng các hàm tích hợp trong phần mềm thống kê (ví dụ: Python, R, v.v.). Sau đó, khoảng cho μ sẽ được tính bằng X±A*D/√n, trong đó X là giá trị trung bình của mẫu, D là độ lệch chuẩn. + +> **Lưu ý**: Chúng ta cũng bỏ qua việc thảo luận về một khái niệm quan trọng là [bậc tự do](https://en.wikipedia.org/wiki/Degrees_of_freedom_(statistics)), điều này rất quan trọng liên quan đến phân phối Student. Bạn có thể tham khảo các sách thống kê đầy đủ hơn để hiểu sâu hơn về khái niệm này. + +Một ví dụ về tính khoảng tin cậy cho cân nặng và chiều cao được đưa ra trong [notebook đi kèm](notebook.ipynb). + +| p | Giá trị trung bình cân nặng | +|------|-----------------------------| +| 0.85 | 201.73±0.94 | +| 0.90 | 201.73±1.08 | +| 0.95 | 201.73±1.28 | + +Lưu ý rằng độ tin cậy càng cao thì khoảng tin cậy càng rộng. + +## Kiểm định giả thuyết + +Trong tập dữ liệu các cầu thủ bóng chày, có các vai trò khác nhau của cầu thủ, được tóm tắt dưới đây (xem [notebook đi kèm](notebook.ipynb) để biết cách tính bảng này): + +| Vai trò | Chiều cao | Cân nặng | Số lượng | +|--------------------|-----------|----------|----------| +| Catcher | 72.723684 | 204.328947 | 76 | +| Designated_Hitter | 74.222222 | 220.888889 | 18 | +| First_Baseman | 74.000000 | 213.109091 | 55 | +| Outfielder | 73.010309 | 199.113402 | 194 | +| Relief_Pitcher | 74.374603 | 203.517460 | 315 | +| Second_Baseman | 71.362069 | 184.344828 | 58 | +| Shortstop | 71.903846 | 182.923077 | 52 | +| Starting_Pitcher | 74.719457 | 205.163636 | 221 | +| Third_Baseman | 73.044444 | 200.955556 | 45 | + +Chúng ta có thể nhận thấy rằng chiều cao trung bình của các cầu thủ First Basemen cao hơn so với Second Basemen. Do đó, chúng ta có thể bị cám dỗ để kết luận rằng **các cầu thủ First Basemen cao hơn các cầu thủ Second Basemen**. + +> Phát biểu này được gọi là **giả thuyết**, vì chúng ta không biết liệu điều này có thực sự đúng hay không. + +Tuy nhiên, không phải lúc nào cũng rõ ràng liệu chúng ta có thể đưa ra kết luận này hay không. Từ thảo luận ở trên, chúng ta biết rằng mỗi giá trị trung bình có một khoảng tin cậy liên quan, và do đó sự khác biệt này có thể chỉ là một sai số thống kê. Chúng ta cần một cách chính thức hơn để kiểm tra giả thuyết của mình. + +Hãy tính các khoảng tin cậy riêng biệt cho chiều cao của các cầu thủ First Basemen và Second Basemen: + +| Độ tin cậy | First Basemen | Second Basemen | +|------------|-----------------|-----------------| +| 0.85 | 73.62..74.38 | 71.04..71.69 | +| 0.90 | 73.56..74.44 | 70.99..71.73 | +| 0.95 | 73.47..74.53 | 70.92..71.81 | + +Chúng ta có thể thấy rằng không có khoảng tin cậy nào bị chồng lấn. Điều này chứng minh giả thuyết rằng các cầu thủ First Basemen cao hơn các cầu thủ Second Basemen. + +Một cách chính thức hơn, vấn đề chúng ta đang giải quyết là xem liệu **hai phân phối xác suất có giống nhau hay không**, hoặc ít nhất có cùng tham số. Tùy thuộc vào phân phối, chúng ta cần sử dụng các kiểm định khác nhau. Nếu chúng ta biết rằng các phân phối của mình là chuẩn, chúng ta có thể áp dụng **[kiểm định Student t-test](https://en.wikipedia.org/wiki/Student%27s_t-test)**. + +Trong kiểm định Student t-test, chúng ta tính toán một giá trị gọi là **t-value**, chỉ ra sự khác biệt giữa các giá trị trung bình, có tính đến phương sai. Người ta chứng minh rằng t-value tuân theo **phân phối Student**, điều này cho phép chúng ta lấy giá trị ngưỡng cho một mức độ tin cậy **p** nhất định (giá trị này có thể được tính toán hoặc tra cứu trong các bảng số). Sau đó, chúng ta so sánh t-value với giá trị ngưỡng này để chấp nhận hoặc bác bỏ giả thuyết. + +Trong Python, chúng ta có thể sử dụng gói **SciPy**, bao gồm hàm `ttest_ind` (cùng với nhiều hàm thống kê hữu ích khác!). Hàm này tính toán t-value cho chúng ta, và cũng thực hiện tra cứu ngược giá trị p-value, để chúng ta chỉ cần nhìn vào độ tin cậy để đưa ra kết luận. + +Ví dụ, so sánh giữa chiều cao của các cầu thủ First Basemen và Second Basemen cho chúng ta kết quả sau: +```python +from scipy.stats import ttest_ind + +tval, pval = ttest_ind(df.loc[df['Role']=='First_Baseman',['Height']], df.loc[df['Role']=='Designated_Hitter',['Height']],equal_var=False) +print(f"T-value = {tval[0]:.2f}\nP-value: {pval[0]}") +``` +``` +T-value = 7.65 +P-value: 9.137321189738925e-12 +``` +Trong trường hợp của chúng ta, giá trị p-value rất thấp, điều này có nghĩa là có bằng chứng mạnh mẽ ủng hộ rằng các cầu thủ First Basemen cao hơn. + +Cũng có nhiều loại giả thuyết khác mà chúng ta có thể muốn kiểm tra, ví dụ: +* Chứng minh rằng một mẫu nhất định tuân theo một phân phối nào đó. Trong trường hợp của chúng ta, chúng ta đã giả định rằng chiều cao được phân phối chuẩn, nhưng điều này cần được xác minh thống kê chính thức. +* Chứng minh rằng giá trị trung bình của một mẫu tương ứng với một giá trị được xác định trước. +* So sánh giá trị trung bình của một số mẫu (ví dụ: sự khác biệt về mức độ hạnh phúc giữa các nhóm tuổi khác nhau). + +## Định luật số lớn và Định lý giới hạn trung tâm + +Một trong những lý do tại sao phân phối chuẩn lại quan trọng là **định lý giới hạn trung tâm**. Giả sử chúng ta có một mẫu lớn gồm N giá trị độc lập X1, ..., XN, được lấy mẫu từ bất kỳ phân phối nào với giá trị trung bình μ và phương sai σ2. Sau đó, khi N đủ lớn (nói cách khác, khi N→∞), giá trị trung bình ΣiXi sẽ được phân phối chuẩn, với giá trị trung bình μ và phương sai σ2/N. + +> Một cách khác để diễn giải định lý giới hạn trung tâm là nói rằng bất kể phân phối ban đầu, khi bạn tính giá trị trung bình của tổng các giá trị biến ngẫu nhiên, bạn sẽ thu được phân phối chuẩn. + +Từ định lý giới hạn trung tâm, cũng có thể suy ra rằng, khi N→∞, xác suất giá trị trung bình mẫu bằng μ sẽ tiến tới 1. Điều này được gọi là **định luật số lớn**. + +## Hiệp phương sai và Tương quan + +Một trong những điều mà Khoa học Dữ liệu làm là tìm kiếm mối quan hệ giữa các dữ liệu. Chúng ta nói rằng hai dãy số **tương quan** khi chúng thể hiện hành vi tương tự tại cùng một thời điểm, tức là chúng cùng tăng/giảm đồng thời, hoặc một dãy tăng khi dãy kia giảm và ngược lại. Nói cách khác, dường như có một mối quan hệ nào đó giữa hai dãy số. + +> Tương quan không nhất thiết chỉ ra mối quan hệ nhân quả giữa hai dãy số; đôi khi cả hai biến có thể phụ thuộc vào một nguyên nhân bên ngoài, hoặc có thể chỉ là ngẫu nhiên mà hai dãy số tương quan. Tuy nhiên, tương quan toán học mạnh là một chỉ báo tốt rằng hai biến có liên quan đến nhau theo một cách nào đó. + +Về mặt toán học, khái niệm chính thể hiện mối quan hệ giữa hai biến ngẫu nhiên là **hiệp phương sai**, được tính như sau: Cov(X,Y) = **E**\[(X-**E**(X))(Y-**E**(Y))\]. Chúng ta tính độ lệch của cả hai biến so với giá trị trung bình của chúng, và sau đó nhân các độ lệch đó. Nếu cả hai biến lệch cùng chiều, tích sẽ luôn là giá trị dương, dẫn đến hiệp phương sai dương. Nếu cả hai biến lệch ngược chiều (tức là một biến giảm xuống dưới trung bình khi biến kia tăng lên trên trung bình), chúng ta sẽ luôn nhận được các giá trị âm, dẫn đến hiệp phương sai âm. Nếu các độ lệch không phụ thuộc, chúng sẽ cộng lại xấp xỉ bằng không. + +Giá trị tuyệt đối của hiệp phương sai không cho chúng ta biết nhiều về mức độ tương quan, vì nó phụ thuộc vào độ lớn của các giá trị thực tế. Để chuẩn hóa, chúng ta có thể chia hiệp phương sai cho độ lệch chuẩn của cả hai biến, để thu được **tương quan**. Điều tốt là tương quan luôn nằm trong khoảng [-1,1], trong đó 1 chỉ ra tương quan dương mạnh giữa các giá trị, -1 chỉ ra tương quan âm mạnh, và 0 chỉ ra không có tương quan (các biến độc lập). + +**Ví dụ**: Chúng ta có thể tính tương quan giữa cân nặng và chiều cao của các cầu thủ bóng chày từ tập dữ liệu đã đề cập ở trên: +```python +print(np.corrcoef(weights,heights)) +``` +Kết quả, chúng ta thu được **ma trận tương quan** như sau: +``` +array([[1. , 0.52959196], + [0.52959196, 1. ]]) +``` + +> Ma trận tương quan C có thể được tính cho bất kỳ số lượng dãy đầu vào S1, ..., Sn. Giá trị của Cij là tương quan giữa Si và Sj, và các phần tử trên đường chéo luôn là 1 (đây cũng là tự tương quan của Si). + +Trong trường hợp của chúng ta, giá trị 0.53 chỉ ra rằng có một số tương quan giữa cân nặng và chiều cao của một người. Chúng ta cũng có thể vẽ biểu đồ phân tán của một giá trị so với giá trị kia để thấy mối quan hệ một cách trực quan: + +![Mối quan hệ giữa cân nặng và chiều cao](../../../../translated_images/weight-height-relationship.3f06bde4ca2aba9974182c4ef037ed602acd0fbbbbe2ca91cefd838a9e66bcf9.vi.png) + +> Nhiều ví dụ hơn về tương quan và hiệp phương sai có thể được tìm thấy trong [notebook đi kèm](notebook.ipynb). + +## Kết luận + +Trong phần này, chúng ta đã học: + +* các thuộc tính thống kê cơ bản của dữ liệu, như giá trị trung bình, phương sai, mode và các tứ phân vị +* các phân phối khác nhau của biến ngẫu nhiên, bao gồm phân phối chuẩn +* cách tìm tương quan giữa các thuộc tính khác nhau +* cách sử dụng các công cụ toán học và thống kê để chứng minh một số giả thuyết +* cách tính khoảng tin cậy cho biến ngẫu nhiên dựa trên mẫu dữ liệu + +Mặc dù đây chắc chắn không phải là danh sách đầy đủ các chủ đề trong xác suất và thống kê, nhưng nó đủ để cung cấp cho bạn một khởi đầu tốt trong khóa học này. + +## 🚀 Thử thách + +Sử dụng mã mẫu trong notebook để kiểm tra các giả thuyết khác: +1. Các cầu thủ First Basemen lớn tuổi hơn các cầu thủ Second Basemen +2. Các cầu thủ First Basemen cao hơn các cầu thủ Third Basemen +3. Các cầu thủ Shortstops cao hơn các cầu thủ Second Basemen + +## [Câu hỏi sau bài giảng](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/7) + +## Ôn tập & Tự học + +Xác suất và thống kê là một chủ đề rất rộng lớn, xứng đáng có một khóa học riêng. Nếu bạn muốn đi sâu hơn vào lý thuyết, bạn có thể tiếp tục đọc một số sách sau: + +1. [Carlos Fernandez-Granda](https://cims.nyu.edu/~cfgranda/) từ Đại học New York có các ghi chú bài giảng tuyệt vời [Probability and Statistics for Data Science](https://cims.nyu.edu/~cfgranda/pages/stuff/probability_stats_for_DS.pdf) (có sẵn trực tuyến) +1. [Peter và Andrew Bruce. Practical Statistics for Data Scientists.](https://www.oreilly.com/library/view/practical-statistics-for/9781491952955/) [[mã mẫu trong R](https://github.com/andrewgbruce/statistics-for-data-scientists)]. +1. [James D. Miller. Statistics for Data Science](https://www.packtpub.com/product/statistics-for-data-science/9781788290678) [[mã mẫu trong R](https://github.com/PacktPublishing/Statistics-for-Data-Science)]. + +## Bài tập + +[Nghiên cứu nhỏ về bệnh tiểu đường](assignment.md) + +## Ghi công + +Bài học này được viết với ♥️ bởi [Dmitry Soshnikov](http://soshnikov.com) + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/1-Introduction/04-stats-and-probability/assignment.md b/translations/vi/1-Introduction/04-stats-and-probability/assignment.md new file mode 100644 index 00000000..3757b774 --- /dev/null +++ b/translations/vi/1-Introduction/04-stats-and-probability/assignment.md @@ -0,0 +1,40 @@ + +# Nghiên cứu nhỏ về bệnh tiểu đường + +Trong bài tập này, chúng ta sẽ làm việc với một tập dữ liệu nhỏ về bệnh nhân tiểu đường được lấy từ [đây](https://www4.stat.ncsu.edu/~boos/var.select/diabetes.html). + +| | TUỔI | GIỚI TÍNH | BMI | HUYẾT ÁP | S1 | S2 | S3 | S4 | S5 | S6 | Y | +|---|-----|-----------|-----|----------|----|----|----|----|----|----|----| +| 0 | 59 | 2 | 32.1 | 101. | 157 | 93.2 | 38.0 | 4. | 4.8598 | 87 | 151 | +| 1 | 48 | 1 | 21.6 | 87.0 | 183 | 103.2 | 70. | 3. | 3.8918 | 69 | 75 | +| 2 | 72 | 2 | 30.5 | 93.0 | 156 | 93.6 | 41.0 | 4.0 | 4. | 85 | 141 | +| ... | ... | ... | ... | ...| ...| ...| ...| ...| ...| ...| ... | + +## Hướng dẫn + +* Mở [notebook bài tập](assignment.ipynb) trong môi trường jupyter notebook +* Hoàn thành tất cả các nhiệm vụ được liệt kê trong notebook, cụ thể: + * [ ] Tính giá trị trung bình và phương sai cho tất cả các giá trị + * [ ] Vẽ biểu đồ hộp cho BMI, huyết áp và Y dựa trên giới tính + * [ ] Phân phối của các biến Tuổi, Giới tính, BMI và Y là gì? + * [ ] Kiểm tra mối tương quan giữa các biến khác nhau và sự tiến triển của bệnh (Y) + * [ ] Kiểm tra giả thuyết rằng mức độ tiến triển của bệnh tiểu đường khác nhau giữa nam và nữ + +## Tiêu chí đánh giá + +Xuất sắc | Đạt yêu cầu | Cần cải thiện +--- | --- | -- | +Hoàn thành tất cả các nhiệm vụ yêu cầu, minh họa bằng đồ thị và giải thích rõ ràng | Hoàn thành hầu hết các nhiệm vụ, thiếu giải thích hoặc kết luận từ đồ thị và/hoặc giá trị thu được | Chỉ hoàn thành các nhiệm vụ cơ bản như tính toán giá trị trung bình/phương sai và vẽ đồ thị cơ bản, không đưa ra kết luận từ dữ liệu + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/1-Introduction/README.md b/translations/vi/1-Introduction/README.md new file mode 100644 index 00000000..41abe1da --- /dev/null +++ b/translations/vi/1-Introduction/README.md @@ -0,0 +1,31 @@ + +# Giới thiệu về Khoa học Dữ liệu + +![dữ liệu trong hành động](../../../translated_images/data.48e22bb7617d8d92188afbc4c48effb920ba79f5cebdc0652cd9f34bbbd90c18.vi.jpg) +> Ảnh của Stephen Dawson trên Unsplash + +Trong các bài học này, bạn sẽ khám phá cách Khoa học Dữ liệu được định nghĩa và tìm hiểu về các cân nhắc đạo đức mà một nhà khoa học dữ liệu cần lưu ý. Bạn cũng sẽ học cách dữ liệu được định nghĩa và tìm hiểu một chút về thống kê và xác suất, những lĩnh vực học thuật cốt lõi của Khoa học Dữ liệu. + +### Các chủ đề + +1. [Định nghĩa Khoa học Dữ liệu](01-defining-data-science/README.md) +2. [Đạo đức trong Khoa học Dữ liệu](02-ethics/README.md) +3. [Định nghĩa Dữ liệu](03-defining-data/README.md) +4. [Giới thiệu về Thống kê và Xác suất](04-stats-and-probability/README.md) + +### Ghi nhận + +Các bài học này được viết với ❤️ bởi [Nitya Narasimhan](https://twitter.com/nitya) và [Dmitry Soshnikov](https://twitter.com/shwars). + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/2-Working-With-Data/05-relational-databases/README.md b/translations/vi/2-Working-With-Data/05-relational-databases/README.md new file mode 100644 index 00000000..c93e4a1e --- /dev/null +++ b/translations/vi/2-Working-With-Data/05-relational-databases/README.md @@ -0,0 +1,195 @@ + +# Làm việc với dữ liệu: Cơ sở dữ liệu quan hệ + +|![ Sketchnote của [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/05-RelationalData.png)| +|:---:| +| Làm việc với dữ liệu: Cơ sở dữ liệu quan hệ - _Sketchnote của [@nitya](https://twitter.com/nitya)_ | + +Có lẽ bạn đã từng sử dụng bảng tính để lưu trữ thông tin. Bạn có một tập hợp các hàng và cột, trong đó các hàng chứa thông tin (hoặc dữ liệu), và các cột mô tả thông tin (đôi khi được gọi là siêu dữ liệu). Một cơ sở dữ liệu quan hệ được xây dựng dựa trên nguyên tắc cốt lõi này của các cột và hàng trong bảng, cho phép bạn lưu trữ thông tin trên nhiều bảng. Điều này giúp bạn làm việc với dữ liệu phức tạp hơn, tránh trùng lặp và có sự linh hoạt trong cách khám phá dữ liệu. Hãy cùng khám phá các khái niệm về cơ sở dữ liệu quan hệ. + +## [Câu hỏi trước bài giảng](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/8) + +## Mọi thứ bắt đầu từ các bảng + +Cốt lõi của một cơ sở dữ liệu quan hệ là các bảng. Tương tự như bảng tính, một bảng là tập hợp các cột và hàng. Hàng chứa dữ liệu hoặc thông tin mà chúng ta muốn làm việc, chẳng hạn như tên của một thành phố hoặc lượng mưa. Các cột mô tả dữ liệu mà chúng lưu trữ. + +Hãy bắt đầu khám phá bằng cách tạo một bảng để lưu trữ thông tin về các thành phố. Chúng ta có thể bắt đầu với tên và quốc gia của chúng. Bạn có thể lưu trữ thông tin này trong một bảng như sau: + +| Thành phố | Quốc gia | +| --------- | ------------- | +| Tokyo | Nhật Bản | +| Atlanta | Hoa Kỳ | +| Auckland | New Zealand | + +Lưu ý rằng tên các cột **thành phố**, **quốc gia** và **dân số** mô tả dữ liệu được lưu trữ, và mỗi hàng chứa thông tin về một thành phố. + +## Hạn chế của cách tiếp cận một bảng + +Có lẽ bảng trên trông khá quen thuộc với bạn. Hãy bắt đầu thêm một số dữ liệu bổ sung vào cơ sở dữ liệu đang phát triển của chúng ta - lượng mưa hàng năm (tính bằng milimét). Chúng ta sẽ tập trung vào các năm 2018, 2019 và 2020. Nếu chúng ta thêm dữ liệu cho Tokyo, nó có thể trông như sau: + +| Thành phố | Quốc gia | Năm | Lượng mưa | +| --------- | -------- | ---- | --------- | +| Tokyo | Nhật Bản | 2020 | 1690 | +| Tokyo | Nhật Bản | 2019 | 1874 | +| Tokyo | Nhật Bản | 2018 | 1445 | + +Bạn nhận thấy gì về bảng của chúng ta? Có thể bạn nhận thấy rằng chúng ta đang lặp lại tên và quốc gia của thành phố nhiều lần. Điều này có thể chiếm khá nhiều dung lượng lưu trữ và phần lớn là không cần thiết. Rốt cuộc, Tokyo chỉ có một tên mà chúng ta quan tâm. + +Được rồi, hãy thử một cách khác. Hãy thêm các cột mới cho từng năm: + +| Thành phố | Quốc gia | 2018 | 2019 | 2020 | +| --------- | ------------- | ---- | ---- | ---- | +| Tokyo | Nhật Bản | 1445 | 1874 | 1690 | +| Atlanta | Hoa Kỳ | 1779 | 1111 | 1683 | +| Auckland | New Zealand | 1386 | 942 | 1176 | + +Mặc dù cách này tránh được việc lặp lại các hàng, nhưng nó lại gây ra một số thách thức khác. Chúng ta sẽ cần thay đổi cấu trúc của bảng mỗi khi có một năm mới. Ngoài ra, khi dữ liệu tăng lên, việc sử dụng các năm làm cột sẽ khiến việc truy xuất và tính toán giá trị trở nên khó khăn hơn. + +Đây là lý do tại sao chúng ta cần nhiều bảng và các mối quan hệ. Bằng cách chia nhỏ dữ liệu, chúng ta có thể tránh trùng lặp và có nhiều sự linh hoạt hơn trong cách làm việc với dữ liệu. + +## Các khái niệm về mối quan hệ + +Hãy quay lại dữ liệu của chúng ta và xác định cách chúng ta muốn chia nhỏ nó. Chúng ta biết rằng chúng ta muốn lưu trữ tên và quốc gia của các thành phố, vì vậy điều này có lẽ sẽ hoạt động tốt nhất trong một bảng. + +| Thành phố | Quốc gia | +| --------- | ------------- | +| Tokyo | Nhật Bản | +| Atlanta | Hoa Kỳ | +| Auckland | New Zealand | + +Nhưng trước khi tạo bảng tiếp theo, chúng ta cần tìm cách tham chiếu đến từng thành phố. Chúng ta cần một dạng định danh, ID hoặc (trong thuật ngữ cơ sở dữ liệu kỹ thuật) một khóa chính. Một khóa chính là một giá trị được sử dụng để xác định một hàng cụ thể trong bảng. Mặc dù điều này có thể dựa trên một giá trị cụ thể (chúng ta có thể sử dụng tên của thành phố, chẳng hạn), nhưng nó gần như luôn luôn nên là một số hoặc định danh khác. Chúng ta không muốn ID thay đổi vì điều đó sẽ phá vỡ mối quan hệ. Trong hầu hết các trường hợp, khóa chính hoặc ID sẽ là một số tự động được tạo ra. + +> ✅ Khóa chính thường được viết tắt là PK + +### cities + +| city_id | Thành phố | Quốc gia | +| ------- | --------- | ------------- | +| 1 | Tokyo | Nhật Bản | +| 2 | Atlanta | Hoa Kỳ | +| 3 | Auckland | New Zealand | + +> ✅ Bạn sẽ nhận thấy rằng chúng ta sử dụng các thuật ngữ "id" và "khóa chính" thay thế cho nhau trong bài học này. Các khái niệm ở đây cũng áp dụng cho DataFrames, mà bạn sẽ khám phá sau. DataFrames không sử dụng thuật ngữ "khóa chính", tuy nhiên bạn sẽ nhận thấy chúng hoạt động tương tự. + +Với bảng **cities** đã được tạo, hãy lưu trữ lượng mưa. Thay vì lặp lại toàn bộ thông tin về thành phố, chúng ta có thể sử dụng ID. Chúng ta cũng nên đảm bảo rằng bảng mới tạo có một cột *id*, vì tất cả các bảng nên có một ID hoặc khóa chính. + +### rainfall + +| rainfall_id | city_id | Năm | Lượng mưa | +| ----------- | ------- | ---- | --------- | +| 1 | 1 | 2018 | 1445 | +| 2 | 1 | 2019 | 1874 | +| 3 | 1 | 2020 | 1690 | +| 4 | 2 | 2018 | 1779 | +| 5 | 2 | 2019 | 1111 | +| 6 | 2 | 2020 | 1683 | +| 7 | 3 | 2018 | 1386 | +| 8 | 3 | 2019 | 942 | +| 9 | 3 | 2020 | 1176 | + +Lưu ý cột **city_id** trong bảng **rainfall** mới được tạo. Cột này chứa các giá trị tham chiếu đến các ID trong bảng **cities**. Trong thuật ngữ dữ liệu quan hệ kỹ thuật, đây được gọi là **khóa ngoại**; nó là một khóa chính từ bảng khác. Bạn có thể nghĩ về nó như một tham chiếu hoặc con trỏ. **city_id** 1 tham chiếu đến Tokyo. + +> [!NOTE] Khóa ngoại thường được viết tắt là FK + +## Truy xuất dữ liệu + +Với dữ liệu của chúng ta được tách thành hai bảng, bạn có thể tự hỏi làm thế nào để truy xuất nó. Nếu chúng ta sử dụng một cơ sở dữ liệu quan hệ như MySQL, SQL Server hoặc Oracle, chúng ta có thể sử dụng một ngôn ngữ gọi là Structured Query Language hoặc SQL. SQL (đôi khi được phát âm là "sequel") là một ngôn ngữ tiêu chuẩn được sử dụng để truy xuất và sửa đổi dữ liệu trong cơ sở dữ liệu quan hệ. + +Để truy xuất dữ liệu, bạn sử dụng lệnh `SELECT`. Cốt lõi của nó, bạn **chọn** các cột bạn muốn xem **từ** bảng chứa chúng. Nếu bạn muốn hiển thị chỉ tên các thành phố, bạn có thể sử dụng: + +```sql +SELECT city +FROM cities; + +-- Output: +-- Tokyo +-- Atlanta +-- Auckland +``` + +`SELECT` là nơi bạn liệt kê các cột, và `FROM` là nơi bạn liệt kê các bảng. + +> [NOTE] Cú pháp SQL không phân biệt chữ hoa chữ thường, nghĩa là `select` và `SELECT` có nghĩa giống nhau. Tuy nhiên, tùy thuộc vào loại cơ sở dữ liệu bạn đang sử dụng, các cột và bảng có thể phân biệt chữ hoa chữ thường. Do đó, một thực hành tốt là luôn coi mọi thứ trong lập trình như phân biệt chữ hoa chữ thường. Khi viết các truy vấn SQL, quy ước phổ biến là viết các từ khóa bằng chữ in hoa. + +Truy vấn trên sẽ hiển thị tất cả các thành phố. Giả sử chúng ta chỉ muốn hiển thị các thành phố ở New Zealand. Chúng ta cần một dạng bộ lọc. Từ khóa SQL cho điều này là `WHERE`, hoặc "nơi điều gì đó đúng". + +```sql +SELECT city +FROM cities +WHERE country = 'New Zealand'; + +-- Output: +-- Auckland +``` + +## Kết hợp dữ liệu + +Cho đến nay, chúng ta đã truy xuất dữ liệu từ một bảng duy nhất. Bây giờ chúng ta muốn kết hợp dữ liệu từ cả **cities** và **rainfall**. Điều này được thực hiện bằng cách *kết hợp* chúng lại với nhau. Bạn sẽ tạo một liên kết giữa hai bảng và ghép các giá trị từ một cột của mỗi bảng. + +Trong ví dụ của chúng ta, chúng ta sẽ ghép cột **city_id** trong **rainfall** với cột **city_id** trong **cities**. Điều này sẽ ghép giá trị lượng mưa với thành phố tương ứng của nó. Loại kết hợp mà chúng ta sẽ thực hiện được gọi là *kết hợp trong* (inner join), nghĩa là nếu bất kỳ hàng nào không khớp với bất kỳ hàng nào từ bảng khác, chúng sẽ không được hiển thị. Trong trường hợp của chúng ta, mọi thành phố đều có lượng mưa, vì vậy mọi thứ sẽ được hiển thị. + +Hãy truy xuất lượng mưa năm 2019 cho tất cả các thành phố của chúng ta. + +Chúng ta sẽ thực hiện điều này theo từng bước. Bước đầu tiên là kết hợp dữ liệu lại với nhau bằng cách chỉ định các cột để liên kết - **city_id** như đã nêu trước đó. + +```sql +SELECT cities.city + rainfall.amount +FROM cities + INNER JOIN rainfall ON cities.city_id = rainfall.city_id +``` + +Chúng ta đã chỉ định hai cột mà chúng ta muốn, và thực tế rằng chúng ta muốn kết hợp các bảng lại với nhau bằng **city_id**. Bây giờ chúng ta có thể thêm câu lệnh `WHERE` để lọc chỉ năm 2019. + +```sql +SELECT cities.city + rainfall.amount +FROM cities + INNER JOIN rainfall ON cities.city_id = rainfall.city_id +WHERE rainfall.year = 2019 + +-- Output + +-- city | amount +-- -------- | ------ +-- Tokyo | 1874 +-- Atlanta | 1111 +-- Auckland | 942 +``` + +## Tóm tắt + +Cơ sở dữ liệu quan hệ tập trung vào việc chia thông tin giữa nhiều bảng, sau đó được kết hợp lại để hiển thị và phân tích. Điều này cung cấp mức độ linh hoạt cao để thực hiện các phép tính và thao tác dữ liệu. Bạn đã thấy các khái niệm cốt lõi của một cơ sở dữ liệu quan hệ và cách thực hiện kết hợp giữa hai bảng. + +## 🚀 Thử thách + +Có rất nhiều cơ sở dữ liệu quan hệ có sẵn trên internet. Bạn có thể khám phá dữ liệu bằng cách sử dụng các kỹ năng bạn đã học ở trên. + +## Câu hỏi sau bài giảng + +## [Câu hỏi sau bài giảng](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/9) + +## Ôn tập & Tự học + +Có nhiều tài nguyên có sẵn trên [Microsoft Learn](https://docs.microsoft.com/learn?WT.mc_id=academic-77958-bethanycheum) để bạn tiếp tục khám phá các khái niệm về SQL và cơ sở dữ liệu quan hệ + +- [Mô tả các khái niệm về dữ liệu quan hệ](https://docs.microsoft.com//learn/modules/describe-concepts-of-relational-data?WT.mc_id=academic-77958-bethanycheum) +- [Bắt đầu truy vấn với Transact-SQL](https://docs.microsoft.com//learn/paths/get-started-querying-with-transact-sql?WT.mc_id=academic-77958-bethanycheum) (Transact-SQL là một phiên bản của SQL) +- [Nội dung SQL trên Microsoft Learn](https://docs.microsoft.com/learn/browse/?products=azure-sql-database%2Csql-server&expanded=azure&WT.mc_id=academic-77958-bethanycheum) + +## Bài tập + +[Tiêu đề bài tập](assignment.md) + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm về bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/2-Working-With-Data/05-relational-databases/assignment.md b/translations/vi/2-Working-With-Data/05-relational-databases/assignment.md new file mode 100644 index 00000000..41104615 --- /dev/null +++ b/translations/vi/2-Working-With-Data/05-relational-databases/assignment.md @@ -0,0 +1,73 @@ + +# Hiển thị dữ liệu sân bay + +Bạn đã được cung cấp một [cơ sở dữ liệu](https://raw.githubusercontent.com/Microsoft/Data-Science-For-Beginners/main/2-Working-With-Data/05-relational-databases/airports.db) được xây dựng trên [SQLite](https://sqlite.org/index.html), chứa thông tin về các sân bay. Lược đồ của cơ sở dữ liệu được hiển thị bên dưới. Bạn sẽ sử dụng [phần mở rộng SQLite](https://marketplace.visualstudio.com/items?itemName=alexcvzz.vscode-sqlite&WT.mc_id=academic-77958-bethanycheum) trong [Visual Studio Code](https://code.visualstudio.com?WT.mc_id=academic-77958-bethanycheum) để hiển thị thông tin về các sân bay ở các thành phố khác nhau. + +## Hướng dẫn + +Để bắt đầu bài tập, bạn cần thực hiện một số bước. Bạn sẽ cần cài đặt một số công cụ và tải xuống cơ sở dữ liệu mẫu. + +### Cài đặt hệ thống của bạn + +Bạn có thể sử dụng Visual Studio Code và phần mở rộng SQLite để tương tác với cơ sở dữ liệu. + +1. Truy cập [code.visualstudio.com](https://code.visualstudio.com?WT.mc_id=academic-77958-bethanycheum) và làm theo hướng dẫn để cài đặt Visual Studio Code +1. Cài đặt [phần mở rộng SQLite](https://marketplace.visualstudio.com/items?itemName=alexcvzz.vscode-sqlite&WT.mc_id=academic-77958-bethanycheum) như được hướng dẫn trên trang Marketplace + +### Tải xuống và mở cơ sở dữ liệu + +Tiếp theo, bạn sẽ tải xuống và mở cơ sở dữ liệu. + +1. Tải xuống [tệp cơ sở dữ liệu từ GitHub](https://raw.githubusercontent.com/Microsoft/Data-Science-For-Beginners/main/2-Working-With-Data/05-relational-databases/airports.db) và lưu vào một thư mục +1. Mở Visual Studio Code +1. Mở cơ sở dữ liệu trong phần mở rộng SQLite bằng cách chọn **Ctl-Shift-P** (hoặc **Cmd-Shift-P** trên Mac) và nhập `SQLite: Open database` +1. Chọn **Choose database from file** và mở tệp **airports.db** mà bạn đã tải xuống trước đó +1. Sau khi mở cơ sở dữ liệu (bạn sẽ không thấy cập nhật trên màn hình), tạo một cửa sổ truy vấn mới bằng cách chọn **Ctl-Shift-P** (hoặc **Cmd-Shift-P** trên Mac) và nhập `SQLite: New query` + +Khi đã mở, cửa sổ truy vấn mới có thể được sử dụng để chạy các câu lệnh SQL trên cơ sở dữ liệu. Bạn có thể sử dụng lệnh **Ctl-Shift-Q** (hoặc **Cmd-Shift-Q** trên Mac) để chạy các truy vấn trên cơ sở dữ liệu. + +> [!NOTE] Để biết thêm thông tin về phần mở rộng SQLite, bạn có thể tham khảo [tài liệu](https://marketplace.visualstudio.com/items?itemName=alexcvzz.vscode-sqlite&WT.mc_id=academic-77958-bethanycheum) + +## Lược đồ cơ sở dữ liệu + +Lược đồ của một cơ sở dữ liệu là thiết kế và cấu trúc bảng của nó. Cơ sở dữ liệu **airports** có hai bảng, `cities`, chứa danh sách các thành phố ở Vương quốc Anh và Ireland, và `airports`, chứa danh sách tất cả các sân bay. Vì một số thành phố có thể có nhiều sân bay, hai bảng đã được tạo để lưu trữ thông tin. Trong bài tập này, bạn sẽ sử dụng các phép nối (joins) để hiển thị thông tin cho các thành phố khác nhau. + +| Cities | +| ---------------- | +| id (PK, integer) | +| city (text) | +| country (text) | + +| Airports | +| -------------------------------- | +| id (PK, integer) | +| name (text) | +| code (text) | +| city_id (FK to id in **Cities**) | + +## Bài tập + +Tạo các truy vấn để trả về thông tin sau: + +1. tất cả tên thành phố trong bảng `Cities` +1. tất cả các thành phố ở Ireland trong bảng `Cities` +1. tất cả tên sân bay cùng với thành phố và quốc gia của chúng +1. tất cả các sân bay ở London, Vương quốc Anh + +## Tiêu chí đánh giá + +| Xuất sắc | Đạt yêu cầu | Cần cải thiện | +| --------- | ----------- | ------------- | + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm về bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/2-Working-With-Data/06-non-relational/README.md b/translations/vi/2-Working-With-Data/06-non-relational/README.md new file mode 100644 index 00000000..18a0f647 --- /dev/null +++ b/translations/vi/2-Working-With-Data/06-non-relational/README.md @@ -0,0 +1,158 @@ + +# Làm việc với dữ liệu: Dữ liệu phi quan hệ + +|![ Sketchnote của [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/06-NoSQL.png)| +|:---:| +|Làm việc với dữ liệu NoSQL - _Sketchnote của [@nitya](https://twitter.com/nitya)_ | + +## [Câu hỏi trước bài giảng](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/10) + +Dữ liệu không chỉ giới hạn trong cơ sở dữ liệu quan hệ. Bài học này tập trung vào dữ liệu phi quan hệ và sẽ giới thiệu các khái niệm cơ bản về bảng tính và NoSQL. + +## Bảng tính + +Bảng tính là một cách phổ biến để lưu trữ và khám phá dữ liệu vì nó yêu cầu ít công việc để thiết lập và bắt đầu. Trong bài học này, bạn sẽ học các thành phần cơ bản của một bảng tính, cũng như công thức và hàm. Các ví dụ sẽ được minh họa bằng Microsoft Excel, nhưng hầu hết các phần và chủ đề sẽ có tên và bước tương tự so với các phần mềm bảng tính khác. + +![Một bảng làm việc Microsoft Excel trống với hai trang tính](../../../../translated_images/parts-of-spreadsheet.120711c82aa18a45c3e62a491a15bba0a31ab0e9db407ec022702fed8ffd89bf.vi.png) + +Một bảng tính là một tệp và sẽ được truy cập trong hệ thống tệp của máy tính, thiết bị hoặc hệ thống tệp dựa trên đám mây. Phần mềm có thể dựa trên trình duyệt hoặc là một ứng dụng phải được cài đặt trên máy tính hoặc tải xuống dưới dạng ứng dụng. Trong Excel, các tệp này cũng được định nghĩa là **workbooks** và thuật ngữ này sẽ được sử dụng trong phần còn lại của bài học. + +Một workbook chứa một hoặc nhiều **worksheets**, nơi mỗi worksheet được gắn nhãn bằng các tab. Trong một worksheet có các hình chữ nhật gọi là **cells**, nơi chứa dữ liệu thực tế. Một cell là giao điểm của một hàng và một cột, nơi các cột được gắn nhãn bằng các ký tự chữ cái và các hàng được gắn nhãn bằng số. Một số bảng tính sẽ chứa tiêu đề trong vài hàng đầu tiên để mô tả dữ liệu trong một cell. + +Với các yếu tố cơ bản này của một workbook Excel, chúng ta sẽ sử dụng một ví dụ từ [Microsoft Templates](https://templates.office.com/) tập trung vào một kho hàng để đi qua một số phần bổ sung của bảng tính. + +### Quản lý kho hàng + +Tệp bảng tính có tên "InventoryExample" là một bảng tính được định dạng của các mục trong kho hàng, chứa ba worksheet, nơi các tab được gắn nhãn "Inventory List", "Inventory Pick List" và "Bin Lookup". Hàng 4 của worksheet Inventory List là tiêu đề, mô tả giá trị của mỗi cell trong cột tiêu đề. + +![Một công thức được làm nổi bật từ danh sách kho hàng ví dụ trong Microsoft Excel](../../../../translated_images/formula-excel.ad1068c220892f5ead570d12f2394897961d31a5043a1dd4e6fc5d7690c7a14e.vi.png) + +Có những trường hợp một cell phụ thuộc vào giá trị của các cell khác để tạo ra giá trị của nó. Bảng tính Inventory List theo dõi chi phí của mỗi mục trong kho hàng, nhưng nếu chúng ta cần biết giá trị của toàn bộ kho hàng thì sao? [**Công thức**](https://support.microsoft.com/en-us/office/overview-of-formulas-34519a4e-1e8d-4f4b-84d4-d642c4f63263) thực hiện các hành động trên dữ liệu cell và được sử dụng để tính toán chi phí của kho hàng trong ví dụ này. Bảng tính này sử dụng một công thức trong cột Inventory Value để tính giá trị của mỗi mục bằng cách nhân số lượng dưới tiêu đề QTY và chi phí của nó dưới tiêu đề COST. Nhấp đúp hoặc làm nổi bật một cell sẽ hiển thị công thức. Bạn sẽ nhận thấy rằng các công thức bắt đầu bằng dấu bằng, theo sau là phép tính hoặc thao tác. + +![Một hàm được làm nổi bật từ danh sách kho hàng ví dụ trong Microsoft Excel](../../../../translated_images/function-excel.be2ae4feddc10ca089f3d4363040d93b7fd046c8d4f83ba975ec46483ee99895.vi.png) + +Chúng ta có thể sử dụng một công thức khác để cộng tất cả các giá trị của Inventory Value lại với nhau để có tổng giá trị. Điều này có thể được tính bằng cách cộng từng cell để tạo ra tổng, nhưng đó có thể là một nhiệm vụ tẻ nhạt. Excel có [**hàm**](https://support.microsoft.com/en-us/office/sum-function-043e1c7d-7726-4e80-8f32-07b23e057f89), hoặc các công thức được định nghĩa trước để thực hiện các phép tính trên giá trị cell. Hàm yêu cầu các tham số, là các giá trị cần thiết để thực hiện các phép tính này. Khi hàm yêu cầu nhiều hơn một tham số, chúng cần được liệt kê theo thứ tự cụ thể hoặc hàm có thể không tính toán đúng giá trị. Ví dụ này sử dụng hàm SUM, và sử dụng các giá trị của Inventory Value làm tham số để cộng và tạo ra tổng được liệt kê dưới hàng 3, cột B (còn được gọi là B3). + +## NoSQL + +NoSQL là một thuật ngữ bao quát cho các cách khác nhau để lưu trữ dữ liệu phi quan hệ và có thể được hiểu là "không phải SQL", "phi quan hệ" hoặc "không chỉ SQL". Các hệ thống cơ sở dữ liệu loại này có thể được phân loại thành 4 loại. + +![Biểu diễn đồ họa của một kho dữ liệu key-value hiển thị 4 khóa số duy nhất được liên kết với 4 giá trị khác nhau](../../../../translated_images/kv-db.e8f2b75686bbdfcba0c827b9272c10ae0821611ea0fe98429b9d13194383afa6.vi.png) +> Nguồn từ [Blog của Michał Białecki](https://www.michalbialecki.com/2018/03/18/azure-cosmos-db-key-value-database-cloud/) + +[Cơ sở dữ liệu key-value](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data#keyvalue-data-stores) ghép cặp các khóa duy nhất, là một định danh duy nhất liên kết với một giá trị. Các cặp này được lưu trữ bằng [bảng băm](https://www.hackerearth.com/practice/data-structures/hash-tables/basics-of-hash-tables/tutorial/) với một hàm băm phù hợp. + +![Biểu diễn đồ họa của một kho dữ liệu đồ thị hiển thị mối quan hệ giữa con người, sở thích và địa điểm](../../../../translated_images/graph-db.d13629152f79a9dac895b20fa7d841d4d4d6f6008b1382227c3bbd200fd4cfa1.vi.png) +> Nguồn từ [Microsoft](https://docs.microsoft.com/en-us/azure/cosmos-db/graph/graph-introduction#graph-database-by-example) + +[Cơ sở dữ liệu đồ thị](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data#graph-data-stores) mô tả mối quan hệ trong dữ liệu và được biểu diễn dưới dạng một tập hợp các nút và cạnh. Một nút đại diện cho một thực thể, thứ tồn tại trong thế giới thực như một sinh viên hoặc bản sao kê ngân hàng. Các cạnh đại diện cho mối quan hệ giữa hai thực thể. Mỗi nút và cạnh có các thuộc tính cung cấp thông tin bổ sung về mỗi nút và cạnh. + +![Biểu diễn đồ họa của một kho dữ liệu dạng cột hiển thị cơ sở dữ liệu khách hàng với hai nhóm cột được gọi là Identity và Contact Info](../../../../translated_images/columnar-db.ffcfe73c3e9063a8c8f93f8ace85e1200863584b1e324eb5159d8ca10f62ec04.vi.png) + +[Cơ sở dữ liệu dạng cột](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data#columnar-data-stores) tổ chức dữ liệu thành các cột và hàng giống như cấu trúc dữ liệu quan hệ nhưng mỗi cột được chia thành các nhóm gọi là nhóm cột, nơi tất cả dữ liệu dưới một cột có liên quan và có thể được truy xuất và thay đổi trong một đơn vị. + +### Kho dữ liệu tài liệu với Azure Cosmos DB + +[Cơ sở dữ liệu tài liệu](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data#document-data-stores) xây dựng trên khái niệm kho dữ liệu key-value và được tạo thành từ một loạt các trường và đối tượng. Phần này sẽ khám phá cơ sở dữ liệu tài liệu với trình giả lập Cosmos DB. + +Cơ sở dữ liệu Cosmos DB phù hợp với định nghĩa "Không chỉ SQL", nơi cơ sở dữ liệu tài liệu của Cosmos DB dựa vào SQL để truy vấn dữ liệu. [Bài học trước](../05-relational-databases/README.md) về SQL đã giới thiệu các khái niệm cơ bản của ngôn ngữ này, và chúng ta sẽ có thể áp dụng một số truy vấn tương tự vào cơ sở dữ liệu tài liệu ở đây. Chúng ta sẽ sử dụng trình giả lập Cosmos DB, cho phép chúng ta tạo và khám phá cơ sở dữ liệu tài liệu cục bộ trên máy tính. Đọc thêm về trình giả lập [tại đây](https://docs.microsoft.com/en-us/azure/cosmos-db/local-emulator?tabs=ssl-netstd21). + +Một tài liệu là một tập hợp các trường và giá trị đối tượng, nơi các trường mô tả giá trị đối tượng đại diện cho điều gì. Dưới đây là một ví dụ về tài liệu. + +```json +{ + "firstname": "Eva", + "age": 44, + "id": "8c74a315-aebf-4a16-bb38-2430a9896ce5", + "_rid": "bHwDAPQz8s0BAAAAAAAAAA==", + "_self": "dbs/bHwDAA==/colls/bHwDAPQz8s0=/docs/bHwDAPQz8s0BAAAAAAAAAA==/", + "_etag": "\"00000000-0000-0000-9f95-010a691e01d7\"", + "_attachments": "attachments/", + "_ts": 1630544034 +} +``` + +Các trường quan tâm trong tài liệu này là: `firstname`, `id`, và `age`. Các trường còn lại với dấu gạch dưới được tạo bởi Cosmos DB. + +#### Khám phá dữ liệu với trình giả lập Cosmos DB + +Bạn có thể tải xuống và cài đặt trình giả lập [cho Windows tại đây](https://aka.ms/cosmosdb-emulator). Tham khảo [tài liệu này](https://docs.microsoft.com/en-us/azure/cosmos-db/local-emulator?tabs=ssl-netstd21#run-on-linux-macos) để biết các tùy chọn về cách chạy trình giả lập cho macOS và Linux. + +Trình giả lập mở một cửa sổ trình duyệt, nơi chế độ xem Explorer cho phép bạn khám phá các tài liệu. + +![Chế độ xem Explorer của trình giả lập Cosmos DB](../../../../translated_images/cosmosdb-emulator-explorer.a1c80b1347206fe2f30f88fc123821636587d04fc5a56a9eb350c7da6b31f361.vi.png) + +Nếu bạn đang làm theo, hãy nhấp vào "Start with Sample" để tạo một cơ sở dữ liệu mẫu có tên SampleDB. Nếu bạn mở rộng SampleDB bằng cách nhấp vào mũi tên, bạn sẽ tìm thấy một container có tên `Persons`, một container chứa một tập hợp các mục, là các tài liệu trong container. Bạn có thể khám phá bốn tài liệu riêng lẻ dưới `Items`. + +![Khám phá dữ liệu mẫu trong trình giả lập Cosmos DB](../../../../translated_images/cosmosdb-emulator-persons.bf640586a7077c8985dfd3071946465c8e074c722c7c202d6d714de99a93b90a.vi.png) + +#### Truy vấn dữ liệu tài liệu với trình giả lập Cosmos DB + +Chúng ta cũng có thể truy vấn dữ liệu mẫu bằng cách nhấp vào nút SQL Query mới (nút thứ hai từ bên trái). + +`SELECT * FROM c` trả về tất cả các tài liệu trong container. Hãy thêm một mệnh đề where và tìm tất cả mọi người dưới 40 tuổi. + +`SELECT * FROM c where c.age < 40` + +![Chạy truy vấn SELECT trên dữ liệu mẫu trong trình giả lập Cosmos DB để tìm các tài liệu có giá trị trường age nhỏ hơn 40](../../../../translated_images/cosmosdb-emulator-persons-query.6905ebb497e3cd047cd96e55a0a03f69ce1b91b2b3d8c147e617b746b22b7e33.vi.png) + +Truy vấn trả về hai tài liệu, lưu ý giá trị age của mỗi tài liệu nhỏ hơn 40. + +#### JSON và tài liệu + +Nếu bạn quen thuộc với JavaScript Object Notation (JSON), bạn sẽ nhận thấy rằng các tài liệu trông giống JSON. Có một tệp `PersonsData.json` trong thư mục này với nhiều dữ liệu hơn mà bạn có thể tải lên container Persons trong trình giả lập qua nút `Upload Item`. + +Trong hầu hết các trường hợp, các API trả về dữ liệu JSON có thể được chuyển trực tiếp và lưu trữ trong cơ sở dữ liệu tài liệu. Dưới đây là một tài liệu khác, nó đại diện cho các tweet từ tài khoản Twitter của Microsoft được truy xuất bằng API Twitter, sau đó được chèn vào Cosmos DB. + +```json +{ + "created_at": "2021-08-31T19:03:01.000Z", + "id": "1432780985872142341", + "text": "Blank slate. Like this tweet if you’ve ever painted in Microsoft Paint before. https://t.co/cFeEs8eOPK", + "_rid": "dhAmAIUsA4oHAAAAAAAAAA==", + "_self": "dbs/dhAmAA==/colls/dhAmAIUsA4o=/docs/dhAmAIUsA4oHAAAAAAAAAA==/", + "_etag": "\"00000000-0000-0000-9f84-a0958ad901d7\"", + "_attachments": "attachments/", + "_ts": 1630537000 +``` + +Các trường quan tâm trong tài liệu này là: `created_at`, `id`, và `text`. + +## 🚀 Thử thách + +Có một tệp `TwitterData.json` mà bạn có thể tải lên cơ sở dữ liệu SampleDB. Khuyến nghị rằng bạn thêm nó vào một container riêng biệt. Điều này có thể được thực hiện bằng cách: + +1. Nhấp vào nút container mới ở góc trên bên phải +1. Chọn cơ sở dữ liệu hiện có (SampleDB), tạo một id container cho container +1. Đặt khóa phân vùng thành `/id` +1. Nhấp OK (bạn có thể bỏ qua phần thông tin còn lại trong chế độ xem này vì đây là một tập dữ liệu nhỏ chạy cục bộ trên máy của bạn) +1. Mở container mới của bạn và tải lên tệp Twitter Data bằng nút `Upload Item` + +Hãy thử chạy một vài truy vấn select để tìm các tài liệu có từ Microsoft trong trường text. Gợi ý: thử sử dụng [từ khóa LIKE](https://docs.microsoft.com/en-us/azure/cosmos-db/sql/sql-query-keywords#using-like-with-the--wildcard-character) + +## [Câu hỏi sau bài giảng](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/11) + +## Ôn tập & Tự học + +- Có một số định dạng và tính năng bổ sung được thêm vào bảng tính này mà bài học không đề cập. Microsoft có một [thư viện lớn về tài liệu và video](https://support.microsoft.com/excel) về Excel nếu bạn muốn tìm hiểu thêm. + +- Tài liệu kiến trúc này chi tiết các đặc điểm trong các loại dữ liệu phi quan hệ khác nhau: [Dữ liệu phi quan hệ và NoSQL](https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data) + +- Cosmos DB là một cơ sở dữ liệu phi quan hệ dựa trên đám mây cũng có thể lưu trữ các loại NoSQL khác nhau được đề cập trong bài học này. Tìm hiểu thêm về các loại này trong [Module học Microsoft Cosmos DB](https://docs.microsoft.com/en-us/learn/paths/work-with-nosql-data-in-azure-cosmos-db/) + +## Bài tập + +[Soda Profits](assignment.md) + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tham khảo chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/2-Working-With-Data/06-non-relational/assignment.md b/translations/vi/2-Working-With-Data/06-non-relational/assignment.md new file mode 100644 index 00000000..7df6945e --- /dev/null +++ b/translations/vi/2-Working-With-Data/06-non-relational/assignment.md @@ -0,0 +1,33 @@ + +# Lợi Nhuận Soda + +## Hướng Dẫn + +Bảng tính [Coca Cola Co](../../../../2-Working-With-Data/06-non-relational/CocaColaCo.xlsx) đang thiếu một số phép tính. Nhiệm vụ của bạn là: + +1. Tính lợi nhuận gộp của các năm tài chính '15, '16, '17, và '18 + - Lợi nhuận gộp = Doanh thu hoạt động ròng - Chi phí hàng hóa đã bán +1. Tính trung bình của tất cả các lợi nhuận gộp. Hãy thử làm điều này bằng một hàm. + - Trung bình = Tổng lợi nhuận gộp chia cho số năm tài chính (10) + - Tài liệu về [hàm AVERAGE](https://support.microsoft.com/en-us/office/average-function-047bac88-d466-426c-a32b-8f33eb960cf6) +1. Đây là một tệp Excel, nhưng nó có thể chỉnh sửa trên bất kỳ nền tảng bảng tính nào + +[Nguồn dữ liệu được ghi nhận cho Yiyi Wang](https://www.kaggle.com/yiyiwang0826/cocacola-excel) + +## Tiêu Chí Đánh Giá + +Xuất Sắc | Đạt Yêu Cầu | Cần Cải Thiện +--- | --- | --- | + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm về bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/2-Working-With-Data/07-python/README.md b/translations/vi/2-Working-With-Data/07-python/README.md new file mode 100644 index 00000000..9088dfa3 --- /dev/null +++ b/translations/vi/2-Working-With-Data/07-python/README.md @@ -0,0 +1,290 @@ + +# Làm việc với Dữ liệu: Python và Thư viện Pandas + +| ![ Sketchnote của [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png) | +| :-------------------------------------------------------------------------------------------------------: | +| Làm việc với Python - _Sketchnote của [@nitya](https://twitter.com/nitya)_ | + +[![Video Giới thiệu](../../../../translated_images/video-ds-python.245247dc811db8e4d5ac420246de8a118c63fd28f6a56578d08b630ae549f260.vi.png)](https://youtu.be/dZjWOGbsN4Y) + +Mặc dù cơ sở dữ liệu cung cấp cách lưu trữ dữ liệu và truy vấn chúng rất hiệu quả bằng ngôn ngữ truy vấn, cách linh hoạt nhất để xử lý dữ liệu là viết chương trình của riêng bạn để thao tác dữ liệu. Trong nhiều trường hợp, việc thực hiện truy vấn cơ sở dữ liệu sẽ hiệu quả hơn. Tuy nhiên, trong một số trường hợp khi cần xử lý dữ liệu phức tạp hơn, điều này không thể thực hiện dễ dàng bằng SQL. +Xử lý dữ liệu có thể được lập trình bằng bất kỳ ngôn ngữ lập trình nào, nhưng có một số ngôn ngữ ở cấp độ cao hơn khi làm việc với dữ liệu. Các nhà khoa học dữ liệu thường ưu tiên một trong các ngôn ngữ sau: + +* **[Python](https://www.python.org/)**, một ngôn ngữ lập trình đa mục đích, thường được coi là một trong những lựa chọn tốt nhất cho người mới bắt đầu nhờ sự đơn giản của nó. Python có rất nhiều thư viện bổ sung giúp bạn giải quyết nhiều vấn đề thực tế, chẳng hạn như trích xuất dữ liệu từ tệp ZIP hoặc chuyển đổi hình ảnh sang thang độ xám. Ngoài khoa học dữ liệu, Python cũng thường được sử dụng trong phát triển web. +* **[R](https://www.r-project.org/)** là một công cụ truyền thống được phát triển với mục đích xử lý dữ liệu thống kê. Nó cũng chứa một kho thư viện lớn (CRAN), làm cho nó trở thành một lựa chọn tốt để xử lý dữ liệu. Tuy nhiên, R không phải là ngôn ngữ lập trình đa mục đích và hiếm khi được sử dụng ngoài lĩnh vực khoa học dữ liệu. +* **[Julia](https://julialang.org/)** là một ngôn ngữ khác được phát triển đặc biệt cho khoa học dữ liệu. Nó được thiết kế để cung cấp hiệu suất tốt hơn Python, làm cho nó trở thành một công cụ tuyệt vời cho các thí nghiệm khoa học. + +Trong bài học này, chúng ta sẽ tập trung vào việc sử dụng Python để xử lý dữ liệu đơn giản. Chúng ta sẽ giả định rằng bạn đã quen thuộc cơ bản với ngôn ngữ này. Nếu bạn muốn tìm hiểu sâu hơn về Python, bạn có thể tham khảo một trong các tài nguyên sau: + +* [Học Python một cách thú vị với Turtle Graphics và Fractals](https://github.com/shwars/pycourse) - Khóa học giới thiệu nhanh về lập trình Python trên GitHub +* [Bắt đầu với Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Lộ trình học trên [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) + +Dữ liệu có thể xuất hiện dưới nhiều dạng. Trong bài học này, chúng ta sẽ xem xét ba dạng dữ liệu - **dữ liệu dạng bảng**, **văn bản** và **hình ảnh**. + +Chúng ta sẽ tập trung vào một vài ví dụ về xử lý dữ liệu, thay vì cung cấp cho bạn cái nhìn tổng quan đầy đủ về tất cả các thư viện liên quan. Điều này sẽ giúp bạn hiểu được những gì có thể làm được và để lại cho bạn sự hiểu biết về nơi tìm giải pháp cho các vấn đề của mình khi cần. + +> **Lời khuyên hữu ích nhất**. Khi bạn cần thực hiện một thao tác nào đó trên dữ liệu mà bạn không biết cách làm, hãy thử tìm kiếm trên internet. [Stackoverflow](https://stackoverflow.com/) thường chứa rất nhiều mẫu mã hữu ích bằng Python cho nhiều tác vụ điển hình. + +## [Câu hỏi trước bài học](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/12) + +## Dữ liệu dạng bảng và Dataframes + +Bạn đã gặp dữ liệu dạng bảng khi chúng ta nói về cơ sở dữ liệu quan hệ. Khi bạn có nhiều dữ liệu và nó được chứa trong nhiều bảng liên kết khác nhau, chắc chắn việc sử dụng SQL để làm việc với nó là hợp lý. Tuy nhiên, có nhiều trường hợp khi chúng ta có một bảng dữ liệu và cần đạt được một số **hiểu biết** hoặc **thông tin chi tiết** về dữ liệu này, chẳng hạn như phân phối, mối tương quan giữa các giá trị, v.v. Trong khoa học dữ liệu, có rất nhiều trường hợp chúng ta cần thực hiện một số chuyển đổi dữ liệu ban đầu, sau đó là trực quan hóa. Cả hai bước này đều có thể dễ dàng thực hiện bằng Python. + +Có hai thư viện hữu ích nhất trong Python giúp bạn xử lý dữ liệu dạng bảng: +* **[Pandas](https://pandas.pydata.org/)** cho phép bạn thao tác với **Dataframes**, tương tự như các bảng quan hệ. Bạn có thể có các cột được đặt tên và thực hiện các thao tác khác nhau trên hàng, cột và toàn bộ dataframe. +* **[Numpy](https://numpy.org/)** là một thư viện để làm việc với **tensors**, tức là các **mảng** đa chiều. Mảng có các giá trị cùng kiểu cơ bản và đơn giản hơn dataframe, nhưng nó cung cấp nhiều phép toán toán học hơn và tạo ít chi phí hơn. + +Ngoài ra còn có một vài thư viện khác mà bạn nên biết: +* **[Matplotlib](https://matplotlib.org/)** là một thư viện được sử dụng để trực quan hóa dữ liệu và vẽ đồ thị +* **[SciPy](https://www.scipy.org/)** là một thư viện với một số chức năng khoa học bổ sung. Chúng ta đã gặp thư viện này khi nói về xác suất và thống kê + +Dưới đây là một đoạn mã mà bạn thường sử dụng để nhập các thư viện này vào đầu chương trình Python của mình: +```python +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt +from scipy import ... # you need to specify exact sub-packages that you need +``` + +Pandas tập trung vào một vài khái niệm cơ bản. + +### Series + +**Series** là một chuỗi các giá trị, tương tự như danh sách hoặc mảng numpy. Điểm khác biệt chính là series cũng có một **index**, và khi chúng ta thao tác trên series (ví dụ: cộng chúng), index được tính đến. Index có thể đơn giản như số hàng nguyên (đây là index được sử dụng mặc định khi tạo series từ danh sách hoặc mảng), hoặc nó có thể có cấu trúc phức tạp, chẳng hạn như khoảng thời gian ngày. + +> **Lưu ý**: Có một số mã Pandas giới thiệu trong notebook đi kèm [`notebook.ipynb`](notebook.ipynb). Chúng tôi chỉ phác thảo một số ví dụ ở đây, và bạn chắc chắn được khuyến khích kiểm tra toàn bộ notebook. + +Hãy xem xét một ví dụ: chúng ta muốn phân tích doanh số bán hàng của cửa hàng kem. Hãy tạo một series số lượng bán hàng (số lượng sản phẩm bán được mỗi ngày) trong một khoảng thời gian: + +```python +start_date = "Jan 1, 2020" +end_date = "Mar 31, 2020" +idx = pd.date_range(start_date,end_date) +print(f"Length of index is {len(idx)}") +items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx) +items_sold.plot() +``` +![Biểu đồ chuỗi thời gian](../../../../translated_images/timeseries-1.80de678ab1cf727e50e00bcf24009fa2b0a8b90ebc43e34b99a345227d28e467.vi.png) + +Bây giờ giả sử rằng mỗi tuần chúng ta tổ chức một bữa tiệc cho bạn bè và lấy thêm 10 hộp kem cho bữa tiệc. Chúng ta có thể tạo một series khác, được index theo tuần, để minh họa điều đó: +```python +additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W")) +``` +Khi chúng ta cộng hai series lại với nhau, chúng ta sẽ có tổng số lượng: +```python +total_items = items_sold.add(additional_items,fill_value=0) +total_items.plot() +``` +![Biểu đồ chuỗi thời gian](../../../../translated_images/timeseries-2.aae51d575c55181ceda81ade8c546a2fc2024f9136934386d57b8a189d7570ff.vi.png) + +> **Lưu ý** rằng chúng ta không sử dụng cú pháp đơn giản `total_items+additional_items`. Nếu làm vậy, chúng ta sẽ nhận được rất nhiều giá trị `NaN` (*Not a Number*) trong series kết quả. Điều này là do có các giá trị bị thiếu cho một số điểm index trong series `additional_items`, và việc cộng `NaN` với bất kỳ giá trị nào sẽ dẫn đến `NaN`. Do đó, chúng ta cần chỉ định tham số `fill_value` trong quá trình cộng. + +Với chuỗi thời gian, chúng ta cũng có thể **resample** series với các khoảng thời gian khác nhau. Ví dụ, giả sử chúng ta muốn tính khối lượng bán hàng trung bình hàng tháng. Chúng ta có thể sử dụng đoạn mã sau: +```python +monthly = total_items.resample("1M").mean() +ax = monthly.plot(kind='bar') +``` +![Biểu đồ trung bình chuỗi thời gian hàng tháng](../../../../translated_images/timeseries-3.f3147cbc8c624881008564bc0b5d9fcc15e7374d339da91766bd0e1c6bd9e3af.vi.png) + +### DataFrame + +DataFrame về cơ bản là một tập hợp các series có cùng index. Chúng ta có thể kết hợp nhiều series lại với nhau thành một DataFrame: +```python +a = pd.Series(range(1,10)) +b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9)) +df = pd.DataFrame([a,b]) +``` +Điều này sẽ tạo ra một bảng ngang như sau: +| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | +| --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- | +| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | +| 1 | I | like | to | use | Python | and | Pandas | very | much | + +Chúng ta cũng có thể sử dụng Series làm cột và chỉ định tên cột bằng cách sử dụng dictionary: +```python +df = pd.DataFrame({ 'A' : a, 'B' : b }) +``` +Điều này sẽ cho chúng ta một bảng như sau: + +| | A | B | +| --- | --- | ------ | +| 0 | 1 | I | +| 1 | 2 | like | +| 2 | 3 | to | +| 3 | 4 | use | +| 4 | 5 | Python | +| 5 | 6 | and | +| 6 | 7 | Pandas | +| 7 | 8 | very | +| 8 | 9 | much | + +**Lưu ý** rằng chúng ta cũng có thể có bố cục bảng này bằng cách chuyển vị bảng trước đó, ví dụ bằng cách viết +```python +df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' }) +``` +Ở đây `.T` có nghĩa là thao tác chuyển vị DataFrame, tức là thay đổi hàng và cột, và thao tác `rename` cho phép chúng ta đổi tên cột để khớp với ví dụ trước. + +Dưới đây là một số thao tác quan trọng nhất mà chúng ta có thể thực hiện trên DataFrames: + +**Chọn cột**. Chúng ta có thể chọn các cột riêng lẻ bằng cách viết `df['A']` - thao tác này trả về một Series. Chúng ta cũng có thể chọn một tập hợp con của các cột thành một DataFrame khác bằng cách viết `df[['B','A']]` - thao tác này trả về một DataFrame khác. + +**Lọc** chỉ các hàng nhất định theo tiêu chí. Ví dụ, để chỉ giữ lại các hàng có cột `A` lớn hơn 5, chúng ta có thể viết `df[df['A']>5]`. + +> **Lưu ý**: Cách hoạt động của lọc là như sau. Biểu thức `df['A']<5` trả về một series boolean, chỉ ra liệu biểu thức có `True` hay `False` cho từng phần tử của series gốc `df['A']`. Khi series boolean được sử dụng làm index, nó trả về tập hợp con của các hàng trong DataFrame. Do đó, không thể sử dụng biểu thức boolean Python tùy ý, ví dụ, viết `df[df['A']>5 and df['A']<7]` sẽ sai. Thay vào đó, bạn nên sử dụng thao tác đặc biệt `&` trên series boolean, viết `df[(df['A']>5) & (df['A']<7)]` (*dấu ngoặc rất quan trọng ở đây*). + +**Tạo các cột có thể tính toán mới**. Chúng ta có thể dễ dàng tạo các cột có thể tính toán mới cho DataFrame của mình bằng cách sử dụng biểu thức trực quan như sau: +```python +df['DivA'] = df['A']-df['A'].mean() +``` +Ví dụ này tính độ lệch của A so với giá trị trung bình của nó. Điều thực sự xảy ra ở đây là chúng ta đang tính một series, sau đó gán series này cho vế trái, tạo một cột mới. Do đó, chúng ta không thể sử dụng bất kỳ thao tác nào không tương thích với series, ví dụ, đoạn mã dưới đây là sai: +```python +# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi" +df['LenB'] = len(df['B']) # <- Wrong result +``` +Ví dụ sau, mặc dù cú pháp đúng, nhưng cho kết quả sai, vì nó gán độ dài của series `B` cho tất cả các giá trị trong cột, chứ không phải độ dài của từng phần tử như chúng ta mong muốn. + +Nếu chúng ta cần tính các biểu thức phức tạp như vậy, chúng ta có thể sử dụng hàm `apply`. Ví dụ cuối cùng có thể được viết như sau: +```python +df['LenB'] = df['B'].apply(lambda x : len(x)) +# or +df['LenB'] = df['B'].apply(len) +``` + +Sau các thao tác trên, chúng ta sẽ có DataFrame sau: + +| | A | B | DivA | LenB | +| --- | --- | ------ | ---- | ---- | +| 0 | 1 | I | -4.0 | 1 | +| 1 | 2 | like | -3.0 | 4 | +| 2 | 3 | to | -2.0 | 2 | +| 3 | 4 | use | -1.0 | 3 | +| 4 | 5 | Python | 0.0 | 6 | +| 5 | 6 | and | 1.0 | 3 | +| 6 | 7 | Pandas | 2.0 | 6 | +| 7 | 8 | very | 3.0 | 4 | +| 8 | 9 | much | 4.0 | 4 | + +**Chọn hàng dựa trên số thứ tự** có thể được thực hiện bằng cách sử dụng cấu trúc `iloc`. Ví dụ, để chọn 5 hàng đầu tiên từ DataFrame: +```python +df.iloc[:5] +``` + +**Nhóm** thường được sử dụng để có kết quả tương tự như *bảng pivot* trong Excel. Giả sử chúng ta muốn tính giá trị trung bình của cột `A` cho mỗi số `LenB` nhất định. Sau đó, chúng ta có thể nhóm DataFrame của mình theo `LenB` và gọi `mean`: +```python +df.groupby(by='LenB').mean() +``` +Nếu chúng ta cần tính giá trị trung bình và số lượng phần tử trong nhóm, thì chúng ta có thể sử dụng hàm `aggregate` phức tạp hơn: +```python +df.groupby(by='LenB') \ + .aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \ + .rename(columns={ 'DivA' : 'Count', 'A' : 'Mean'}) +``` +Điều này cho chúng ta bảng sau: + +| LenB | Count | Mean | +| ---- | ----- | -------- | +| 1 | 1 | 1.000000 | +| 2 | 1 | 3.000000 | +| 3 | 2 | 5.000000 | +| 4 | 3 | 6.333333 | +| 6 | 2 | 6.000000 | + +### Lấy Dữ liệu +Chúng ta đã thấy việc tạo Series và DataFrames từ các đối tượng Python dễ dàng như thế nào. Tuy nhiên, dữ liệu thường xuất hiện dưới dạng tệp văn bản hoặc bảng Excel. May mắn thay, Pandas cung cấp cho chúng ta một cách đơn giản để tải dữ liệu từ ổ đĩa. Ví dụ, đọc tệp CSV đơn giản như sau: +```python +df = pd.read_csv('file.csv') +``` +Chúng ta sẽ xem thêm các ví dụ về việc tải dữ liệu, bao gồm cả việc lấy dữ liệu từ các trang web bên ngoài, trong phần "Thử thách". + +### In và Vẽ Biểu Đồ + +Một Nhà Khoa Học Dữ Liệu thường phải khám phá dữ liệu, vì vậy việc có thể trực quan hóa dữ liệu là rất quan trọng. Khi DataFrame lớn, nhiều lúc chúng ta chỉ muốn đảm bảo rằng mình đang làm đúng bằng cách in ra vài dòng đầu tiên. Điều này có thể thực hiện bằng cách gọi `df.head()`. Nếu bạn chạy nó từ Jupyter Notebook, nó sẽ in DataFrame dưới dạng bảng đẹp mắt. + +Chúng ta cũng đã thấy cách sử dụng hàm `plot` để trực quan hóa một số cột. Mặc dù `plot` rất hữu ích cho nhiều tác vụ và hỗ trợ nhiều loại biểu đồ khác nhau thông qua tham số `kind=`, bạn luôn có thể sử dụng thư viện `matplotlib` thô để vẽ những biểu đồ phức tạp hơn. Chúng ta sẽ tìm hiểu chi tiết về trực quan hóa dữ liệu trong các bài học riêng biệt của khóa học. + +Tổng quan này bao gồm các khái niệm quan trọng nhất của Pandas, tuy nhiên, thư viện này rất phong phú và không có giới hạn cho những gì bạn có thể làm với nó! Bây giờ, hãy áp dụng kiến thức này để giải quyết một vấn đề cụ thể. + +## 🚀 Thử thách 1: Phân Tích Sự Lây Lan của COVID + +Vấn đề đầu tiên chúng ta sẽ tập trung là mô hình hóa sự lây lan của dịch COVID-19. Để làm điều đó, chúng ta sẽ sử dụng dữ liệu về số lượng người bị nhiễm ở các quốc gia khác nhau, được cung cấp bởi [Trung tâm Khoa học Hệ thống và Kỹ thuật](https://systems.jhu.edu/) (CSSE) tại [Đại học Johns Hopkins](https://jhu.edu/). Bộ dữ liệu có sẵn tại [Kho GitHub này](https://github.com/CSSEGISandData/COVID-19). + +Vì chúng ta muốn minh họa cách xử lý dữ liệu, hãy mở [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) và đọc từ đầu đến cuối. Bạn cũng có thể thực thi các ô lệnh và thực hiện một số thử thách mà chúng tôi đã để lại cho bạn ở cuối. + +![COVID Spread](../../../../translated_images/covidspread.f3d131c4f1d260ab0344d79bac0abe7924598dd754859b165955772e1bd5e8a2.vi.png) + +> Nếu bạn không biết cách chạy mã trong Jupyter Notebook, hãy xem [bài viết này](https://soshnikov.com/education/how-to-execute-notebooks-from-github/). + +## Làm Việc Với Dữ Liệu Không Có Cấu Trúc + +Mặc dù dữ liệu thường xuất hiện dưới dạng bảng, trong một số trường hợp, chúng ta cần xử lý dữ liệu ít có cấu trúc hơn, ví dụ như văn bản hoặc hình ảnh. Trong trường hợp này, để áp dụng các kỹ thuật xử lý dữ liệu mà chúng ta đã thấy ở trên, chúng ta cần **trích xuất** dữ liệu có cấu trúc. Dưới đây là một vài ví dụ: + +* Trích xuất từ khóa từ văn bản và xem tần suất xuất hiện của các từ khóa đó +* Sử dụng mạng nơ-ron để trích xuất thông tin về các đối tượng trong hình ảnh +* Lấy thông tin về cảm xúc của con người từ luồng video camera + +## 🚀 Thử thách 2: Phân Tích Các Bài Báo Về COVID + +Trong thử thách này, chúng ta sẽ tiếp tục với chủ đề đại dịch COVID và tập trung vào việc xử lý các bài báo khoa học về chủ đề này. Có một [Bộ Dữ Liệu CORD-19](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) với hơn 7000 bài báo (tại thời điểm viết) về COVID, có sẵn với siêu dữ liệu và tóm tắt (và khoảng một nửa trong số đó cũng có toàn văn). + +Một ví dụ đầy đủ về việc phân tích bộ dữ liệu này bằng cách sử dụng dịch vụ nhận thức [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum) được mô tả [trong bài viết blog này](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Chúng ta sẽ thảo luận phiên bản đơn giản hóa của phân tích này. + +> **NOTE**: Chúng tôi không cung cấp bản sao của bộ dữ liệu như một phần của kho lưu trữ này. Bạn có thể cần tải xuống tệp [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) từ [bộ dữ liệu này trên Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Có thể cần đăng ký với Kaggle. Bạn cũng có thể tải xuống bộ dữ liệu mà không cần đăng ký [tại đây](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), nhưng nó sẽ bao gồm tất cả các văn bản đầy đủ ngoài tệp siêu dữ liệu. + +Mở [`notebook-papers.ipynb`](notebook-papers.ipynb) và đọc từ đầu đến cuối. Bạn cũng có thể thực thi các ô lệnh và thực hiện một số thử thách mà chúng tôi đã để lại cho bạn ở cuối. + +![Covid Medical Treatment](../../../../translated_images/covidtreat.b2ba59f57ca45fbcda36e0ddca3f8cfdddeeed6ca879ea7f866d93fa6ec65791.vi.png) + +## Xử Lý Dữ Liệu Hình Ảnh + +Gần đây, các mô hình AI rất mạnh mẽ đã được phát triển, cho phép chúng ta hiểu được hình ảnh. Có nhiều tác vụ có thể được giải quyết bằng cách sử dụng các mạng nơ-ron đã được huấn luyện trước hoặc các dịch vụ đám mây. Một số ví dụ bao gồm: + +* **Phân Loại Hình Ảnh**, giúp bạn phân loại hình ảnh vào một trong các lớp được định nghĩa trước. Bạn có thể dễ dàng huấn luyện bộ phân loại hình ảnh của riêng mình bằng các dịch vụ như [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) +* **Phát Hiện Đối Tượng** để phát hiện các đối tượng khác nhau trong hình ảnh. Các dịch vụ như [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) có thể phát hiện một số đối tượng phổ biến, và bạn có thể huấn luyện mô hình [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) để phát hiện một số đối tượng cụ thể mà bạn quan tâm. +* **Phát Hiện Khuôn Mặt**, bao gồm phát hiện Tuổi, Giới tính và Cảm xúc. Điều này có thể được thực hiện thông qua [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum). + +Tất cả các dịch vụ đám mây này có thể được gọi bằng [Python SDKs](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum), và do đó có thể dễ dàng tích hợp vào quy trình khám phá dữ liệu của bạn. + +Dưới đây là một số ví dụ về việc khám phá dữ liệu từ các nguồn dữ liệu hình ảnh: +* Trong bài viết blog [Học Khoa Học Dữ Liệu mà Không Cần Lập Trình](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/), chúng tôi khám phá các bức ảnh trên Instagram, cố gắng hiểu điều gì khiến mọi người thích một bức ảnh nhiều hơn. Chúng tôi đầu tiên trích xuất càng nhiều thông tin từ hình ảnh càng tốt bằng cách sử dụng [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), và sau đó sử dụng [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) để xây dựng mô hình có thể giải thích được. +* Trong [Hội Thảo Nghiên Cứu Khuôn Mặt](https://github.com/CloudAdvocacy/FaceStudies), chúng tôi sử dụng [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) để trích xuất cảm xúc của mọi người trên các bức ảnh từ các sự kiện, nhằm cố gắng hiểu điều gì khiến mọi người hạnh phúc. + +## Kết Luận + +Dù bạn đã có dữ liệu có cấu trúc hay không có cấu trúc, sử dụng Python, bạn có thể thực hiện tất cả các bước liên quan đến xử lý và hiểu dữ liệu. Đây có lẽ là cách linh hoạt nhất để xử lý dữ liệu, và đó là lý do tại sao phần lớn các nhà khoa học dữ liệu sử dụng Python như công cụ chính của họ. Học Python một cách sâu sắc có lẽ là một ý tưởng tốt nếu bạn nghiêm túc với hành trình khoa học dữ liệu của mình! + +## [Câu hỏi sau bài giảng](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/13) + +## Ôn Tập & Tự Học + +**Sách** +* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662) + +**Tài Nguyên Trực Tuyến** +* Hướng dẫn chính thức [10 phút với Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) +* [Tài liệu về Trực Quan Hóa Dữ Liệu với Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html) + +**Học Python** +* [Học Python một cách thú vị với Turtle Graphics và Fractals](https://github.com/shwars/pycourse) +* [Bắt đầu với Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) trên [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) + +## Bài Tập + +[Thực hiện nghiên cứu dữ liệu chi tiết hơn cho các thử thách ở trên](assignment.md) + +## Ghi Công + +Bài học này được viết với ♥️ bởi [Dmitry Soshnikov](http://soshnikov.com) + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tham khảo chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/2-Working-With-Data/07-python/assignment.md b/translations/vi/2-Working-With-Data/07-python/assignment.md new file mode 100644 index 00000000..f6e9a604 --- /dev/null +++ b/translations/vi/2-Working-With-Data/07-python/assignment.md @@ -0,0 +1,37 @@ + +# Bài tập xử lý dữ liệu trong Python + +Trong bài tập này, chúng tôi yêu cầu bạn phát triển thêm mã mà chúng tôi đã bắt đầu xây dựng trong các thử thách trước. Bài tập gồm hai phần: + +## Mô hình hóa sự lây lan của COVID-19 + + - [ ] Vẽ đồ thị *R* cho 5-6 quốc gia khác nhau trên một biểu đồ để so sánh, hoặc sử dụng nhiều biểu đồ đặt cạnh nhau. + - [ ] Xem cách số ca tử vong và số ca hồi phục tương quan với số ca nhiễm bệnh. + - [ ] Tìm hiểu thời gian trung bình của một bệnh bằng cách trực quan hóa tỷ lệ nhiễm bệnh và tỷ lệ tử vong, đồng thời tìm kiếm một số điểm bất thường. Bạn có thể cần xem xét các quốc gia khác nhau để tìm ra điều này. + - [ ] Tính tỷ lệ tử vong và cách nó thay đổi theo thời gian. *Bạn có thể muốn tính đến thời gian kéo dài của bệnh (tính theo ngày) để dịch chuyển một chuỗi thời gian trước khi thực hiện các phép tính.* + +## Phân tích các bài báo về COVID-19 + +- [ ] Xây dựng ma trận đồng xuất hiện của các loại thuốc khác nhau và xem loại thuốc nào thường xuất hiện cùng nhau (tức là được đề cập trong một bản tóm tắt). Bạn có thể chỉnh sửa mã để xây dựng ma trận đồng xuất hiện cho các loại thuốc và chẩn đoán. +- [ ] Trực quan hóa ma trận này bằng cách sử dụng heatmap. +- [ ] Mục tiêu mở rộng: trực quan hóa sự đồng xuất hiện của các loại thuốc bằng [chord diagram](https://en.wikipedia.org/wiki/Chord_diagram). [Thư viện này](https://pypi.org/project/chord/) có thể giúp bạn vẽ chord diagram. +- [ ] Mục tiêu mở rộng khác: trích xuất liều lượng của các loại thuốc khác nhau (chẳng hạn như **400mg** trong *uống 400mg chloroquine mỗi ngày*) bằng cách sử dụng biểu thức chính quy, và xây dựng dataframe hiển thị các liều lượng khác nhau cho từng loại thuốc. **Lưu ý**: xem xét các giá trị số nằm gần tên thuốc trong văn bản. + +## Tiêu chí đánh giá + +Xuất sắc | Đạt yêu cầu | Cần cải thiện +--- | --- | -- | +Hoàn thành tất cả các nhiệm vụ, minh họa bằng đồ họa và giải thích rõ ràng, bao gồm ít nhất một trong hai mục tiêu mở rộng | Hoàn thành hơn 5 nhiệm vụ, không thực hiện mục tiêu mở rộng, hoặc kết quả không rõ ràng | Hoàn thành dưới 5 (nhưng hơn 3) nhiệm vụ, các hình ảnh trực quan không giúp làm rõ vấn đề + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tham khảo chính thức. Đối với các thông tin quan trọng, chúng tôi khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/2-Working-With-Data/08-data-preparation/README.md b/translations/vi/2-Working-With-Data/08-data-preparation/README.md new file mode 100644 index 00000000..5ada21ab --- /dev/null +++ b/translations/vi/2-Working-With-Data/08-data-preparation/README.md @@ -0,0 +1,346 @@ + +# Làm việc với Dữ liệu: Chuẩn bị Dữ liệu + +|![ Sketchnote của [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/08-DataPreparation.png)| +|:---:| +|Chuẩn bị Dữ liệu - _Sketchnote của [@nitya](https://twitter.com/nitya)_ | + +## [Câu hỏi trước bài giảng](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/14) + +Tùy thuộc vào nguồn gốc, dữ liệu thô có thể chứa một số điểm không nhất quán gây khó khăn trong việc phân tích và mô hình hóa. Nói cách khác, dữ liệu này có thể được coi là "bẩn" và cần được làm sạch. Bài học này tập trung vào các kỹ thuật làm sạch và chuyển đổi dữ liệu để xử lý các vấn đề như dữ liệu thiếu, không chính xác hoặc không đầy đủ. Các chủ đề được đề cập trong bài học này sẽ sử dụng Python và thư viện Pandas và sẽ được [trình bày trong notebook](notebook.ipynb) trong thư mục này. + +## Tầm quan trọng của việc làm sạch dữ liệu + +- **Dễ sử dụng và tái sử dụng**: Khi dữ liệu được tổ chức và chuẩn hóa đúng cách, việc tìm kiếm, sử dụng và chia sẻ với người khác trở nên dễ dàng hơn. + +- **Tính nhất quán**: Khoa học dữ liệu thường yêu cầu làm việc với nhiều tập dữ liệu, nơi các tập dữ liệu từ các nguồn khác nhau cần được kết hợp lại. Đảm bảo rằng mỗi tập dữ liệu riêng lẻ có tiêu chuẩn chung sẽ đảm bảo rằng dữ liệu vẫn hữu ích khi chúng được hợp nhất thành một tập dữ liệu duy nhất. + +- **Độ chính xác của mô hình**: Dữ liệu đã được làm sạch sẽ cải thiện độ chính xác của các mô hình dựa vào nó. + +## Các mục tiêu và chiến lược làm sạch phổ biến + +- **Khám phá tập dữ liệu**: Khám phá dữ liệu, được đề cập trong một [bài học sau](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/4-Data-Science-Lifecycle/15-analyzing), có thể giúp bạn phát hiện dữ liệu cần được làm sạch. Quan sát trực quan các giá trị trong một tập dữ liệu có thể thiết lập kỳ vọng về phần còn lại của nó hoặc cung cấp ý tưởng về các vấn đề có thể được giải quyết. Khám phá có thể bao gồm truy vấn cơ bản, trực quan hóa và lấy mẫu. + +- **Định dạng**: Tùy thuộc vào nguồn, dữ liệu có thể có sự không nhất quán trong cách trình bày. Điều này có thể gây ra vấn đề trong việc tìm kiếm và biểu diễn giá trị, nơi nó được nhìn thấy trong tập dữ liệu nhưng không được biểu diễn đúng cách trong trực quan hóa hoặc kết quả truy vấn. Các vấn đề định dạng phổ biến bao gồm xử lý khoảng trắng, ngày tháng và kiểu dữ liệu. Việc giải quyết các vấn đề định dạng thường phụ thuộc vào người sử dụng dữ liệu. Ví dụ, tiêu chuẩn về cách trình bày ngày tháng và số có thể khác nhau giữa các quốc gia. + +- **Trùng lặp**: Dữ liệu có nhiều hơn một lần xuất hiện có thể tạo ra kết quả không chính xác và thường nên được loại bỏ. Đây có thể là một hiện tượng phổ biến khi kết hợp hai hoặc nhiều tập dữ liệu. Tuy nhiên, có những trường hợp trùng lặp trong các tập dữ liệu kết hợp chứa các phần có thể cung cấp thông tin bổ sung và có thể cần được giữ lại. + +- **Dữ liệu thiếu**: Dữ liệu thiếu có thể gây ra kết quả không chính xác cũng như kết quả yếu hoặc thiên lệch. Đôi khi điều này có thể được giải quyết bằng cách "tải lại" dữ liệu, điền vào các giá trị thiếu bằng tính toán và mã như Python, hoặc đơn giản là loại bỏ giá trị và dữ liệu tương ứng. Có nhiều lý do khiến dữ liệu bị thiếu và các hành động được thực hiện để giải quyết các giá trị thiếu này có thể phụ thuộc vào cách và lý do tại sao chúng bị thiếu ngay từ đầu. + +## Khám phá thông tin DataFrame +> **Mục tiêu học tập:** Sau phần này, bạn sẽ cảm thấy thoải mái khi tìm kiếm thông tin chung về dữ liệu được lưu trữ trong các DataFrame của pandas. + +Khi bạn đã tải dữ liệu vào pandas, dữ liệu đó có khả năng sẽ ở dạng DataFrame (tham khảo [bài học trước](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/2-Working-With-Data/07-python#dataframe) để có cái nhìn tổng quan chi tiết). Tuy nhiên, nếu tập dữ liệu trong DataFrame của bạn có 60.000 hàng và 400 cột, làm thế nào để bạn bắt đầu hiểu được những gì bạn đang làm việc? May mắn thay, [pandas](https://pandas.pydata.org/) cung cấp một số công cụ tiện lợi để nhanh chóng xem thông tin tổng quan về một DataFrame ngoài các hàng đầu tiên và cuối cùng. + +Để khám phá chức năng này, chúng ta sẽ nhập thư viện scikit-learn của Python và sử dụng một tập dữ liệu mang tính biểu tượng: **tập dữ liệu Iris**. + +```python +import pandas as pd +from sklearn.datasets import load_iris + +iris = load_iris() +iris_df = pd.DataFrame(data=iris['data'], columns=iris['feature_names']) +``` +| |sepal length (cm)|sepal width (cm)|petal length (cm)|petal width (cm)| +|----------------------------------------|-----------------|----------------|-----------------|----------------| +|0 |5.1 |3.5 |1.4 |0.2 | +|1 |4.9 |3.0 |1.4 |0.2 | +|2 |4.7 |3.2 |1.3 |0.2 | +|3 |4.6 |3.1 |1.5 |0.2 | +|4 |5.0 |3.6 |1.4 |0.2 | + +- **DataFrame.info**: Để bắt đầu, phương thức `info()` được sử dụng để in ra tóm tắt nội dung có trong một `DataFrame`. Hãy xem tập dữ liệu này để xem chúng ta có gì: +```python +iris_df.info() +``` +``` +RangeIndex: 150 entries, 0 to 149 +Data columns (total 4 columns): + # Column Non-Null Count Dtype +--- ------ -------------- ----- + 0 sepal length (cm) 150 non-null float64 + 1 sepal width (cm) 150 non-null float64 + 2 petal length (cm) 150 non-null float64 + 3 petal width (cm) 150 non-null float64 +dtypes: float64(4) +memory usage: 4.8 KB +``` +Từ đây, chúng ta biết rằng tập dữ liệu *Iris* có 150 mục trong bốn cột và không có mục nào bị thiếu. Tất cả dữ liệu được lưu trữ dưới dạng số thực 64-bit. + +- **DataFrame.head()**: Tiếp theo, để kiểm tra nội dung thực tế của `DataFrame`, chúng ta sử dụng phương thức `head()`. Hãy xem vài hàng đầu tiên của `iris_df` trông như thế nào: +```python +iris_df.head() +``` +``` + sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) +0 5.1 3.5 1.4 0.2 +1 4.9 3.0 1.4 0.2 +2 4.7 3.2 1.3 0.2 +3 4.6 3.1 1.5 0.2 +4 5.0 3.6 1.4 0.2 +``` +- **DataFrame.tail()**: Ngược lại, để kiểm tra vài hàng cuối cùng của `DataFrame`, chúng ta sử dụng phương thức `tail()`: +```python +iris_df.tail() +``` +``` + sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) +145 6.7 3.0 5.2 2.3 +146 6.3 2.5 5.0 1.9 +147 6.5 3.0 5.2 2.0 +148 6.2 3.4 5.4 2.3 +149 5.9 3.0 5.1 1.8 +``` +> **Kết luận:** Chỉ cần nhìn vào siêu dữ liệu về thông tin trong một DataFrame hoặc vài giá trị đầu tiên và cuối cùng trong đó, bạn có thể có ngay ý tưởng về kích thước, hình dạng và nội dung của dữ liệu mà bạn đang xử lý. + +## Xử lý Dữ liệu Thiếu +> **Mục tiêu học tập:** Sau phần này, bạn sẽ biết cách thay thế hoặc loại bỏ các giá trị null khỏi DataFrame. + +Hầu hết thời gian, các tập dữ liệu bạn muốn sử dụng (hoặc phải sử dụng) đều có các giá trị bị thiếu. Cách xử lý dữ liệu thiếu mang theo những sự đánh đổi tinh tế có thể ảnh hưởng đến phân tích cuối cùng và kết quả thực tế. + +Pandas xử lý các giá trị thiếu theo hai cách. Cách đầu tiên bạn đã thấy trong các phần trước: `NaN`, hoặc Not a Number. Đây thực chất là một giá trị đặc biệt thuộc về đặc tả số thực IEEE và chỉ được sử dụng để chỉ ra các giá trị số thực bị thiếu. + +Đối với các giá trị thiếu không phải số thực, pandas sử dụng đối tượng `None` của Python. Mặc dù có vẻ khó hiểu khi bạn sẽ gặp hai loại giá trị khác nhau để biểu thị cùng một điều, nhưng có những lý do lập trình hợp lý cho thiết kế này và, trên thực tế, cách tiếp cận này cho phép pandas cung cấp một sự thỏa hiệp tốt cho phần lớn các trường hợp. Tuy nhiên, cả `None` và `NaN` đều mang theo những hạn chế mà bạn cần lưu ý liên quan đến cách chúng có thể được sử dụng. + +Tìm hiểu thêm về `NaN` và `None` từ [notebook](https://github.com/microsoft/Data-Science-For-Beginners/blob/main/4-Data-Science-Lifecycle/15-analyzing/notebook.ipynb)! + +- **Phát hiện giá trị null**: Trong `pandas`, các phương thức `isnull()` và `notnull()` là các phương thức chính để phát hiện dữ liệu null. Cả hai đều trả về mặt nạ Boolean trên dữ liệu của bạn. Chúng ta sẽ sử dụng `numpy` cho các giá trị `NaN`: +```python +import numpy as np + +example1 = pd.Series([0, np.nan, '', None]) +example1.isnull() +``` +``` +0 False +1 True +2 False +3 True +dtype: bool +``` +Hãy nhìn kỹ vào kết quả. Có điều gì làm bạn ngạc nhiên không? Mặc dù `0` là một null số học, nhưng nó vẫn là một số nguyên hợp lệ và pandas coi nó như vậy. `''` thì tinh tế hơn một chút. Mặc dù chúng ta đã sử dụng nó trong Phần 1 để biểu thị một giá trị chuỗi rỗng, nhưng nó vẫn là một đối tượng chuỗi và không phải là biểu thị null theo quan điểm của pandas. + +Bây giờ, hãy đảo ngược điều này và sử dụng các phương thức này theo cách giống như bạn sẽ sử dụng chúng trong thực tế. Bạn có thể sử dụng mặt nạ Boolean trực tiếp như một chỉ mục ``Series`` hoặc ``DataFrame``, điều này có thể hữu ích khi cố gắng làm việc với các giá trị bị thiếu (hoặc có mặt) riêng lẻ. + +> **Kết luận**: Cả hai phương thức `isnull()` và `notnull()` đều tạo ra kết quả tương tự khi bạn sử dụng chúng trong `DataFrame`: chúng hiển thị kết quả và chỉ mục của các kết quả đó, điều này sẽ giúp bạn rất nhiều khi xử lý dữ liệu của mình. + +- **Loại bỏ giá trị null**: Ngoài việc xác định các giá trị thiếu, pandas cung cấp một phương tiện tiện lợi để loại bỏ các giá trị null khỏi `Series` và `DataFrame`. (Đặc biệt trên các tập dữ liệu lớn, thường nên loại bỏ các giá trị thiếu [NA] khỏi phân tích của bạn hơn là xử lý chúng theo cách khác.) Để thấy điều này trong thực tế, hãy quay lại `example1`: +```python +example1 = example1.dropna() +example1 +``` +``` +0 0 +2 +dtype: object +``` +Lưu ý rằng điều này sẽ giống với kết quả đầu ra từ `example3[example3.notnull()]`. Sự khác biệt ở đây là, thay vì chỉ lập chỉ mục trên các giá trị được che, `dropna` đã loại bỏ các giá trị thiếu khỏi `Series` `example1`. + +Vì `DataFrame` có hai chiều, chúng cung cấp nhiều tùy chọn hơn để loại bỏ dữ liệu. + +```python +example2 = pd.DataFrame([[1, np.nan, 7], + [2, 5, 8], + [np.nan, 6, 9]]) +example2 +``` +| | 0 | 1 | 2 | +|------|---|---|---| +|0 |1.0|NaN|7 | +|1 |2.0|5.0|8 | +|2 |NaN|6.0|9 | + +(Bạn có nhận thấy rằng pandas đã chuyển đổi hai cột thành số thực để phù hợp với các giá trị `NaN` không?) + +Bạn không thể loại bỏ một giá trị duy nhất khỏi một `DataFrame`, vì vậy bạn phải loại bỏ toàn bộ hàng hoặc cột. Tùy thuộc vào những gì bạn đang làm, bạn có thể muốn làm một trong hai điều này, và vì vậy pandas cung cấp cho bạn các tùy chọn cho cả hai. Vì trong khoa học dữ liệu, các cột thường đại diện cho các biến và các hàng đại diện cho các quan sát, bạn có nhiều khả năng loại bỏ các hàng dữ liệu hơn; cài đặt mặc định cho `dropna()` là loại bỏ tất cả các hàng chứa bất kỳ giá trị null nào: + +```python +example2.dropna() +``` +``` + 0 1 2 +1 2.0 5.0 8 +``` +Nếu cần, bạn có thể loại bỏ các giá trị NA khỏi các cột. Sử dụng `axis=1` để làm điều đó: +```python +example2.dropna(axis='columns') +``` +``` + 2 +0 7 +1 8 +2 9 +``` +Lưu ý rằng điều này có thể loại bỏ rất nhiều dữ liệu mà bạn có thể muốn giữ lại, đặc biệt là trong các tập dữ liệu nhỏ hơn. Điều gì sẽ xảy ra nếu bạn chỉ muốn loại bỏ các hàng hoặc cột chứa một số hoặc thậm chí tất cả các giá trị null? Bạn có thể chỉ định các cài đặt đó trong `dropna` với các tham số `how` và `thresh`. + +Theo mặc định, `how='any'` (nếu bạn muốn tự kiểm tra hoặc xem phương thức này có các tham số nào khác, hãy chạy `example4.dropna?` trong một ô mã). Bạn có thể thay thế chỉ định `how='all'` để chỉ loại bỏ các hàng hoặc cột chứa tất cả các giá trị null. Hãy mở rộng `DataFrame` ví dụ của chúng ta để thấy điều này trong thực tế. + +```python +example2[3] = np.nan +example2 +``` +| |0 |1 |2 |3 | +|------|---|---|---|---| +|0 |1.0|NaN|7 |NaN| +|1 |2.0|5.0|8 |NaN| +|2 |NaN|6.0|9 |NaN| + +Tham số `thresh` cung cấp cho bạn sự kiểm soát chi tiết hơn: bạn đặt số lượng giá trị *không null* mà một hàng hoặc cột cần có để được giữ lại: +```python +example2.dropna(axis='rows', thresh=3) +``` +``` + 0 1 2 3 +1 2.0 5.0 8 NaN +``` +Ở đây, hàng đầu tiên và cuối cùng đã bị loại bỏ, vì chúng chỉ chứa hai giá trị không null. + +- **Điền giá trị null**: Tùy thuộc vào tập dữ liệu của bạn, đôi khi có thể hợp lý hơn khi điền các giá trị null bằng các giá trị hợp lệ thay vì loại bỏ chúng. Bạn có thể sử dụng `isnull` để làm điều này tại chỗ, nhưng điều đó có thể tốn công, đặc biệt nếu bạn có nhiều giá trị cần điền. Vì đây là một nhiệm vụ phổ biến trong khoa học dữ liệu, pandas cung cấp `fillna`, phương thức trả về một bản sao của `Series` hoặc `DataFrame` với các giá trị thiếu được thay thế bằng một giá trị bạn chọn. Hãy tạo một `Series` ví dụ khác để xem cách hoạt động của điều này trong thực tế. +```python +example3 = pd.Series([1, np.nan, 2, None, 3], index=list('abcde')) +example3 +``` +``` +a 1.0 +b NaN +c 2.0 +d NaN +e 3.0 +dtype: float64 +``` +Bạn có thể điền tất cả các mục null bằng một giá trị duy nhất, chẳng hạn như `0`: +```python +example3.fillna(0) +``` +``` +a 1.0 +b 0.0 +c 2.0 +d 0.0 +e 3.0 +dtype: float64 +``` +Bạn có thể **điền tiến** các giá trị null, tức là sử dụng giá trị hợp lệ cuối cùng để điền vào null: +```python +example3.fillna(method='ffill') +``` +``` +a 1.0 +b 1.0 +c 2.0 +d 2.0 +e 3.0 +dtype: float64 +``` +Bạn cũng có thể **điền lùi** để truyền giá trị hợp lệ tiếp theo ngược lại để điền vào null: +```python +example3.fillna(method='bfill') +``` +``` +a 1.0 +b 2.0 +c 2.0 +d 3.0 +e 3.0 +dtype: float64 +``` +Như bạn có thể đoán, điều này hoạt động tương tự với `DataFrame`, nhưng bạn cũng có thể chỉ định một `axis` dọc theo đó để điền các giá trị null. Sử dụng lại `example2` đã sử dụng trước đó: +```python +example2.fillna(method='ffill', axis=1) +``` +``` + 0 1 2 3 +0 1.0 1.0 7.0 7.0 +1 2.0 5.0 8.0 8.0 +2 NaN 6.0 9.0 9.0 +``` +Lưu ý rằng khi không có giá trị trước đó để điền tiến, giá trị null vẫn được giữ lại. +> **Điểm chính:** Có nhiều cách để xử lý giá trị thiếu trong tập dữ liệu của bạn. Chiến lược cụ thể mà bạn sử dụng (loại bỏ, thay thế, hoặc cách bạn thay thế) nên được quyết định bởi đặc điểm của dữ liệu đó. Bạn sẽ phát triển khả năng xử lý giá trị thiếu tốt hơn khi bạn làm việc và tương tác nhiều hơn với các tập dữ liệu. + +## Loại bỏ dữ liệu trùng lặp + +> **Mục tiêu học tập:** Sau phần này, bạn sẽ cảm thấy thoải mái khi xác định và loại bỏ các giá trị trùng lặp trong DataFrames. + +Ngoài dữ liệu thiếu, bạn thường gặp dữ liệu trùng lặp trong các tập dữ liệu thực tế. May mắn thay, `pandas` cung cấp một cách dễ dàng để phát hiện và loại bỏ các mục trùng lặp. + +- **Xác định dữ liệu trùng lặp: `duplicated`**: Bạn có thể dễ dàng phát hiện các giá trị trùng lặp bằng phương pháp `duplicated` trong pandas, phương pháp này trả về một mặt nạ Boolean cho biết liệu một mục trong `DataFrame` có trùng lặp với một mục trước đó hay không. Hãy tạo một ví dụ `DataFrame` khác để xem cách hoạt động này. +```python +example4 = pd.DataFrame({'letters': ['A','B'] * 2 + ['B'], + 'numbers': [1, 2, 1, 3, 3]}) +example4 +``` +| |letters|numbers| +|------|-------|-------| +|0 |A |1 | +|1 |B |2 | +|2 |A |1 | +|3 |B |3 | +|4 |B |3 | + +```python +example4.duplicated() +``` +``` +0 False +1 False +2 True +3 False +4 True +dtype: bool +``` +- **Loại bỏ dữ liệu trùng lặp: `drop_duplicates`:** chỉ đơn giản trả về một bản sao của dữ liệu mà tất cả các giá trị `duplicated` là `False`: +```python +example4.drop_duplicates() +``` +``` + letters numbers +0 A 1 +1 B 2 +3 B 3 +``` +Cả `duplicated` và `drop_duplicates` mặc định xem xét tất cả các cột, nhưng bạn có thể chỉ định rằng chúng chỉ kiểm tra một tập hợp con các cột trong `DataFrame` của bạn: +```python +example4.drop_duplicates(['letters']) +``` +``` +letters numbers +0 A 1 +1 B 2 +``` + +> **Điểm chính:** Loại bỏ dữ liệu trùng lặp là một phần thiết yếu của hầu hết các dự án khoa học dữ liệu. Dữ liệu trùng lặp có thể làm thay đổi kết quả phân tích của bạn và dẫn đến kết quả không chính xác! + + +## 🚀 Thử thách + +Tất cả các tài liệu đã thảo luận đều được cung cấp dưới dạng [Jupyter Notebook](https://github.com/microsoft/Data-Science-For-Beginners/blob/main/2-Working-With-Data/08-data-preparation/notebook.ipynb). Ngoài ra, có các bài tập sau mỗi phần, hãy thử làm chúng! + +## [Câu hỏi sau bài giảng](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/15) + + + +## Ôn tập & Tự học + +Có nhiều cách để khám phá và tiếp cận việc chuẩn bị dữ liệu của bạn cho phân tích và mô hình hóa, và việc làm sạch dữ liệu là một bước quan trọng mang tính "thực hành". Hãy thử các thử thách này từ Kaggle để khám phá các kỹ thuật mà bài học này chưa đề cập. + +- [Thử thách Làm sạch Dữ liệu: Phân tích Ngày tháng](https://www.kaggle.com/rtatman/data-cleaning-challenge-parsing-dates/) + +- [Thử thách Làm sạch Dữ liệu: Chuẩn hóa và Tỷ lệ hóa Dữ liệu](https://www.kaggle.com/rtatman/data-cleaning-challenge-scale-and-normalize-data) + + +## Bài tập + +[Đánh giá Dữ liệu từ một Biểu mẫu](assignment.md) + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tham khảo chính thức. Đối với các thông tin quan trọng, chúng tôi khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/2-Working-With-Data/08-data-preparation/assignment.md b/translations/vi/2-Working-With-Data/08-data-preparation/assignment.md new file mode 100644 index 00000000..3da174ed --- /dev/null +++ b/translations/vi/2-Working-With-Data/08-data-preparation/assignment.md @@ -0,0 +1,28 @@ + +# Đánh giá Dữ liệu từ một Biểu mẫu + +Một khách hàng đã thử nghiệm một [biểu mẫu nhỏ](../../../../2-Working-With-Data/08-data-preparation/index.html) để thu thập một số dữ liệu cơ bản về nhóm khách hàng của họ. Họ đã mang kết quả thu thập được đến bạn để xác thực dữ liệu. Bạn có thể mở trang `index.html` trong trình duyệt để xem biểu mẫu. + +Bạn đã được cung cấp một [bộ dữ liệu các bản ghi csv](../../../../data/form.csv) chứa các mục nhập từ biểu mẫu cũng như một số hình ảnh trực quan cơ bản. Khách hàng đã chỉ ra rằng một số hình ảnh trực quan trông không chính xác nhưng họ không chắc cách giải quyết vấn đề này. Bạn có thể khám phá nó trong [notebook bài tập](assignment.ipynb). + +## Hướng dẫn + +Sử dụng các kỹ thuật trong bài học này để đưa ra các khuyến nghị về biểu mẫu nhằm thu thập thông tin chính xác và nhất quán. + +## Tiêu chí đánh giá + +Xuất sắc | Đạt yêu cầu | Cần cải thiện +--- | --- | --- | + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm về bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/2-Working-With-Data/README.md b/translations/vi/2-Working-With-Data/README.md new file mode 100644 index 00000000..73d31520 --- /dev/null +++ b/translations/vi/2-Working-With-Data/README.md @@ -0,0 +1,31 @@ + +# Làm việc với Dữ liệu + +![data love](../../../translated_images/data-love.a22ef29e6742c852505ada062920956d3d7604870b281a8ca7c7ac6f37381d5a.vi.jpg) +> Ảnh của Alexander Sinn trên Unsplash + +Trong các bài học này, bạn sẽ tìm hiểu một số cách mà dữ liệu có thể được quản lý, xử lý và sử dụng trong các ứng dụng. Bạn sẽ học về cơ sở dữ liệu quan hệ và phi quan hệ, cũng như cách dữ liệu có thể được lưu trữ trong chúng. Bạn sẽ nắm được các kiến thức cơ bản về cách làm việc với Python để quản lý dữ liệu, và khám phá một số cách mà Python có thể được sử dụng để quản lý và khai thác dữ liệu. + +### Các chủ đề + +1. [Cơ sở dữ liệu quan hệ](05-relational-databases/README.md) +2. [Cơ sở dữ liệu phi quan hệ](06-non-relational/README.md) +3. [Làm việc với Python](07-python/README.md) +4. [Chuẩn bị dữ liệu](08-data-preparation/README.md) + +### Ghi nhận + +Các bài học này được viết với ❤️ bởi [Christopher Harrison](https://twitter.com/geektrainer), [Dmitry Soshnikov](https://twitter.com/shwars) và [Jasmine Greenaway](https://twitter.com/paladique) + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc sự không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tham khảo chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/3-Data-Visualization/09-visualization-quantities/README.md b/translations/vi/3-Data-Visualization/09-visualization-quantities/README.md new file mode 100644 index 00000000..e142f8d0 --- /dev/null +++ b/translations/vi/3-Data-Visualization/09-visualization-quantities/README.md @@ -0,0 +1,217 @@ + +# Hình dung số lượng + +|![ Sketchnote của [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/09-Visualizing-Quantities.png)| +|:---:| +| Hình dung số lượng - _Sketchnote của [@nitya](https://twitter.com/nitya)_ | + +Trong bài học này, bạn sẽ khám phá cách sử dụng một trong nhiều thư viện Python có sẵn để học cách tạo ra các hình ảnh trực quan thú vị xoay quanh khái niệm về số lượng. Sử dụng một tập dữ liệu đã được làm sạch về các loài chim ở Minnesota, bạn có thể tìm hiểu nhiều thông tin thú vị về động vật hoang dã địa phương. +## [Câu hỏi trước bài giảng](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/16) + +## Quan sát sải cánh với Matplotlib + +Một thư viện tuyệt vời để tạo cả biểu đồ đơn giản và phức tạp thuộc nhiều loại khác nhau là [Matplotlib](https://matplotlib.org/stable/index.html). Nói chung, quá trình vẽ dữ liệu bằng các thư viện này bao gồm việc xác định các phần của dataframe mà bạn muốn nhắm đến, thực hiện các chuyển đổi cần thiết trên dữ liệu đó, gán giá trị trục x và y, quyết định loại biểu đồ nào sẽ hiển thị, và sau đó hiển thị biểu đồ. Matplotlib cung cấp nhiều loại hình ảnh trực quan, nhưng trong bài học này, hãy tập trung vào những loại phù hợp nhất để hình dung số lượng: biểu đồ đường, biểu đồ phân tán, và biểu đồ cột. + +> ✅ Sử dụng biểu đồ tốt nhất phù hợp với cấu trúc dữ liệu và câu chuyện bạn muốn kể. +> - Để phân tích xu hướng theo thời gian: biểu đồ đường +> - Để so sánh giá trị: biểu đồ cột, biểu đồ thanh, biểu đồ tròn, biểu đồ phân tán +> - Để hiển thị mối quan hệ giữa các phần và tổng thể: biểu đồ tròn +> - Để hiển thị phân phối dữ liệu: biểu đồ phân tán, biểu đồ thanh +> - Để hiển thị xu hướng: biểu đồ đường, biểu đồ cột +> - Để hiển thị mối quan hệ giữa các giá trị: biểu đồ đường, biểu đồ phân tán, biểu đồ bong bóng + +Nếu bạn có một tập dữ liệu và cần khám phá số lượng của một mục cụ thể, một trong những nhiệm vụ đầu tiên bạn cần làm là kiểm tra các giá trị của nó. + +✅ Có rất nhiều 'cheat sheets' hữu ích cho Matplotlib [ở đây](https://matplotlib.org/cheatsheets/cheatsheets.pdf). + +## Tạo biểu đồ đường về giá trị sải cánh của chim + +Mở tệp `notebook.ipynb` ở thư mục gốc của bài học này và thêm một ô. + +> Lưu ý: dữ liệu được lưu trữ ở thư mục gốc của repo này trong thư mục `/data`. + +```python +import pandas as pd +import matplotlib.pyplot as plt +birds = pd.read_csv('../../data/birds.csv') +birds.head() +``` +Dữ liệu này là sự kết hợp giữa văn bản và số: + +| | Tên | Tên khoa học | Loại | Bộ | Họ | Chi | Tình trạng bảo tồn | Chiều dài nhỏ nhất | Chiều dài lớn nhất | Khối lượng cơ thể nhỏ nhất | Khối lượng cơ thể lớn nhất | Sải cánh nhỏ nhất | Sải cánh lớn nhất | +| ---: | :--------------------------- | :--------------------- | :-------------------- | :----------- | :------- | :---------- | :----------------- | ------------------: | ------------------: | --------------------------: | --------------------------: | ----------------: | ----------------: | +| 0 | Vịt huýt sáo bụng đen | Dendrocygna autumnalis | Vịt/Ngỗng/Chim nước | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 | +| 1 | Vịt huýt sáo nâu | Dendrocygna bicolor | Vịt/Ngỗng/Chim nước | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 | +| 2 | Ngỗng tuyết | Anser caerulescens | Vịt/Ngỗng/Chim nước | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 | +| 3 | Ngỗng Ross | Anser rossii | Vịt/Ngỗng/Chim nước | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 | +| 4 | Ngỗng trắng lớn | Anser albifrons | Vịt/Ngỗng/Chim nước | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 | + +Hãy bắt đầu bằng cách vẽ một số dữ liệu số bằng biểu đồ đường cơ bản. Giả sử bạn muốn xem giá trị sải cánh lớn nhất của những loài chim thú vị này. + +```python +wingspan = birds['MaxWingspan'] +wingspan.plot() +``` +![Sải cánh lớn nhất](../../../../translated_images/max-wingspan-02.e79fd847b2640b89e21e340a3a9f4c5d4b224c4fcd65f54385e84f1c9ed26d52.vi.png) + +Bạn nhận thấy điều gì ngay lập tức? Có vẻ như có ít nhất một giá trị ngoại lệ - đó là một sải cánh khá lớn! Sải cánh 2300 cm tương đương 23 mét - có phải có Pterodactyls đang bay lượn ở Minnesota không? Hãy điều tra. + +Mặc dù bạn có thể thực hiện một phép sắp xếp nhanh trong Excel để tìm các giá trị ngoại lệ, nhưng hãy tiếp tục quá trình hình dung bằng cách làm việc từ trong biểu đồ. + +Thêm nhãn vào trục x để hiển thị loại chim nào đang được đề cập: + +``` +plt.title('Max Wingspan in Centimeters') +plt.ylabel('Wingspan (CM)') +plt.xlabel('Birds') +plt.xticks(rotation=45) +x = birds['Name'] +y = birds['MaxWingspan'] + +plt.plot(x, y) + +plt.show() +``` +![Sải cánh với nhãn](../../../../translated_images/max-wingspan-labels-02.aa90e826ca49a9d1dde78075e9755c1849ef56a4e9ec60f7e9f3806daf9283e2.vi.png) + +Ngay cả khi xoay nhãn 45 độ, vẫn có quá nhiều để đọc. Hãy thử một chiến lược khác: chỉ gắn nhãn cho các giá trị ngoại lệ và đặt nhãn trong biểu đồ. Bạn có thể sử dụng biểu đồ phân tán để tạo thêm không gian cho việc gắn nhãn: + +```python +plt.title('Max Wingspan in Centimeters') +plt.ylabel('Wingspan (CM)') +plt.tick_params(axis='both',which='both',labelbottom=False,bottom=False) + +for i in range(len(birds)): + x = birds['Name'][i] + y = birds['MaxWingspan'][i] + plt.plot(x, y, 'bo') + if birds['MaxWingspan'][i] > 500: + plt.text(x, y * (1 - 0.05), birds['Name'][i], fontsize=12) + +plt.show() +``` +Chuyện gì đang xảy ra ở đây? Bạn đã sử dụng `tick_params` để ẩn các nhãn ở dưới cùng và sau đó tạo một vòng lặp qua tập dữ liệu chim của bạn. Vẽ biểu đồ với các chấm tròn nhỏ màu xanh bằng cách sử dụng `bo`, bạn kiểm tra bất kỳ loài chim nào có sải cánh lớn nhất trên 500 và hiển thị nhãn của chúng bên cạnh chấm nếu có. Bạn đã dịch nhãn một chút trên trục y (`y * (1 - 0.05)`) và sử dụng tên loài chim làm nhãn. + +Bạn đã khám phá ra điều gì? + +![Ngoại lệ](../../../../translated_images/labeled-wingspan-02.6110e2d2401cd5238ccc24dfb6d04a6c19436101f6cec151e3992e719f9f1e1f.vi.png) +## Lọc dữ liệu của bạn + +Cả Đại bàng đầu trắng và Chim cắt đồng cỏ, mặc dù có thể là những loài chim rất lớn, dường như bị gắn nhãn sai, với một số `0` thừa được thêm vào sải cánh lớn nhất của chúng. Không có khả năng bạn sẽ gặp một Đại bàng đầu trắng với sải cánh 25 mét, nhưng nếu có, hãy cho chúng tôi biết! Hãy tạo một dataframe mới mà không có hai giá trị ngoại lệ này: + +```python +plt.title('Max Wingspan in Centimeters') +plt.ylabel('Wingspan (CM)') +plt.xlabel('Birds') +plt.tick_params(axis='both',which='both',labelbottom=False,bottom=False) +for i in range(len(birds)): + x = birds['Name'][i] + y = birds['MaxWingspan'][i] + if birds['Name'][i] not in ['Bald eagle', 'Prairie falcon']: + plt.plot(x, y, 'bo') +plt.show() +``` + +Bằng cách lọc các giá trị ngoại lệ, dữ liệu của bạn giờ đây trở nên mạch lạc và dễ hiểu hơn. + +![Biểu đồ phân tán sải cánh](../../../../translated_images/scatterplot-wingspan-02.1c33790094ce36a75f5fb45b25ed2cf27f0356ea609e43c11e97a2cedd7011a4.vi.png) + +Bây giờ chúng ta đã có một tập dữ liệu sạch hơn ít nhất là về mặt sải cánh, hãy khám phá thêm về những loài chim này. + +Mặc dù biểu đồ đường và biểu đồ phân tán có thể hiển thị thông tin về giá trị dữ liệu và phân phối của chúng, chúng ta muốn suy nghĩ về các giá trị vốn có trong tập dữ liệu này. Bạn có thể tạo hình ảnh trực quan để trả lời các câu hỏi sau về số lượng: + +> Có bao nhiêu loại chim, và số lượng của chúng là bao nhiêu? +> Có bao nhiêu loài chim đã tuyệt chủng, đang nguy cấp, hiếm, hoặc phổ biến? +> Có bao nhiêu loài thuộc các chi và bộ khác nhau theo thuật ngữ của Linnaeus? +## Khám phá biểu đồ cột + +Biểu đồ cột rất hữu ích khi bạn cần hiển thị các nhóm dữ liệu. Hãy khám phá các loại chim tồn tại trong tập dữ liệu này để xem loại nào phổ biến nhất theo số lượng. + +Trong tệp notebook, tạo một biểu đồ cột cơ bản. + +✅ Lưu ý, bạn có thể lọc hai loài chim ngoại lệ mà chúng ta đã xác định ở phần trước, chỉnh sửa lỗi trong sải cánh của chúng, hoặc giữ nguyên chúng cho các bài tập này không phụ thuộc vào giá trị sải cánh. + +Nếu bạn muốn tạo một biểu đồ cột, bạn có thể chọn dữ liệu mà bạn muốn tập trung vào. Biểu đồ cột có thể được tạo từ dữ liệu thô: + +```python +birds.plot(x='Category', + kind='bar', + stacked=True, + title='Birds of Minnesota') + +``` +![Dữ liệu đầy đủ dưới dạng biểu đồ cột](../../../../translated_images/full-data-bar-02.aaa3fda71c63ed564b917841a1886c177dd9a26424142e510c0c0498fd6ca160.vi.png) + +Tuy nhiên, biểu đồ cột này không thể đọc được vì có quá nhiều dữ liệu không được nhóm lại. Bạn cần chọn chỉ dữ liệu mà bạn muốn vẽ, vì vậy hãy xem chiều dài của chim dựa trên loại của chúng. + +Lọc dữ liệu của bạn để chỉ bao gồm loại chim. + +✅ Lưu ý rằng bạn sử dụng Pandas để quản lý dữ liệu, sau đó để Matplotlib thực hiện việc vẽ biểu đồ. + +Vì có nhiều loại, bạn có thể hiển thị biểu đồ này theo chiều dọc và điều chỉnh chiều cao của nó để phù hợp với tất cả dữ liệu: + +```python +category_count = birds.value_counts(birds['Category'].values, sort=True) +plt.rcParams['figure.figsize'] = [6, 12] +category_count.plot.barh() +``` +![Loại và chiều dài](../../../../translated_images/category-counts-02.0b9a0a4de42275ae5096d0f8da590d8bf520d9e7e40aad5cc4fc8d276480cc32.vi.png) + +Biểu đồ cột này cung cấp một cái nhìn tốt về số lượng chim trong mỗi loại. Trong nháy mắt, bạn thấy rằng số lượng chim lớn nhất trong khu vực này thuộc loại Vịt/Ngỗng/Chim nước. Minnesota là 'vùng đất của 10,000 hồ' nên điều này không có gì ngạc nhiên! + +✅ Thử một số đếm khác trên tập dữ liệu này. Có điều gì làm bạn ngạc nhiên không? + +## So sánh dữ liệu + +Bạn có thể thử các so sánh khác nhau của dữ liệu được nhóm bằng cách tạo các trục mới. Thử so sánh chiều dài lớn nhất của một loài chim, dựa trên loại của nó: + +```python +maxlength = birds['MaxLength'] +plt.barh(y=birds['Category'], width=maxlength) +plt.rcParams['figure.figsize'] = [6, 12] +plt.show() +``` +![So sánh dữ liệu](../../../../translated_images/category-length-02.7304bf519375c9807d8165cc7ec60dd2a60f7b365b23098538e287d89adb7d76.vi.png) + +Không có gì ngạc nhiên ở đây: chim ruồi có chiều dài lớn nhất ít nhất so với Bồ nông hoặc Ngỗng. Thật tốt khi dữ liệu có ý nghĩa logic! + +Bạn có thể tạo hình ảnh trực quan thú vị hơn về biểu đồ cột bằng cách chồng dữ liệu lên nhau. Hãy chồng chiều dài nhỏ nhất và lớn nhất lên một loại chim cụ thể: + +```python +minLength = birds['MinLength'] +maxLength = birds['MaxLength'] +category = birds['Category'] + +plt.barh(category, maxLength) +plt.barh(category, minLength) + +plt.show() +``` +Trong biểu đồ này, bạn có thể thấy phạm vi chiều dài nhỏ nhất và lớn nhất theo loại chim. Bạn có thể tự tin nói rằng, dựa trên dữ liệu này, chim càng lớn thì phạm vi chiều dài của nó càng lớn. Thật thú vị! + +![Giá trị chồng lên nhau](../../../../translated_images/superimposed-02.f03058536baeb2ed7864f01102538464d4c2fd7ade881ddd7d5ba74dc5d2fdae.vi.png) + +## 🚀 Thử thách + +Tập dữ liệu về chim này cung cấp một lượng thông tin phong phú về các loại chim khác nhau trong một hệ sinh thái cụ thể. Tìm kiếm trên internet và xem liệu bạn có thể tìm thấy các tập dữ liệu khác liên quan đến chim. Thực hành tạo biểu đồ và đồ thị về những loài chim này để khám phá những sự thật mà bạn chưa từng nhận ra. +## [Câu hỏi sau bài giảng](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/17) + +## Ôn tập & Tự học + +Bài học đầu tiên này đã cung cấp cho bạn một số thông tin về cách sử dụng Matplotlib để hình dung số lượng. Hãy nghiên cứu thêm về các cách khác để làm việc với tập dữ liệu để hình dung. [Plotly](https://github.com/plotly/plotly.py) là một công cụ mà chúng ta sẽ không đề cập trong các bài học này, vì vậy hãy xem nó có thể cung cấp những gì. +## Bài tập + +[Đường, Phân tán, và Cột](assignment.md) + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/3-Data-Visualization/09-visualization-quantities/assignment.md b/translations/vi/3-Data-Visualization/09-visualization-quantities/assignment.md new file mode 100644 index 00000000..170eb2f0 --- /dev/null +++ b/translations/vi/3-Data-Visualization/09-visualization-quantities/assignment.md @@ -0,0 +1,25 @@ + +# Đường, Biểu đồ Phân Tán và Cột + +## Hướng dẫn + +Trong bài học này, bạn đã làm việc với biểu đồ đường, biểu đồ phân tán và biểu đồ cột để thể hiện những thông tin thú vị về tập dữ liệu này. Trong bài tập này, hãy đi sâu hơn vào tập dữ liệu để khám phá một thông tin thú vị về một loài chim cụ thể. Ví dụ, tạo một notebook trực quan hóa tất cả các dữ liệu thú vị mà bạn có thể tìm thấy về loài Ngỗng Tuyết. Sử dụng ba loại biểu đồ được đề cập ở trên để kể một câu chuyện trong notebook của bạn. + +## Tiêu chí đánh giá + +Xuất sắc | Đạt yêu cầu | Cần cải thiện +--- | --- | --- | +Notebook được trình bày với chú thích tốt, câu chuyện rõ ràng và biểu đồ hấp dẫn | Notebook thiếu một trong những yếu tố này | Notebook thiếu hai trong những yếu tố này + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/3-Data-Visualization/10-visualization-distributions/README.md b/translations/vi/3-Data-Visualization/10-visualization-distributions/README.md new file mode 100644 index 00000000..ec598407 --- /dev/null +++ b/translations/vi/3-Data-Visualization/10-visualization-distributions/README.md @@ -0,0 +1,217 @@ + +# Trực quan hóa phân bố + +|![ Sketchnote của [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/10-Visualizing-Distributions.png)| +|:---:| +| Trực quan hóa phân bố - _Sketchnote của [@nitya](https://twitter.com/nitya)_ | + +Trong bài học trước, bạn đã tìm hiểu một số thông tin thú vị về bộ dữ liệu về các loài chim ở Minnesota. Bạn đã phát hiện một số dữ liệu sai lệch bằng cách trực quan hóa các giá trị ngoại lai và xem xét sự khác biệt giữa các loại chim dựa trên chiều dài tối đa của chúng. + +## [Câu hỏi trước bài học](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/18) +## Khám phá bộ dữ liệu về các loài chim + +Một cách khác để tìm hiểu dữ liệu là xem xét phân bố của nó, hoặc cách dữ liệu được tổ chức dọc theo một trục. Ví dụ, có thể bạn muốn tìm hiểu về phân bố chung, đối với bộ dữ liệu này, của sải cánh tối đa hoặc khối lượng cơ thể tối đa của các loài chim ở Minnesota. + +Hãy khám phá một số thông tin về phân bố dữ liệu trong bộ dữ liệu này. Trong tệp _notebook.ipynb_ ở thư mục gốc của bài học này, hãy nhập Pandas, Matplotlib và dữ liệu của bạn: + +```python +import pandas as pd +import matplotlib.pyplot as plt +birds = pd.read_csv('../../data/birds.csv') +birds.head() +``` + +| | Tên | Tên khoa học | Loại | Bộ | Họ | Chi | Tình trạng bảo tồn | Chiều dài tối thiểu | Chiều dài tối đa | Khối lượng cơ thể tối thiểu | Khối lượng cơ thể tối đa | Sải cánh tối thiểu | Sải cánh tối đa | +| ---: | :--------------------------- | :--------------------- | :-------------------- | :----------- | :------- | :---------- | :----------------- | ------------------: | ----------------: | --------------------------: | --------------------------: | ------------------: | ------------------: | +| 0 | Vịt huýt sáo bụng đen | Dendrocygna autumnalis | Vịt/Ngan/Chim nước | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 | +| 1 | Vịt huýt sáo nâu | Dendrocygna bicolor | Vịt/Ngan/Chim nước | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 | +| 2 | Ngỗng tuyết | Anser caerulescens | Vịt/Ngan/Chim nước | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 | +| 3 | Ngỗng Ross | Anser rossii | Vịt/Ngan/Chim nước | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 | +| 4 | Ngỗng trắng lớn | Anser albifrons | Vịt/Ngan/Chim nước | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 | + +Nhìn chung, bạn có thể nhanh chóng xem cách dữ liệu được phân bố bằng cách sử dụng biểu đồ phân tán như chúng ta đã làm trong bài học trước: + +```python +birds.plot(kind='scatter',x='MaxLength',y='Order',figsize=(12,8)) + +plt.title('Max Length per Order') +plt.ylabel('Order') +plt.xlabel('Max Length') + +plt.show() +``` +![chiều dài tối đa theo bộ](../../../../translated_images/scatter-wb.9d98b0ed7f0388af979441853361a11df5f518f5307938a503ca7913e986111b.vi.png) + +Điều này cung cấp một cái nhìn tổng quan về phân bố chiều dài cơ thể theo bộ của chim, nhưng đây không phải là cách tối ưu để hiển thị phân bố thực sự. Nhiệm vụ này thường được thực hiện bằng cách tạo biểu đồ Histogram. + +## Làm việc với biểu đồ Histogram + +Matplotlib cung cấp các cách rất tốt để trực quan hóa phân bố dữ liệu bằng biểu đồ Histogram. Loại biểu đồ này giống như biểu đồ cột, nơi phân bố có thể được nhìn thấy qua sự tăng giảm của các cột. Để tạo một biểu đồ Histogram, bạn cần dữ liệu số. Để tạo một biểu đồ Histogram, bạn có thể vẽ biểu đồ bằng cách định nghĩa loại là 'hist' cho Histogram. Biểu đồ này hiển thị phân bố của MaxBodyMass cho toàn bộ phạm vi dữ liệu số của bộ dữ liệu. Bằng cách chia mảng dữ liệu được cung cấp thành các nhóm nhỏ hơn, nó có thể hiển thị phân bố các giá trị của dữ liệu: + +```python +birds['MaxBodyMass'].plot(kind = 'hist', bins = 10, figsize = (12,12)) +plt.show() +``` +![phân bố trên toàn bộ bộ dữ liệu](../../../../translated_images/dist1-wb.0d0cac82e2974fbbec635826fefead401af795f82e2279e2e2678bf2c117d827.vi.png) + +Như bạn có thể thấy, hầu hết hơn 400 loài chim trong bộ dữ liệu này nằm trong phạm vi dưới 2000 cho khối lượng cơ thể tối đa của chúng. Tìm hiểu thêm về dữ liệu bằng cách thay đổi tham số `bins` thành một số lớn hơn, chẳng hạn như 30: + +```python +birds['MaxBodyMass'].plot(kind = 'hist', bins = 30, figsize = (12,12)) +plt.show() +``` +![phân bố trên toàn bộ bộ dữ liệu với tham số bins lớn hơn](../../../../translated_images/dist2-wb.2c0a7a3499b2fbf561e9f93b69f265dfc538dc78f6de15088ba84a88152e26ba.vi.png) + +Biểu đồ này hiển thị phân bố chi tiết hơn một chút. Một biểu đồ ít lệch về bên trái hơn có thể được tạo bằng cách đảm bảo rằng bạn chỉ chọn dữ liệu trong một phạm vi nhất định: + +Lọc dữ liệu của bạn để chỉ lấy những loài chim có khối lượng cơ thể dưới 60 và hiển thị 40 `bins`: + +```python +filteredBirds = birds[(birds['MaxBodyMass'] > 1) & (birds['MaxBodyMass'] < 60)] +filteredBirds['MaxBodyMass'].plot(kind = 'hist',bins = 40,figsize = (12,12)) +plt.show() +``` +![biểu đồ histogram đã lọc](../../../../translated_images/dist3-wb.64b88db7f9780200bd486a2c2a3252548dd439672dbd3f778193db7f654b100c.vi.png) + +✅ Thử một số bộ lọc và điểm dữ liệu khác. Để xem toàn bộ phân bố của dữ liệu, hãy loại bỏ bộ lọc `['MaxBodyMass']` để hiển thị các phân bố được gắn nhãn. + +Biểu đồ Histogram cung cấp một số cải tiến về màu sắc và nhãn mà bạn có thể thử: + +Tạo một biểu đồ Histogram 2D để so sánh mối quan hệ giữa hai phân bố. Hãy so sánh `MaxBodyMass` và `MaxLength`. Matplotlib cung cấp một cách tích hợp để hiển thị sự hội tụ bằng cách sử dụng màu sắc sáng hơn: + +```python +x = filteredBirds['MaxBodyMass'] +y = filteredBirds['MaxLength'] + +fig, ax = plt.subplots(tight_layout=True) +hist = ax.hist2d(x, y) +``` +Có vẻ như có một mối tương quan dự kiến giữa hai yếu tố này dọc theo một trục dự kiến, với một điểm hội tụ đặc biệt mạnh: + +![biểu đồ 2D](../../../../translated_images/2D-wb.ae22fdd33936507a41e3af22e11e4903b04a9be973b23a4e05214efaccfd66c8.vi.png) + +Biểu đồ Histogram hoạt động tốt theo mặc định cho dữ liệu số. Vậy nếu bạn cần xem phân bố theo dữ liệu văn bản thì sao? +## Khám phá bộ dữ liệu để tìm phân bố theo dữ liệu văn bản + +Bộ dữ liệu này cũng bao gồm thông tin tốt về loại chim và chi, loài, họ cũng như tình trạng bảo tồn của chúng. Hãy tìm hiểu thông tin bảo tồn này. Phân bố của các loài chim theo tình trạng bảo tồn của chúng là gì? + +> ✅ Trong bộ dữ liệu, một số từ viết tắt được sử dụng để mô tả tình trạng bảo tồn. Những từ viết tắt này đến từ [Danh mục Đỏ của IUCN](https://www.iucnredlist.org), một tổ chức chuyên lập danh mục tình trạng của các loài. +> +> - CR: Cực kỳ nguy cấp +> - EN: Nguy cấp +> - EX: Tuyệt chủng +> - LC: Ít quan tâm +> - NT: Gần bị đe dọa +> - VU: Dễ tổn thương + +Đây là các giá trị dựa trên văn bản, vì vậy bạn sẽ cần thực hiện một chuyển đổi để tạo biểu đồ Histogram. Sử dụng dataframe filteredBirds, hiển thị tình trạng bảo tồn của nó cùng với sải cánh tối thiểu. Bạn thấy gì? + +```python +x1 = filteredBirds.loc[filteredBirds.ConservationStatus=='EX', 'MinWingspan'] +x2 = filteredBirds.loc[filteredBirds.ConservationStatus=='CR', 'MinWingspan'] +x3 = filteredBirds.loc[filteredBirds.ConservationStatus=='EN', 'MinWingspan'] +x4 = filteredBirds.loc[filteredBirds.ConservationStatus=='NT', 'MinWingspan'] +x5 = filteredBirds.loc[filteredBirds.ConservationStatus=='VU', 'MinWingspan'] +x6 = filteredBirds.loc[filteredBirds.ConservationStatus=='LC', 'MinWingspan'] + +kwargs = dict(alpha=0.5, bins=20) + +plt.hist(x1, **kwargs, color='red', label='Extinct') +plt.hist(x2, **kwargs, color='orange', label='Critically Endangered') +plt.hist(x3, **kwargs, color='yellow', label='Endangered') +plt.hist(x4, **kwargs, color='green', label='Near Threatened') +plt.hist(x5, **kwargs, color='blue', label='Vulnerable') +plt.hist(x6, **kwargs, color='gray', label='Least Concern') + +plt.gca().set(title='Conservation Status', ylabel='Min Wingspan') +plt.legend(); +``` + +![sải cánh và sự phân loại bảo tồn](../../../../translated_images/histogram-conservation-wb.3c40450eb072c14de7a1a3ec5c0fcba4995531024760741b392911b567fd8b70.vi.png) + +Dường như không có mối tương quan tốt giữa sải cánh tối thiểu và tình trạng bảo tồn. Thử nghiệm các yếu tố khác của bộ dữ liệu bằng phương pháp này. Bạn có thể thử các bộ lọc khác nhau. Bạn có tìm thấy mối tương quan nào không? + +## Biểu đồ mật độ + +Bạn có thể đã nhận thấy rằng các biểu đồ Histogram mà chúng ta đã xem xét cho đến nay có dạng 'bậc thang' và không trôi chảy mượt mà theo một vòng cung. Để hiển thị biểu đồ mật độ mượt mà hơn, bạn có thể thử biểu đồ mật độ. + +Để làm việc với biểu đồ mật độ, hãy làm quen với một thư viện vẽ biểu đồ mới, [Seaborn](https://seaborn.pydata.org/generated/seaborn.kdeplot.html). + +Tải Seaborn, thử một biểu đồ mật độ cơ bản: + +```python +import seaborn as sns +import matplotlib.pyplot as plt +sns.kdeplot(filteredBirds['MinWingspan']) +plt.show() +``` +![Biểu đồ mật độ](../../../../translated_images/density1.8801043bd4af2567b0f706332b5853c7614e5e4b81b457acc27eb4e092a65cbd.vi.png) + +Bạn có thể thấy cách biểu đồ phản ánh biểu đồ trước đó về dữ liệu sải cánh tối thiểu; nó chỉ mượt mà hơn một chút. Theo tài liệu của Seaborn, "So với biểu đồ Histogram, KDE có thể tạo ra một biểu đồ ít lộn xộn và dễ hiểu hơn, đặc biệt khi vẽ nhiều phân bố. Nhưng nó có khả năng gây ra biến dạng nếu phân bố cơ bản bị giới hạn hoặc không mượt mà. Giống như biểu đồ Histogram, chất lượng của biểu diễn cũng phụ thuộc vào việc chọn các tham số làm mịn tốt." [nguồn](https://seaborn.pydata.org/generated/seaborn.kdeplot.html) Nói cách khác, các giá trị ngoại lai như mọi khi sẽ làm cho biểu đồ của bạn hoạt động không đúng. + +Nếu bạn muốn xem lại đường MaxBodyMass gập ghềnh trong biểu đồ thứ hai mà bạn đã tạo, bạn có thể làm mượt nó rất tốt bằng cách tạo lại nó bằng phương pháp này: + +```python +sns.kdeplot(filteredBirds['MaxBodyMass']) +plt.show() +``` +![đường khối lượng cơ thể mượt mà](../../../../translated_images/density2.8e7647257060ff544a1aaded57e8dd1887586bfe340139e9b77ac1e5287f7977.vi.png) + +Nếu bạn muốn một đường mượt mà nhưng không quá mượt, hãy chỉnh tham số `bw_adjust`: + +```python +sns.kdeplot(filteredBirds['MaxBodyMass'], bw_adjust=.2) +plt.show() +``` +![đường khối lượng cơ thể ít mượt hơn](../../../../translated_images/density3.84ae27da82f31e6b83ad977646f029a1d21186574d7581facd70123b3eb257ee.vi.png) + +✅ Đọc về các tham số có sẵn cho loại biểu đồ này và thử nghiệm! + +Loại biểu đồ này cung cấp các hình ảnh trực quan giải thích rất đẹp. Với một vài dòng mã, ví dụ, bạn có thể hiển thị mật độ khối lượng cơ thể tối đa theo bộ của chim: + +```python +sns.kdeplot( + data=filteredBirds, x="MaxBodyMass", hue="Order", + fill=True, common_norm=False, palette="crest", + alpha=.5, linewidth=0, +) +``` + +![khối lượng cơ thể theo bộ](../../../../translated_images/density4.e9d6c033f15c500fd33df94cb592b9f5cf1ed2a3d213c448a3f9e97ba39573ce.vi.png) + +Bạn cũng có thể ánh xạ mật độ của nhiều biến trong một biểu đồ. Thử nghiệm chiều dài tối đa và chiều dài tối thiểu của chim so với tình trạng bảo tồn của chúng: + +```python +sns.kdeplot(data=filteredBirds, x="MinLength", y="MaxLength", hue="ConservationStatus") +``` + +![nhiều mật độ, chồng lên nhau](../../../../translated_images/multi.56548caa9eae8d0fd9012a8586295538c7f4f426e2abc714ba070e2e4b1fc2c1.vi.png) + +Có lẽ đáng để nghiên cứu xem cụm chim 'Dễ tổn thương' theo chiều dài của chúng có ý nghĩa hay không. + +## 🚀 Thử thách + +Biểu đồ Histogram là một loại biểu đồ tinh vi hơn so với biểu đồ phân tán, biểu đồ cột hoặc biểu đồ đường cơ bản. Hãy tìm kiếm trên internet để tìm các ví dụ tốt về việc sử dụng biểu đồ Histogram. Chúng được sử dụng như thế nào, chúng thể hiện điều gì, và trong các lĩnh vực hoặc lĩnh vực nghiên cứu nào chúng thường được sử dụng? + +## [Câu hỏi sau bài học](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/19) + +## Ôn tập & Tự học + +Trong bài học này, bạn đã sử dụng Matplotlib và bắt đầu làm việc với Seaborn để hiển thị các biểu đồ tinh vi hơn. Hãy nghiên cứu về `kdeplot` trong Seaborn, một "đường mật độ xác suất liên tục trong một hoặc nhiều chiều". Đọc qua [tài liệu](https://seaborn.pydata.org/generated/seaborn.kdeplot.html) để hiểu cách nó hoạt động. + +## Bài tập + +[Áp dụng kỹ năng của bạn](assignment.md) + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm về bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/3-Data-Visualization/10-visualization-distributions/assignment.md b/translations/vi/3-Data-Visualization/10-visualization-distributions/assignment.md new file mode 100644 index 00000000..7c03059f --- /dev/null +++ b/translations/vi/3-Data-Visualization/10-visualization-distributions/assignment.md @@ -0,0 +1,25 @@ + +# Áp dụng kỹ năng của bạn + +## Hướng dẫn + +Cho đến nay, bạn đã làm việc với tập dữ liệu về các loài chim ở Minnesota để khám phá thông tin về số lượng chim và mật độ dân số. Hãy thực hành áp dụng các kỹ thuật này bằng cách thử một tập dữ liệu khác, có thể được lấy từ [Kaggle](https://www.kaggle.com/). Xây dựng một notebook để kể một câu chuyện về tập dữ liệu này, và đảm bảo sử dụng biểu đồ histogram khi thảo luận về nó. + +## Tiêu chí đánh giá + +Xuất sắc | Đạt yêu cầu | Cần cải thiện +--- | --- | --- | +Một notebook được trình bày với các chú thích về tập dữ liệu này, bao gồm nguồn gốc của nó, và sử dụng ít nhất 5 biểu đồ histogram để khám phá các thông tin từ dữ liệu. | Một notebook được trình bày với chú thích không đầy đủ hoặc có lỗi. | Một notebook được trình bày mà không có chú thích và có lỗi. + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/3-Data-Visualization/11-visualization-proportions/README.md b/translations/vi/3-Data-Visualization/11-visualization-proportions/README.md new file mode 100644 index 00000000..4a8fbeca --- /dev/null +++ b/translations/vi/3-Data-Visualization/11-visualization-proportions/README.md @@ -0,0 +1,204 @@ + +# Hình dung Tỷ lệ + +|![ Sketchnote của [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/11-Visualizing-Proportions.png)| +|:---:| +|Hình dung Tỷ lệ - _Sketchnote của [@nitya](https://twitter.com/nitya)_ | + +Trong bài học này, bạn sẽ sử dụng một bộ dữ liệu tập trung vào thiên nhiên để hình dung tỷ lệ, chẳng hạn như có bao nhiêu loại nấm khác nhau xuất hiện trong một bộ dữ liệu về nấm. Hãy cùng khám phá những loại nấm thú vị này bằng cách sử dụng một bộ dữ liệu từ Audubon, liệt kê chi tiết về 23 loài nấm có mang thuộc họ Agaricus và Lepiota. Bạn sẽ thử nghiệm với các hình ảnh hóa hấp dẫn như: + +- Biểu đồ tròn 🥧 +- Biểu đồ donut 🍩 +- Biểu đồ waffle 🧇 + +> 💡 Một dự án rất thú vị có tên [Charticulator](https://charticulator.com) của Microsoft Research cung cấp giao diện kéo thả miễn phí để tạo hình ảnh hóa dữ liệu. Trong một trong các hướng dẫn của họ, họ cũng sử dụng bộ dữ liệu về nấm này! Vì vậy, bạn có thể khám phá dữ liệu và học thư viện cùng lúc: [Hướng dẫn Charticulator](https://charticulator.com/tutorials/tutorial4.html). + +## [Câu hỏi trước bài giảng](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/20) + +## Tìm hiểu về nấm của bạn 🍄 + +Nấm rất thú vị. Hãy nhập một bộ dữ liệu để nghiên cứu chúng: + +```python +import pandas as pd +import matplotlib.pyplot as plt +mushrooms = pd.read_csv('../../data/mushrooms.csv') +mushrooms.head() +``` +Một bảng được in ra với một số dữ liệu tuyệt vời để phân tích: + +| class | cap-shape | cap-surface | cap-color | bruises | odor | gill-attachment | gill-spacing | gill-size | gill-color | stalk-shape | stalk-root | stalk-surface-above-ring | stalk-surface-below-ring | stalk-color-above-ring | stalk-color-below-ring | veil-type | veil-color | ring-number | ring-type | spore-print-color | population | habitat | +| --------- | --------- | ----------- | --------- | ------- | ------- | --------------- | ------------ | --------- | ---------- | ----------- | ---------- | ------------------------ | ------------------------ | ---------------------- | ---------------------- | --------- | ---------- | ----------- | --------- | ----------------- | ---------- | ------- | +| Độc | Convex | Smooth | Brown | Bruises | Pungent | Free | Close | Narrow | Black | Enlarging | Equal | Smooth | Smooth | White | White | Partial | White | One | Pendant | Black | Scattered | Urban | +| Ăn được | Convex | Smooth | Yellow | Bruises | Almond | Free | Close | Broad | Black | Enlarging | Club | Smooth | Smooth | White | White | Partial | White | One | Pendant | Brown | Numerous | Grasses | +| Ăn được | Bell | Smooth | White | Bruises | Anise | Free | Close | Broad | Brown | Enlarging | Club | Smooth | Smooth | White | White | Partial | White | One | Pendant | Brown | Numerous | Meadows | +| Độc | Convex | Scaly | White | Bruises | Pungent | Free | Close | Narrow | Brown | Enlarging | Equal | Smooth | Smooth | White | White | Partial | White | One | Pendant | Black | Scattered | Urban | + +Ngay lập tức, bạn nhận thấy rằng tất cả dữ liệu đều là dạng văn bản. Bạn sẽ phải chuyển đổi dữ liệu này để có thể sử dụng nó trong biểu đồ. Thực tế, hầu hết dữ liệu được biểu diễn dưới dạng một đối tượng: + +```python +print(mushrooms.select_dtypes(["object"]).columns) +``` + +Kết quả là: + +```output +Index(['class', 'cap-shape', 'cap-surface', 'cap-color', 'bruises', 'odor', + 'gill-attachment', 'gill-spacing', 'gill-size', 'gill-color', + 'stalk-shape', 'stalk-root', 'stalk-surface-above-ring', + 'stalk-surface-below-ring', 'stalk-color-above-ring', + 'stalk-color-below-ring', 'veil-type', 'veil-color', 'ring-number', + 'ring-type', 'spore-print-color', 'population', 'habitat'], + dtype='object') +``` +Hãy lấy dữ liệu này và chuyển đổi cột 'class' thành một danh mục: + +```python +cols = mushrooms.select_dtypes(["object"]).columns +mushrooms[cols] = mushrooms[cols].astype('category') +``` + +```python +edibleclass=mushrooms.groupby(['class']).count() +edibleclass +``` + +Bây giờ, nếu bạn in dữ liệu về nấm, bạn có thể thấy rằng nó đã được nhóm thành các danh mục theo lớp độc/ăn được: + +| | cap-shape | cap-surface | cap-color | bruises | odor | gill-attachment | gill-spacing | gill-size | gill-color | stalk-shape | ... | stalk-surface-below-ring | stalk-color-above-ring | stalk-color-below-ring | veil-type | veil-color | ring-number | ring-type | spore-print-color | population | habitat | +| --------- | --------- | ----------- | --------- | ------- | ---- | --------------- | ------------ | --------- | ---------- | ----------- | --- | ------------------------ | ---------------------- | ---------------------- | --------- | ---------- | ----------- | --------- | ----------------- | ---------- | ------- | +| class | | | | | | | | | | | | | | | | | | | | | | +| Ăn được | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | ... | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | +| Độc | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | ... | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | + +Nếu bạn theo thứ tự được trình bày trong bảng này để tạo nhãn danh mục lớp, bạn có thể tạo biểu đồ tròn: + +## Biểu đồ tròn! + +```python +labels=['Edible','Poisonous'] +plt.pie(edibleclass['population'],labels=labels,autopct='%.1f %%') +plt.title('Edible?') +plt.show() +``` +Voila, một biểu đồ tròn hiển thị tỷ lệ của dữ liệu này theo hai lớp nấm. Điều rất quan trọng là phải sắp xếp đúng thứ tự của các nhãn, đặc biệt ở đây, vì vậy hãy chắc chắn kiểm tra thứ tự mà mảng nhãn được xây dựng! + +![biểu đồ tròn](../../../../translated_images/pie1-wb.e201f2fcc335413143ce37650fb7f5f0bb21358e7823a327ed8644dfb84be9db.vi.png) + +## Biểu đồ donut! + +Một biểu đồ tròn thú vị hơn về mặt hình ảnh là biểu đồ donut, là một biểu đồ tròn với một lỗ ở giữa. Hãy xem dữ liệu của chúng ta bằng phương pháp này. + +Hãy xem các môi trường sống khác nhau nơi nấm phát triển: + +```python +habitat=mushrooms.groupby(['habitat']).count() +habitat +``` +Ở đây, bạn đang nhóm dữ liệu theo môi trường sống. Có 7 môi trường được liệt kê, vì vậy hãy sử dụng chúng làm nhãn cho biểu đồ donut của bạn: + +```python +labels=['Grasses','Leaves','Meadows','Paths','Urban','Waste','Wood'] + +plt.pie(habitat['class'], labels=labels, + autopct='%1.1f%%', pctdistance=0.85) + +center_circle = plt.Circle((0, 0), 0.40, fc='white') +fig = plt.gcf() + +fig.gca().add_artist(center_circle) + +plt.title('Mushroom Habitats') + +plt.show() +``` + +![biểu đồ donut](../../../../translated_images/donut-wb.be3c12a22712302b5d10c40014d5389d4a1ae4412fe1655b3cf4af57b64f799a.vi.png) + +Đoạn mã này vẽ một biểu đồ và một vòng tròn trung tâm, sau đó thêm vòng tròn trung tâm vào biểu đồ. Chỉnh sửa độ rộng của vòng tròn trung tâm bằng cách thay đổi `0.40` thành giá trị khác. + +Biểu đồ donut có thể được tùy chỉnh theo nhiều cách để thay đổi nhãn. Các nhãn đặc biệt có thể được làm nổi bật để dễ đọc hơn. Tìm hiểu thêm trong [tài liệu](https://matplotlib.org/stable/gallery/pie_and_polar_charts/pie_and_donut_labels.html?highlight=donut). + +Bây giờ bạn đã biết cách nhóm dữ liệu và hiển thị nó dưới dạng biểu đồ tròn hoặc donut, bạn có thể khám phá các loại biểu đồ khác. Hãy thử biểu đồ waffle, một cách khác để khám phá số lượng. + +## Biểu đồ waffle! + +Biểu đồ kiểu 'waffle' là một cách khác để hình dung số lượng dưới dạng mảng 2D các ô vuông. Hãy thử hình dung các số lượng màu sắc của mũ nấm trong bộ dữ liệu này. Để làm điều này, bạn cần cài đặt một thư viện hỗ trợ có tên [PyWaffle](https://pypi.org/project/pywaffle/) và sử dụng Matplotlib: + +```python +pip install pywaffle +``` + +Chọn một phần dữ liệu của bạn để nhóm: + +```python +capcolor=mushrooms.groupby(['cap-color']).count() +capcolor +``` + +Tạo biểu đồ waffle bằng cách tạo nhãn và sau đó nhóm dữ liệu của bạn: + +```python +import pandas as pd +import matplotlib.pyplot as plt +from pywaffle import Waffle + +data ={'color': ['brown', 'buff', 'cinnamon', 'green', 'pink', 'purple', 'red', 'white', 'yellow'], + 'amount': capcolor['class'] + } + +df = pd.DataFrame(data) + +fig = plt.figure( + FigureClass = Waffle, + rows = 100, + values = df.amount, + labels = list(df.color), + figsize = (30,30), + colors=["brown", "tan", "maroon", "green", "pink", "purple", "red", "whitesmoke", "yellow"], +) +``` + +Sử dụng biểu đồ waffle, bạn có thể dễ dàng thấy tỷ lệ màu sắc của mũ nấm trong bộ dữ liệu này. Thật thú vị, có rất nhiều nấm có mũ màu xanh lá cây! + +![biểu đồ waffle](../../../../translated_images/waffle.5455dbae4ccf17d53bb40ff0a657ecef7b8aa967e27a19cc96325bd81598f65e.vi.png) + +✅ PyWaffle hỗ trợ các biểu tượng trong biểu đồ sử dụng bất kỳ biểu tượng nào có sẵn trong [Font Awesome](https://fontawesome.com/). Hãy thử nghiệm để tạo một biểu đồ waffle thú vị hơn bằng cách sử dụng biểu tượng thay vì ô vuông. + +Trong bài học này, bạn đã học ba cách để hình dung tỷ lệ. Đầu tiên, bạn cần nhóm dữ liệu thành các danh mục và sau đó quyết định cách tốt nhất để hiển thị dữ liệu - biểu đồ tròn, donut, hoặc waffle. Tất cả đều hấp dẫn và mang lại cho người dùng một cái nhìn nhanh về bộ dữ liệu. + +## 🚀 Thử thách + +Hãy thử tái tạo các biểu đồ hấp dẫn này trong [Charticulator](https://charticulator.com). +## [Câu hỏi sau bài giảng](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/21) + +## Ôn tập & Tự học + +Đôi khi không rõ ràng khi nào nên sử dụng biểu đồ tròn, donut, hoặc waffle. Dưới đây là một số bài viết để đọc về chủ đề này: + +https://www.beautiful.ai/blog/battle-of-the-charts-pie-chart-vs-donut-chart + +https://medium.com/@hypsypops/pie-chart-vs-donut-chart-showdown-in-the-ring-5d24fd86a9ce + +https://www.mit.edu/~mbarker/formula1/f1help/11-ch-c6.htm + +https://medium.datadriveninvestor.com/data-visualization-done-the-right-way-with-tableau-waffle-chart-fdf2a19be402 + +Hãy nghiên cứu thêm để tìm hiểu thêm thông tin về quyết định khó khăn này. + +## Bài tập + +[Thử nghiệm trong Excel](assignment.md) + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm về bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/3-Data-Visualization/11-visualization-proportions/assignment.md b/translations/vi/3-Data-Visualization/11-visualization-proportions/assignment.md new file mode 100644 index 00000000..b50cbf96 --- /dev/null +++ b/translations/vi/3-Data-Visualization/11-visualization-proportions/assignment.md @@ -0,0 +1,25 @@ + +# Thử nghiệm trong Excel + +## Hướng dẫn + +Bạn có biết rằng bạn có thể tạo biểu đồ hình bánh donut, hình tròn và hình waffle trong Excel không? Sử dụng một bộ dữ liệu mà bạn chọn, hãy tạo ba biểu đồ này trực tiếp trong bảng tính Excel. + +## Tiêu chí đánh giá + +| Xuất sắc | Đạt yêu cầu | Cần cải thiện | +| ------------------------------------------------------- | ------------------------------------------------- | -------------------------------------------------- | +| Một bảng tính Excel được trình bày với cả ba biểu đồ | Một bảng tính Excel được trình bày với hai biểu đồ | Một bảng tính Excel được trình bày với chỉ một biểu đồ | + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/3-Data-Visualization/12-visualization-relationships/README.md b/translations/vi/3-Data-Visualization/12-visualization-relationships/README.md new file mode 100644 index 00000000..3850d3f1 --- /dev/null +++ b/translations/vi/3-Data-Visualization/12-visualization-relationships/README.md @@ -0,0 +1,186 @@ + +# Hình dung Mối quan hệ: Tất cả về Mật ong 🍯 + +|![ Sketchnote của [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/12-Visualizing-Relationships.png)| +|:---:| +|Hình dung Mối quan hệ - _Sketchnote của [@nitya](https://twitter.com/nitya)_ | + +Tiếp tục với trọng tâm nghiên cứu về thiên nhiên, hãy khám phá các cách hình dung thú vị để thể hiện mối quan hệ giữa các loại mật ong khác nhau, dựa trên một tập dữ liệu từ [Bộ Nông nghiệp Hoa Kỳ](https://www.nass.usda.gov/About_NASS/index.php). + +Tập dữ liệu này gồm khoảng 600 mục, hiển thị sản lượng mật ong ở nhiều bang của Hoa Kỳ. Ví dụ, bạn có thể xem số lượng đàn ong, sản lượng mỗi đàn, tổng sản lượng, tồn kho, giá mỗi pound, và giá trị mật ong được sản xuất ở một bang từ năm 1998-2012, với mỗi hàng đại diện cho một năm của từng bang. + +Sẽ rất thú vị khi hình dung mối quan hệ giữa sản lượng của một bang trong một năm nhất định và, ví dụ, giá mật ong ở bang đó. Ngoài ra, bạn cũng có thể hình dung mối quan hệ giữa sản lượng mật ong mỗi đàn của các bang. Khoảng thời gian này bao gồm sự kiện 'CCD' hay 'Colony Collapse Disorder' lần đầu tiên được ghi nhận vào năm 2006 (http://npic.orst.edu/envir/ccd.html), vì vậy đây là một tập dữ liệu đáng để nghiên cứu. 🐝 + +## [Câu hỏi trước bài học](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/22) + +Trong bài học này, bạn có thể sử dụng thư viện Seaborn, mà bạn đã sử dụng trước đó, như một công cụ tốt để hình dung mối quan hệ giữa các biến. Đặc biệt thú vị là việc sử dụng hàm `relplot` của Seaborn, cho phép tạo biểu đồ phân tán và biểu đồ đường để nhanh chóng hình dung '[mối quan hệ thống kê](https://seaborn.pydata.org/tutorial/relational.html?highlight=relationships)', giúp nhà khoa học dữ liệu hiểu rõ hơn cách các biến liên quan đến nhau. + +## Biểu đồ phân tán + +Sử dụng biểu đồ phân tán để hiển thị cách giá mật ong thay đổi theo từng năm, từng bang. Seaborn, với `relplot`, tiện lợi nhóm dữ liệu theo bang và hiển thị các điểm dữ liệu cho cả dữ liệu phân loại và dữ liệu số. + +Hãy bắt đầu bằng cách nhập dữ liệu và Seaborn: + +```python +import pandas as pd +import matplotlib.pyplot as plt +import seaborn as sns +honey = pd.read_csv('../../data/honey.csv') +honey.head() +``` +Bạn sẽ thấy rằng dữ liệu mật ong có một số cột thú vị, bao gồm năm và giá mỗi pound. Hãy khám phá dữ liệu này, được nhóm theo bang của Hoa Kỳ: + +| state | numcol | yieldpercol | totalprod | stocks | priceperlb | prodvalue | year | +| ----- | ------ | ----------- | --------- | -------- | ---------- | --------- | ---- | +| AL | 16000 | 71 | 1136000 | 159000 | 0.72 | 818000 | 1998 | +| AZ | 55000 | 60 | 3300000 | 1485000 | 0.64 | 2112000 | 1998 | +| AR | 53000 | 65 | 3445000 | 1688000 | 0.59 | 2033000 | 1998 | +| CA | 450000 | 83 | 37350000 | 12326000 | 0.62 | 23157000 | 1998 | +| CO | 27000 | 72 | 1944000 | 1594000 | 0.7 | 1361000 | 1998 | + +Tạo một biểu đồ phân tán cơ bản để hiển thị mối quan hệ giữa giá mỗi pound mật ong và bang xuất xứ của nó. Làm cho trục `y` đủ cao để hiển thị tất cả các bang: + +```python +sns.relplot(x="priceperlb", y="state", data=honey, height=15, aspect=.5); +``` +![scatterplot 1](../../../../translated_images/scatter1.5e1aa5fd6706c5d12b5e503ccb77f8a930f8620f539f524ddf56a16c039a5d2f.vi.png) + +Bây giờ, hiển thị cùng dữ liệu với bảng màu mật ong để thể hiện cách giá thay đổi theo từng năm. Bạn có thể làm điều này bằng cách thêm tham số 'hue' để hiển thị sự thay đổi theo từng năm: + +> ✅ Tìm hiểu thêm về [bảng màu bạn có thể sử dụng trong Seaborn](https://seaborn.pydata.org/tutorial/color_palettes.html) - thử một bảng màu cầu vồng đẹp mắt! + +```python +sns.relplot(x="priceperlb", y="state", hue="year", palette="YlOrBr", data=honey, height=15, aspect=.5); +``` +![scatterplot 2](../../../../translated_images/scatter2.c0041a58621ca702990b001aa0b20cd68c1e1814417139af8a7211a2bed51c5f.vi.png) + +Với sự thay đổi bảng màu này, bạn có thể thấy rõ ràng có một sự tiến triển mạnh mẽ theo từng năm về giá mật ong mỗi pound. Thực tế, nếu bạn xem xét một tập dữ liệu mẫu để kiểm tra (chọn một bang cụ thể, ví dụ Arizona), bạn có thể thấy một mô hình tăng giá theo từng năm, với một vài ngoại lệ: + +| state | numcol | yieldpercol | totalprod | stocks | priceperlb | prodvalue | year | +| ----- | ------ | ----------- | --------- | ------- | ---------- | --------- | ---- | +| AZ | 55000 | 60 | 3300000 | 1485000 | 0.64 | 2112000 | 1998 | +| AZ | 52000 | 62 | 3224000 | 1548000 | 0.62 | 1999000 | 1999 | +| AZ | 40000 | 59 | 2360000 | 1322000 | 0.73 | 1723000 | 2000 | +| AZ | 43000 | 59 | 2537000 | 1142000 | 0.72 | 1827000 | 2001 | +| AZ | 38000 | 63 | 2394000 | 1197000 | 1.08 | 2586000 | 2002 | +| AZ | 35000 | 72 | 2520000 | 983000 | 1.34 | 3377000 | 2003 | +| AZ | 32000 | 55 | 1760000 | 774000 | 1.11 | 1954000 | 2004 | +| AZ | 36000 | 50 | 1800000 | 720000 | 1.04 | 1872000 | 2005 | +| AZ | 30000 | 65 | 1950000 | 839000 | 0.91 | 1775000 | 2006 | +| AZ | 30000 | 64 | 1920000 | 902000 | 1.26 | 2419000 | 2007 | +| AZ | 25000 | 64 | 1600000 | 336000 | 1.26 | 2016000 | 2008 | +| AZ | 20000 | 52 | 1040000 | 562000 | 1.45 | 1508000 | 2009 | +| AZ | 24000 | 77 | 1848000 | 665000 | 1.52 | 2809000 | 2010 | +| AZ | 23000 | 53 | 1219000 | 427000 | 1.55 | 1889000 | 2011 | +| AZ | 22000 | 46 | 1012000 | 253000 | 1.79 | 1811000 | 2012 | + +Một cách khác để hình dung sự tiến triển này là sử dụng kích thước thay vì màu sắc. Đối với người dùng bị mù màu, đây có thể là một lựa chọn tốt hơn. Chỉnh sửa hình dung của bạn để hiển thị sự tăng giá bằng cách tăng chu vi của các điểm: + +```python +sns.relplot(x="priceperlb", y="state", size="year", data=honey, height=15, aspect=.5); +``` +Bạn có thể thấy kích thước của các điểm tăng dần. + +![scatterplot 3](../../../../translated_images/scatter3.3c160a3d1dcb36b37900ebb4cf97f34036f28ae2b7b8e6062766c7c1dfc00853.vi.png) + +Đây có phải là một trường hợp đơn giản của cung và cầu? Do các yếu tố như biến đổi khí hậu và sự sụp đổ của đàn ong, liệu có ít mật ong hơn để mua theo từng năm, dẫn đến giá tăng? + +Để khám phá mối tương quan giữa một số biến trong tập dữ liệu này, hãy cùng tìm hiểu một số biểu đồ đường. + +## Biểu đồ đường + +Câu hỏi: Có sự tăng giá rõ ràng của mật ong mỗi pound theo từng năm không? Bạn có thể dễ dàng khám phá điều này bằng cách tạo một biểu đồ đường đơn: + +```python +sns.relplot(x="year", y="priceperlb", kind="line", data=honey); +``` +Trả lời: Có, với một số ngoại lệ vào khoảng năm 2003: + +![line chart 1](../../../../translated_images/line1.f36eb465229a3b1fe385cdc93861aab3939de987d504b05de0b6cd567ef79f43.vi.png) + +✅ Vì Seaborn đang tổng hợp dữ liệu xung quanh một đường, nó hiển thị "các phép đo nhiều lần tại mỗi giá trị x bằng cách vẽ trung bình và khoảng tin cậy 95% xung quanh trung bình". [Nguồn](https://seaborn.pydata.org/tutorial/relational.html). Hành vi tốn thời gian này có thể bị vô hiệu hóa bằng cách thêm `ci=None`. + +Câu hỏi: Vậy, vào năm 2003, liệu chúng ta có thể thấy sự tăng đột biến trong nguồn cung mật ong không? Nếu bạn xem xét tổng sản lượng theo từng năm thì sao? + +```python +sns.relplot(x="year", y="totalprod", kind="line", data=honey); +``` + +![line chart 2](../../../../translated_images/line2.a5b3493dc01058af6402e657aaa9ae1125fafb5e7d6630c777aa60f900a544e4.vi.png) + +Trả lời: Không hẳn. Nếu bạn xem xét tổng sản lượng, thực tế nó dường như đã tăng trong năm đó, mặc dù nhìn chung lượng mật ong được sản xuất đang giảm trong những năm này. + +Câu hỏi: Trong trường hợp đó, điều gì có thể đã gây ra sự tăng đột biến giá mật ong vào khoảng năm 2003? + +Để khám phá điều này, bạn có thể sử dụng một lưới facet. + +## Lưới facet + +Lưới facet lấy một khía cạnh của tập dữ liệu của bạn (trong trường hợp này, bạn có thể chọn 'năm' để tránh tạo quá nhiều facet). Seaborn sau đó có thể tạo một biểu đồ cho mỗi facet của các tọa độ x và y bạn chọn để so sánh dễ dàng hơn. Liệu năm 2003 có nổi bật trong loại so sánh này? + +Tạo một lưới facet bằng cách tiếp tục sử dụng `relplot` như được khuyến nghị bởi [tài liệu của Seaborn](https://seaborn.pydata.org/generated/seaborn.FacetGrid.html?highlight=facetgrid#seaborn.FacetGrid). + +```python +sns.relplot( + data=honey, + x="yieldpercol", y="numcol", + col="year", + col_wrap=3, + kind="line" +``` +Trong hình dung này, bạn có thể so sánh sản lượng mỗi đàn và số lượng đàn ong theo từng năm, cạnh nhau với wrap được đặt là 3 cho các cột: + +![facet grid](../../../../translated_images/facet.6a34851dcd540050dcc0ead741be35075d776741668dd0e42f482c89b114c217.vi.png) + +Đối với tập dữ liệu này, không có gì đặc biệt nổi bật liên quan đến số lượng đàn ong và sản lượng của chúng theo từng năm và từng bang. Có cách nào khác để tìm mối tương quan giữa hai biến này không? + +## Biểu đồ đường kép + +Thử một biểu đồ đường đa dòng bằng cách chồng hai biểu đồ đường lên nhau, sử dụng 'despine' của Seaborn để loại bỏ các cạnh trên và phải, và sử dụng `ax.twinx` [dẫn xuất từ Matplotlib](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.twinx.html). Twinx cho phép một biểu đồ chia sẻ trục x và hiển thị hai trục y. Vì vậy, hiển thị sản lượng mỗi đàn và số lượng đàn ong, chồng lên nhau: + +```python +fig, ax = plt.subplots(figsize=(12,6)) +lineplot = sns.lineplot(x=honey['year'], y=honey['numcol'], data=honey, + label = 'Number of bee colonies', legend=False) +sns.despine() +plt.ylabel('# colonies') +plt.title('Honey Production Year over Year'); + +ax2 = ax.twinx() +lineplot2 = sns.lineplot(x=honey['year'], y=honey['yieldpercol'], ax=ax2, color="r", + label ='Yield per colony', legend=False) +sns.despine(right=False) +plt.ylabel('colony yield') +ax.figure.legend(); +``` +![superimposed plots](../../../../translated_images/dual-line.a4c28ce659603fab2c003f4df816733df2bf41d1facb7de27989ec9afbf01b33.vi.png) + +Mặc dù không có gì nổi bật vào khoảng năm 2003, điều này cho phép chúng ta kết thúc bài học với một ghi chú tích cực hơn: mặc dù số lượng đàn ong đang giảm, số lượng đàn ong đang ổn định ngay cả khi sản lượng mỗi đàn đang giảm. + +Cố lên, ong ơi! + +🐝❤️ +## 🚀 Thử thách + +Trong bài học này, bạn đã học thêm về các cách sử dụng biểu đồ phân tán và lưới đường, bao gồm lưới facet. Thử thách bản thân bằng cách tạo một lưới facet sử dụng một tập dữ liệu khác, có thể là một tập dữ liệu bạn đã sử dụng trước đó trong các bài học này. Lưu ý thời gian tạo và cách bạn cần cẩn thận về số lượng lưới cần vẽ bằng các kỹ thuật này. +## [Câu hỏi sau bài học](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/23) + +## Ôn tập & Tự học + +Biểu đồ đường có thể đơn giản hoặc khá phức tạp. Hãy đọc thêm trong [tài liệu của Seaborn](https://seaborn.pydata.org/generated/seaborn.lineplot.html) về các cách khác nhau bạn có thể xây dựng chúng. Thử nâng cấp các biểu đồ đường bạn đã tạo trong bài học này bằng các phương pháp khác được liệt kê trong tài liệu. +## Bài tập + +[Khám phá tổ ong](assignment.md) + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/3-Data-Visualization/12-visualization-relationships/assignment.md b/translations/vi/3-Data-Visualization/12-visualization-relationships/assignment.md new file mode 100644 index 00000000..b25a9f9e --- /dev/null +++ b/translations/vi/3-Data-Visualization/12-visualization-relationships/assignment.md @@ -0,0 +1,25 @@ + +# Khám phá tổ ong + +## Hướng dẫn + +Trong bài học này, bạn đã bắt đầu xem xét một tập dữ liệu về loài ong và sản lượng mật ong của chúng trong một khoảng thời gian mà số lượng tổ ong bị giảm sút đáng kể. Hãy đi sâu hơn vào tập dữ liệu này và xây dựng một notebook có thể kể câu chuyện về sức khỏe của quần thể ong, theo từng bang và từng năm. Bạn có phát hiện điều gì thú vị về tập dữ liệu này không? + +## Tiêu chí đánh giá + +| Xuất sắc | Đạt yêu cầu | Cần cải thiện | +| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- | ---------------------------------------- | +| Một notebook được trình bày với câu chuyện được chú thích bằng ít nhất ba biểu đồ khác nhau, thể hiện các khía cạnh của tập dữ liệu, theo từng bang và từng năm | Notebook thiếu một trong các yếu tố này | Notebook thiếu hai trong các yếu tố này | + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/3-Data-Visualization/13-meaningful-visualizations/README.md b/translations/vi/3-Data-Visualization/13-meaningful-visualizations/README.md new file mode 100644 index 00000000..612600a8 --- /dev/null +++ b/translations/vi/3-Data-Visualization/13-meaningful-visualizations/README.md @@ -0,0 +1,182 @@ + +# Tạo Các Hình Minh Họa Dữ Liệu Có Ý Nghĩa + +|![ Sketchnote của [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/13-MeaningfulViz.png)| +|:---:| +| Hình Minh Họa Dữ Liệu Có Ý Nghĩa - _Sketchnote của [@nitya](https://twitter.com/nitya)_ | + +> "Nếu bạn tra tấn dữ liệu đủ lâu, nó sẽ thú nhận bất cứ điều gì" -- [Ronald Coase](https://en.wikiquote.org/wiki/Ronald_Coase) + +Một trong những kỹ năng cơ bản của một nhà khoa học dữ liệu là khả năng tạo ra các hình minh họa dữ liệu có ý nghĩa, giúp trả lời các câu hỏi mà bạn có thể có. Trước khi minh họa dữ liệu, bạn cần đảm bảo rằng dữ liệu đã được làm sạch và chuẩn bị, như bạn đã làm trong các bài học trước. Sau đó, bạn có thể bắt đầu quyết định cách tốt nhất để trình bày dữ liệu. + +Trong bài học này, bạn sẽ xem xét: + +1. Cách chọn loại biểu đồ phù hợp +2. Cách tránh biểu đồ gây hiểu lầm +3. Cách làm việc với màu sắc +4. Cách định dạng biểu đồ để dễ đọc +5. Cách xây dựng các giải pháp biểu đồ động hoặc 3D +6. Cách tạo ra một hình minh họa sáng tạo + +## [Câu hỏi trước bài học](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/24) + +## Chọn loại biểu đồ phù hợp + +Trong các bài học trước, bạn đã thử nghiệm xây dựng nhiều loại hình minh họa dữ liệu thú vị bằng cách sử dụng Matplotlib và Seaborn. Nói chung, bạn có thể chọn [loại biểu đồ phù hợp](https://chartio.com/learn/charts/how-to-select-a-data-vizualization/) cho câu hỏi bạn đang đặt ra bằng cách sử dụng bảng sau: + +| Bạn cần: | Bạn nên sử dụng: | +| -------------------------- | ------------------------------- | +| Hiển thị xu hướng dữ liệu theo thời gian | Đường (Line) | +| So sánh các danh mục | Cột (Bar), Tròn (Pie) | +| So sánh tổng số | Tròn (Pie), Cột xếp chồng | +| Hiển thị mối quan hệ | Điểm (Scatter), Đường, Facet, Đường kép | +| Hiển thị phân phối | Điểm (Scatter), Histogram, Box | +| Hiển thị tỷ lệ | Tròn (Pie), Donut, Waffle | + +> ✅ Tùy thuộc vào cấu trúc dữ liệu của bạn, bạn có thể cần chuyển đổi dữ liệu từ dạng văn bản sang số để biểu đồ hỗ trợ. + +## Tránh gây hiểu lầm + +Ngay cả khi một nhà khoa học dữ liệu cẩn thận chọn đúng biểu đồ cho đúng dữ liệu, vẫn có nhiều cách để dữ liệu được trình bày nhằm chứng minh một quan điểm, thường là làm tổn hại đến tính chính xác của dữ liệu. Có rất nhiều ví dụ về các biểu đồ và đồ họa thông tin gây hiểu lầm! + +[![How Charts Lie của Alberto Cairo](../../../../translated_images/tornado.9f42168791208f970d6faefc11d1226d7ca89518013b14aa66b1c9edcd7678d2.vi.png)](https://www.youtube.com/watch?v=oX74Nge8Wkw "How charts lie") + +> 🎥 Nhấp vào hình ảnh trên để xem một bài nói chuyện về các biểu đồ gây hiểu lầm + +Biểu đồ này đảo ngược trục X để hiển thị điều ngược lại với sự thật, dựa trên ngày tháng: + +![bad chart 1](../../../../translated_images/bad-chart-1.93130f495b748bedfb3423d91b1e754d9026e17f94ad967aecdc9ca7203373bf.vi.png) + +[Biểu đồ này](https://media.firstcoastnews.com/assets/WTLV/images/170ae16f-4643-438f-b689-50d66ca6a8d8/170ae16f-4643-438f-b689-50d66ca6a8d8_1140x641.jpg) thậm chí còn gây hiểu lầm hơn, vì mắt người bị thu hút về phía bên phải để kết luận rằng, theo thời gian, số ca COVID đã giảm ở các quận khác nhau. Thực tế, nếu bạn nhìn kỹ vào các ngày tháng, bạn sẽ thấy chúng đã được sắp xếp lại để tạo ra xu hướng giảm giả. + +![bad chart 2](../../../../translated_images/bad-chart-2.c20e36dd4e6f617c0c325878dd421a563885bbf30a394884c147438827254e0e.vi.jpg) + +Ví dụ nổi tiếng này sử dụng màu sắc VÀ trục Y bị lật để đánh lừa: thay vì kết luận rằng số ca tử vong do súng tăng vọt sau khi thông qua luật thân thiện với súng, thực tế mắt người bị đánh lừa để nghĩ rằng điều ngược lại là đúng: + +![bad chart 3](../../../../translated_images/bad-chart-3.6865d0afac4108d737558d90a61547d23a8722896397ec792264ee51a1be4be5.vi.jpg) + +Biểu đồ kỳ lạ này cho thấy cách tỷ lệ có thể bị thao túng, dẫn đến hiệu ứng hài hước: + +![bad chart 4](../../../../translated_images/bad-chart-4.68cfdf4011b454471053ee1231172747e1fbec2403b4443567f1dc678134f4f2.vi.jpg) + +So sánh những thứ không thể so sánh là một thủ thuật mờ ám khác. Có một [trang web tuyệt vời](https://tylervigen.com/spurious-correlations) về 'mối tương quan giả' hiển thị các 'sự thật' như tỷ lệ ly hôn ở Maine và mức tiêu thụ bơ thực vật. Một nhóm trên Reddit cũng thu thập [các cách sử dụng dữ liệu xấu xí](https://www.reddit.com/r/dataisugly/top/?t=all). + +Điều quan trọng là phải hiểu mắt người dễ bị đánh lừa bởi các biểu đồ gây hiểu lầm như thế nào. Ngay cả khi ý định của nhà khoa học dữ liệu là tốt, việc chọn một loại biểu đồ không phù hợp, chẳng hạn như biểu đồ tròn hiển thị quá nhiều danh mục, cũng có thể gây hiểu lầm. + +## Màu sắc + +Bạn đã thấy trong biểu đồ 'bạo lực súng ở Florida' ở trên rằng màu sắc có thể cung cấp một lớp ý nghĩa bổ sung cho biểu đồ, đặc biệt là những biểu đồ không được thiết kế bằng các thư viện như Matplotlib và Seaborn, vốn đi kèm với các thư viện và bảng màu đã được kiểm chứng. Nếu bạn đang tạo một biểu đồ bằng tay, hãy nghiên cứu một chút về [lý thuyết màu sắc](https://colormatters.com/color-and-design/basic-color-theory). + +> ✅ Hãy lưu ý, khi thiết kế biểu đồ, rằng khả năng tiếp cận là một khía cạnh quan trọng của hình minh họa. Một số người dùng của bạn có thể bị mù màu - liệu biểu đồ của bạn có hiển thị tốt cho những người dùng bị suy giảm thị lực không? + +Hãy cẩn thận khi chọn màu sắc cho biểu đồ của bạn, vì màu sắc có thể truyền tải ý nghĩa mà bạn không mong muốn. 'Những quý cô màu hồng' trong biểu đồ 'chiều cao' ở trên truyền tải một ý nghĩa 'nữ tính' rõ ràng, làm tăng thêm sự kỳ quặc của chính biểu đồ. + +Mặc dù [ý nghĩa của màu sắc](https://colormatters.com/color-symbolism/the-meanings-of-colors) có thể khác nhau ở các khu vực khác nhau trên thế giới và có xu hướng thay đổi theo sắc thái, nhưng nói chung, ý nghĩa của màu sắc bao gồm: + +| Màu sắc | Ý nghĩa | +| ------- | ---------------------- | +| đỏ | quyền lực | +| xanh | tin cậy, trung thành | +| vàng | hạnh phúc, cảnh báo | +| xanh lá | sinh thái, may mắn, ghen tị | +| tím | hạnh phúc | +| cam | sôi động | + +Nếu bạn được giao nhiệm vụ tạo một biểu đồ với màu sắc tùy chỉnh, hãy đảm bảo rằng biểu đồ của bạn vừa dễ tiếp cận vừa phù hợp với ý nghĩa mà bạn muốn truyền tải. + +## Định dạng biểu đồ để dễ đọc + +Biểu đồ sẽ không có ý nghĩa nếu chúng không dễ đọc! Hãy dành một chút thời gian để cân nhắc định dạng chiều rộng và chiều cao của biểu đồ sao cho phù hợp với dữ liệu của bạn. Nếu một biến (chẳng hạn như tất cả 50 bang) cần được hiển thị, hãy hiển thị chúng theo chiều dọc trên trục Y nếu có thể để tránh biểu đồ cuộn ngang. + +Gắn nhãn trục, cung cấp chú giải nếu cần thiết và cung cấp các chú giải công cụ (tooltips) để hiểu dữ liệu tốt hơn. + +Nếu dữ liệu của bạn là văn bản và dài dòng trên trục X, bạn có thể xoay góc văn bản để dễ đọc hơn. [Matplotlib](https://matplotlib.org/stable/tutorials/toolkits/mplot3d.html) cung cấp khả năng vẽ 3D, nếu dữ liệu của bạn hỗ trợ. Các hình minh họa dữ liệu phức tạp có thể được tạo ra bằng cách sử dụng `mpl_toolkits.mplot3d`. + +![3d plots](../../../../translated_images/3d.0cec12bcc60f0ce7284c63baed1411a843e24716f7d7425de878715ebad54a15.vi.png) + +## Hiển thị biểu đồ động và 3D + +Một số hình minh họa dữ liệu tốt nhất hiện nay là động. Shirley Wu có những ví dụ tuyệt vời được thực hiện với D3, chẳng hạn như '[film flowers](http://bl.ocks.org/sxywu/raw/d612c6c653fb8b4d7ff3d422be164a5d/)', nơi mỗi bông hoa là một hình minh họa của một bộ phim. Một ví dụ khác cho Guardian là 'bussed out', một trải nghiệm tương tác kết hợp các hình minh họa với Greensock và D3 cùng với định dạng bài viết cuộn để kể câu chuyện về cách NYC xử lý vấn đề người vô gia cư bằng cách đưa họ ra khỏi thành phố. + +![busing](../../../../translated_images/busing.7b9e3b41cd4b981c6d63922cd82004cc1cf18895155536c1d98fcc0999bdd23e.vi.png) + +> "Bussed Out: How America Moves its Homeless" từ [the Guardian](https://www.theguardian.com/us-news/ng-interactive/2017/dec/20/bussed-out-america-moves-homeless-people-country-study). Hình minh họa bởi Nadieh Bremer & Shirley Wu + +Mặc dù bài học này không đủ để đi sâu vào việc dạy các thư viện hình minh họa mạnh mẽ này, hãy thử sử dụng D3 trong một ứng dụng Vue.js bằng cách sử dụng một thư viện để hiển thị hình minh họa của cuốn sách "Dangerous Liaisons" dưới dạng một mạng xã hội động. + +> "Les Liaisons Dangereuses" là một tiểu thuyết dưới dạng thư từ, hoặc một tiểu thuyết được trình bày dưới dạng một loạt các lá thư. Được viết vào năm 1782 bởi Choderlos de Laclos, nó kể câu chuyện về những mưu đồ xã hội độc ác và vô đạo đức của hai nhân vật chính đối đầu nhau trong giới quý tộc Pháp cuối thế kỷ 18, Vicomte de Valmont và Marquise de Merteuil. Cả hai đều gặp kết cục bi thảm nhưng không phải trước khi gây ra rất nhiều tổn hại xã hội. Tiểu thuyết diễn ra dưới dạng một loạt các lá thư được viết cho nhiều người trong vòng tròn của họ, âm mưu trả thù hoặc đơn giản là để gây rắc rối. Hãy tạo một hình minh họa về những lá thư này để khám phá các nhân vật chính của câu chuyện, một cách trực quan. + +Bạn sẽ hoàn thành một ứng dụng web hiển thị một cái nhìn động về mạng xã hội này. Nó sử dụng một thư viện được xây dựng để tạo ra một [hình minh họa mạng](https://github.com/emiliorizzo/vue-d3-network) bằng Vue.js và D3. Khi ứng dụng đang chạy, bạn có thể kéo các nút xung quanh trên màn hình để sắp xếp lại dữ liệu. + +![liaisons](../../../../translated_images/liaisons.7b440b28f6d07ea430244fdf1fc4c64ff48f473f143b8e921846eda1c302aeba.vi.png) + +## Dự án: Tạo một biểu đồ hiển thị mạng bằng D3.js + +> Thư mục bài học này bao gồm một thư mục `solution` nơi bạn có thể tìm thấy dự án hoàn chỉnh để tham khảo. + +1. Thực hiện theo các hướng dẫn trong tệp README.md trong thư mục gốc của thư mục starter. Đảm bảo rằng bạn đã cài đặt NPM và Node.js trên máy của mình trước khi cài đặt các phụ thuộc của dự án. + +2. Mở thư mục `starter/src`. Bạn sẽ thấy một thư mục `assets` nơi bạn có thể tìm thấy một tệp .json chứa tất cả các lá thư từ tiểu thuyết, được đánh số, với chú thích 'to' và 'from'. + +3. Hoàn thành mã trong `components/Nodes.vue` để kích hoạt hình minh họa. Tìm phương thức có tên `createLinks()` và thêm vòng lặp lồng nhau sau. + +Duyệt qua đối tượng .json để lấy dữ liệu 'to' và 'from' cho các lá thư và xây dựng đối tượng `links` để thư viện hình minh họa có thể sử dụng: + +```javascript +//loop through letters + let f = 0; + let t = 0; + for (var i = 0; i < letters.length; i++) { + for (var j = 0; j < characters.length; j++) { + + if (characters[j] == letters[i].from) { + f = j; + } + if (characters[j] == letters[i].to) { + t = j; + } + } + this.links.push({ sid: f, tid: t }); + } + ``` + +Chạy ứng dụng của bạn từ terminal (npm run serve) và tận hưởng hình minh họa! + +## 🚀 Thử thách + +Khám phá internet để tìm các hình minh họa gây hiểu lầm. Tác giả đã đánh lừa người dùng như thế nào, và điều đó có phải là cố ý không? Hãy thử chỉnh sửa các hình minh họa để hiển thị chúng đúng cách. + +## [Câu hỏi sau bài học](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/25) + +## Ôn tập & Tự học + +Dưới đây là một số bài viết để đọc về hình minh họa dữ liệu gây hiểu lầm: + +https://gizmodo.com/how-to-lie-with-data-visualization-1563576606 + +http://ixd.prattsi.org/2017/12/visual-lies-usability-in-deceptive-data-visualizations/ + +Hãy xem các hình minh họa thú vị về tài sản và hiện vật lịch sử: + +https://handbook.pubpub.org/ + +Xem qua bài viết này về cách hoạt ảnh có thể nâng cao hình minh họa của bạn: + +https://medium.com/@EvanSinar/use-animation-to-supercharge-data-visualization-cd905a882ad4 + +## Bài tập + +[Tự tạo hình minh họa tùy chỉnh của bạn](assignment.md) + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/3-Data-Visualization/13-meaningful-visualizations/assignment.md b/translations/vi/3-Data-Visualization/13-meaningful-visualizations/assignment.md new file mode 100644 index 00000000..68225357 --- /dev/null +++ b/translations/vi/3-Data-Visualization/13-meaningful-visualizations/assignment.md @@ -0,0 +1,25 @@ + +# Tự xây dựng hình ảnh hóa tùy chỉnh của bạn + +## Hướng dẫn + +Sử dụng mẫu mã trong dự án này để tạo một mạng xã hội, mô phỏng dữ liệu từ các tương tác xã hội của riêng bạn. Bạn có thể lập bản đồ việc sử dụng mạng xã hội của mình hoặc tạo một sơ đồ về các thành viên trong gia đình. Hãy tạo một ứng dụng web thú vị hiển thị một hình ảnh hóa độc đáo của mạng xã hội. + +## Tiêu chí đánh giá + +Xuất sắc | Đạt yêu cầu | Cần cải thiện +--- | --- | --- | +Một kho GitHub được trình bày với mã chạy đúng (thử triển khai nó như một ứng dụng web tĩnh) và có README được chú thích giải thích dự án | Kho không chạy đúng hoặc không được tài liệu hóa tốt | Kho không chạy đúng và không được tài liệu hóa tốt + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/3-Data-Visualization/13-meaningful-visualizations/solution/README.md b/translations/vi/3-Data-Visualization/13-meaningful-visualizations/solution/README.md new file mode 100644 index 00000000..5d3f5121 --- /dev/null +++ b/translations/vi/3-Data-Visualization/13-meaningful-visualizations/solution/README.md @@ -0,0 +1,40 @@ + +# Dự án trực quan hóa dữ liệu Dangerous Liaisons + +Để bắt đầu, bạn cần đảm bảo rằng bạn đã cài đặt NPM và Node trên máy của mình. Cài đặt các phụ thuộc (npm install) và sau đó chạy dự án cục bộ (npm run serve): + +## Cài đặt dự án +``` +npm install +``` + +### Biên dịch và tải lại nhanh cho phát triển +``` +npm run serve +``` + +### Biên dịch và tối ưu hóa cho sản xuất +``` +npm run build +``` + +### Kiểm tra và sửa lỗi tệp +``` +npm run lint +``` + +### Tùy chỉnh cấu hình +Xem [Tài liệu tham khảo về cấu hình](https://cli.vuejs.org/config/). + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/3-Data-Visualization/13-meaningful-visualizations/starter/README.md b/translations/vi/3-Data-Visualization/13-meaningful-visualizations/starter/README.md new file mode 100644 index 00000000..4a0c40fb --- /dev/null +++ b/translations/vi/3-Data-Visualization/13-meaningful-visualizations/starter/README.md @@ -0,0 +1,40 @@ + +# Dự án trực quan hóa dữ liệu Dangerous Liaisons + +Để bắt đầu, bạn cần đảm bảo rằng NPM và Node đang chạy trên máy của bạn. Cài đặt các gói phụ thuộc (npm install) và sau đó chạy dự án cục bộ (npm run serve): + +## Cài đặt dự án +``` +npm install +``` + +### Biên dịch và tải lại tự động cho phát triển +``` +npm run serve +``` + +### Biên dịch và tối ưu hóa cho sản xuất +``` +npm run build +``` + +### Kiểm tra và sửa lỗi tệp +``` +npm run lint +``` + +### Tùy chỉnh cấu hình +Xem [Tham chiếu Cấu hình](https://cli.vuejs.org/config/). + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/3-Data-Visualization/R/09-visualization-quantities/README.md b/translations/vi/3-Data-Visualization/R/09-visualization-quantities/README.md new file mode 100644 index 00000000..b7dc04a2 --- /dev/null +++ b/translations/vi/3-Data-Visualization/R/09-visualization-quantities/README.md @@ -0,0 +1,231 @@ + +# Trực quan hóa số lượng +|![ Sketchnote của [(@sketchthedocs)](https://sketchthedocs.dev) ](https://github.com/microsoft/Data-Science-For-Beginners/blob/main/sketchnotes/09-Visualizing-Quantities.png)| +|:---:| +| Trực quan hóa số lượng - _Sketchnote của [@nitya](https://twitter.com/nitya)_ | + +Trong bài học này, bạn sẽ khám phá cách sử dụng một số thư viện R có sẵn để học cách tạo ra các biểu đồ thú vị xoay quanh khái niệm về số lượng. Sử dụng một tập dữ liệu đã được làm sạch về các loài chim ở Minnesota, bạn có thể tìm hiểu nhiều thông tin thú vị về động vật hoang dã địa phương. +## [Câu hỏi trước bài học](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/16) + +## Quan sát sải cánh với ggplot2 +Một thư viện tuyệt vời để tạo cả biểu đồ đơn giản và phức tạp thuộc nhiều loại khác nhau là [ggplot2](https://cran.r-project.org/web/packages/ggplot2/index.html). Nói chung, quá trình vẽ biểu đồ bằng các thư viện này bao gồm việc xác định các phần của dataframe mà bạn muốn nhắm đến, thực hiện các phép biến đổi cần thiết trên dữ liệu, gán giá trị cho trục x và y, quyết định loại biểu đồ cần hiển thị, và sau đó hiển thị biểu đồ. + +`ggplot2` là một hệ thống tạo đồ họa theo cách khai báo, dựa trên The Grammar of Graphics. [Grammar of Graphics](https://en.wikipedia.org/wiki/Ggplot2) là một sơ đồ tổng quát cho việc trực quan hóa dữ liệu, chia nhỏ biểu đồ thành các thành phần ngữ nghĩa như thang đo và lớp. Nói cách khác, sự dễ dàng trong việc tạo biểu đồ cho dữ liệu đơn biến hoặc đa biến với ít mã lệnh khiến `ggplot2` trở thành gói phổ biến nhất được sử dụng để trực quan hóa trong R. Người dùng chỉ cần nói cho `ggplot2` biết cách ánh xạ các biến vào các yếu tố thẩm mỹ, các hình dạng đồ họa cần sử dụng, và `ggplot2` sẽ lo phần còn lại. + +> ✅ Biểu đồ = Dữ liệu + Thẩm mỹ + Hình học +> - Dữ liệu: tập dữ liệu +> - Thẩm mỹ: các biến cần nghiên cứu (biến x và y) +> - Hình học: loại biểu đồ (biểu đồ đường, biểu đồ cột, v.v.) + +Hãy chọn hình học (loại biểu đồ) phù hợp nhất với dữ liệu của bạn và câu chuyện bạn muốn kể qua biểu đồ. + +> - Để phân tích xu hướng: đường, cột +> - Để so sánh giá trị: cột, thanh, tròn, scatterplot +> - Để thể hiện mối quan hệ giữa các phần và tổng thể: tròn +> - Để thể hiện phân phối dữ liệu: scatterplot, cột +> - Để thể hiện mối quan hệ giữa các giá trị: đường, scatterplot, bong bóng + +✅ Bạn cũng có thể tham khảo [cheatsheet](https://nyu-cdsc.github.io/learningr/assets/data-visualization-2.1.pdf) mô tả chi tiết này cho ggplot2. + +## Tạo biểu đồ đường về giá trị sải cánh của chim + +Mở R console và nhập tập dữ liệu. +> Lưu ý: Tập dữ liệu được lưu trong thư mục gốc của repo này tại thư mục `/data`. + +Hãy nhập tập dữ liệu và quan sát phần đầu (5 hàng đầu tiên) của dữ liệu. + +```r +birds <- read.csv("../../data/birds.csv",fileEncoding="UTF-8-BOM") +head(birds) +``` +Phần đầu của dữ liệu bao gồm cả văn bản và số: + +| | Tên | Tên khoa học | Loại | Bộ | Họ | Chi | Tình trạng bảo tồn | Chiều dài nhỏ nhất | Chiều dài lớn nhất | Khối lượng nhỏ nhất | Khối lượng lớn nhất | Sải cánh nhỏ nhất | Sải cánh lớn nhất | +| ---: | :--------------------------- | :--------------------- | :-------------------- | :----------- | :------- | :---------- | :----------------- | -----------------: | -----------------: | ------------------: | ------------------: | ----------------: | ----------------: | +| 0 | Vịt huýt sáo bụng đen | Dendrocygna autumnalis | Vịt/ngỗng/chim nước | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 | +| 1 | Vịt huýt sáo hung | Dendrocygna bicolor | Vịt/ngỗng/chim nước | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 | +| 2 | Ngỗng tuyết | Anser caerulescens | Vịt/ngỗng/chim nước | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 | +| 3 | Ngỗng Ross | Anser rossii | Vịt/ngỗng/chim nước | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 | +| 4 | Ngỗng trán trắng lớn | Anser albifrons | Vịt/ngỗng/chim nước | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 | + +Hãy bắt đầu bằng cách vẽ một số dữ liệu số bằng biểu đồ đường cơ bản. Giả sử bạn muốn xem giá trị sải cánh lớn nhất của những loài chim thú vị này. + +```r +install.packages("ggplot2") +library("ggplot2") +ggplot(data=birds, aes(x=Name, y=MaxWingspan,group=1)) + + geom_line() +``` +Ở đây, bạn cài đặt gói `ggplot2` và sau đó nhập nó vào workspace bằng lệnh `library("ggplot2")`. Để vẽ bất kỳ biểu đồ nào trong ggplot, hàm `ggplot()` được sử dụng và bạn chỉ định tập dữ liệu, các biến x và y làm thuộc tính. Trong trường hợp này, chúng ta sử dụng hàm `geom_line()` vì mục tiêu là vẽ biểu đồ đường. + +![MaxWingspan-lineplot](../../../../../translated_images/MaxWingspan-lineplot.b12169f99d26fdd263f291008dfd73c18a4ba8f3d32b1fda3d74af51a0a28616.vi.png) + +Bạn nhận thấy điều gì ngay lập tức? Có vẻ như có ít nhất một giá trị ngoại lai - đó là một sải cánh khá lớn! Một sải cánh hơn 2000 cm tương đương hơn 20 mét - liệu có phải khủng long bay đang lang thang ở Minnesota? Hãy điều tra. + +Mặc dù bạn có thể thực hiện sắp xếp nhanh trong Excel để tìm các giá trị ngoại lai, có thể là lỗi đánh máy, hãy tiếp tục quá trình trực quan hóa bằng cách làm việc từ trong biểu đồ. + +Thêm nhãn vào trục x để hiển thị loại chim nào đang được đề cập: + +```r +ggplot(data=birds, aes(x=Name, y=MaxWingspan,group=1)) + + geom_line() + + theme(axis.text.x = element_text(angle = 45, hjust=1))+ + xlab("Birds") + + ylab("Wingspan (CM)") + + ggtitle("Max Wingspan in Centimeters") +``` +Chúng ta chỉ định góc trong `theme` và chỉ định nhãn cho trục x và y trong `xlab()` và `ylab()` tương ứng. Hàm `ggtitle()` đặt tên cho biểu đồ. + +![MaxWingspan-lineplot-improved](../../../../../translated_images/MaxWingspan-lineplot-improved.04b73b4d5a59552a6bc7590678899718e1f065abe9eada9ebb4148939b622fd4.vi.png) + +Ngay cả khi xoay nhãn ở góc 45 độ, vẫn có quá nhiều nhãn để đọc. Hãy thử một chiến lược khác: chỉ gắn nhãn cho các giá trị ngoại lai và đặt nhãn trong biểu đồ. Bạn có thể sử dụng biểu đồ scatter để có thêm không gian cho việc gắn nhãn: + +```r +ggplot(data=birds, aes(x=Name, y=MaxWingspan,group=1)) + + geom_point() + + geom_text(aes(label=ifelse(MaxWingspan>500,as.character(Name),'')),hjust=0,vjust=0) + + theme(axis.title.x=element_blank(), axis.text.x=element_blank(), axis.ticks.x=element_blank()) + ylab("Wingspan (CM)") + + ggtitle("Max Wingspan in Centimeters") + +``` +Điều gì đang xảy ra ở đây? Bạn đã sử dụng hàm `geom_point()` để vẽ các điểm scatter. Với điều này, bạn đã thêm nhãn cho các loài chim có `MaxWingspan > 500` và cũng ẩn các nhãn trên trục x để giảm sự lộn xộn của biểu đồ. + +Bạn phát hiện ra điều gì? + +![MaxWingspan-scatterplot](../../../../../translated_images/MaxWingspan-scatterplot.60dc9e0e19d32700283558f253841fdab5104abb62bc96f7d97f9c0ee857fa8b.vi.png) + +## Lọc dữ liệu của bạn + +Cả Đại bàng Đầu trắng và Chim cắt Prairie, mặc dù có thể là những loài chim rất lớn, dường như đã bị gắn nhãn sai, với một số 0 thừa được thêm vào sải cánh tối đa của chúng. Khó có khả năng bạn sẽ gặp một con Đại bàng Đầu trắng với sải cánh 25 mét, nhưng nếu có, hãy cho chúng tôi biết! Hãy tạo một dataframe mới không bao gồm hai giá trị ngoại lai đó: + +```r +birds_filtered <- subset(birds, MaxWingspan < 500) + +ggplot(data=birds_filtered, aes(x=Name, y=MaxWingspan,group=1)) + + geom_point() + + ylab("Wingspan (CM)") + + xlab("Birds") + + ggtitle("Max Wingspan in Centimeters") + + geom_text(aes(label=ifelse(MaxWingspan>500,as.character(Name),'')),hjust=0,vjust=0) + + theme(axis.text.x=element_blank(), axis.ticks.x=element_blank()) +``` +Chúng ta đã tạo một dataframe mới `birds_filtered` và sau đó vẽ một biểu đồ scatter. Bằng cách lọc các giá trị ngoại lai, dữ liệu của bạn giờ đây trở nên gắn kết và dễ hiểu hơn. + +![MaxWingspan-scatterplot-improved](../../../../../translated_images/MaxWingspan-scatterplot-improved.7d0af81658c65f3e75b8fedeb2335399e31108257e48db15d875ece608272051.vi.png) + +Bây giờ chúng ta đã có một tập dữ liệu sạch hơn ít nhất là về sải cánh, hãy khám phá thêm về những loài chim này. + +Mặc dù biểu đồ đường và scatter có thể hiển thị thông tin về giá trị dữ liệu và phân phối của chúng, chúng ta muốn suy nghĩ về các giá trị vốn có trong tập dữ liệu này. Bạn có thể tạo các biểu đồ để trả lời các câu hỏi sau về số lượng: + +> Có bao nhiêu loại chim, và số lượng của chúng là bao nhiêu? +> Có bao nhiêu loài chim đã tuyệt chủng, đang nguy cấp, hiếm, hoặc phổ biến? +> Có bao nhiêu loài thuộc các chi và bộ khác nhau theo thuật ngữ của Linnaeus? + +## Khám phá biểu đồ cột + +Biểu đồ cột rất hữu ích khi bạn cần hiển thị các nhóm dữ liệu. Hãy khám phá các loại chim tồn tại trong tập dữ liệu này để xem loại nào phổ biến nhất theo số lượng. +Hãy tạo một biểu đồ cột trên dữ liệu đã lọc. + +```r +install.packages("dplyr") +install.packages("tidyverse") + +library(lubridate) +library(scales) +library(dplyr) +library(ggplot2) +library(tidyverse) + +birds_filtered %>% group_by(Category) %>% + summarise(n=n(), + MinLength = mean(MinLength), + MaxLength = mean(MaxLength), + MinBodyMass = mean(MinBodyMass), + MaxBodyMass = mean(MaxBodyMass), + MinWingspan=mean(MinWingspan), + MaxWingspan=mean(MaxWingspan)) %>% + gather("key", "value", - c(Category, n)) %>% + ggplot(aes(x = Category, y = value, group = key, fill = key)) + + geom_bar(stat = "identity") + + scale_fill_manual(values = c("#D62728", "#FF7F0E", "#8C564B","#2CA02C", "#1F77B4", "#9467BD")) + + xlab("Category")+ggtitle("Birds of Minnesota") + +``` +Trong đoạn mã sau, chúng ta cài đặt các gói [dplyr](https://www.rdocumentation.org/packages/dplyr/versions/0.7.8) và [lubridate](https://www.rdocumentation.org/packages/lubridate/versions/1.8.0) để hỗ trợ thao tác và nhóm dữ liệu nhằm vẽ biểu đồ cột xếp chồng. Đầu tiên, bạn nhóm dữ liệu theo `Category` của chim và sau đó tóm tắt các cột `MinLength`, `MaxLength`, `MinBodyMass`, `MaxBodyMass`, `MinWingspan`, `MaxWingspan`. Sau đó, vẽ biểu đồ cột bằng gói `ggplot2` và chỉ định màu sắc cho các loại khác nhau và nhãn. + +![Stacked bar chart](../../../../../translated_images/stacked-bar-chart.0c92264e89da7b391a7490224d1e7059a020e8b74dcd354414aeac78871c02f1.vi.png) + +Tuy nhiên, biểu đồ cột này khó đọc vì có quá nhiều dữ liệu không được nhóm. Bạn cần chọn chỉ dữ liệu mà bạn muốn vẽ, vì vậy hãy xem xét chiều dài của chim dựa trên loại của chúng. + +Lọc dữ liệu của bạn để chỉ bao gồm loại chim. + +Vì có nhiều loại, bạn có thể hiển thị biểu đồ này theo chiều dọc và điều chỉnh chiều cao của nó để phù hợp với tất cả dữ liệu: + +```r +birds_count<-dplyr::count(birds_filtered, Category, sort = TRUE) +birds_count$Category <- factor(birds_count$Category, levels = birds_count$Category) +ggplot(birds_count,aes(Category,n))+geom_bar(stat="identity")+coord_flip() +``` +Bạn đầu tiên đếm các giá trị duy nhất trong cột `Category` và sau đó sắp xếp chúng vào một dataframe mới `birds_count`. Dữ liệu đã sắp xếp này sau đó được đưa vào cùng cấp để nó được vẽ theo cách đã sắp xếp. Sử dụng `ggplot2`, bạn sau đó vẽ dữ liệu trong một biểu đồ cột. Hàm `coord_flip()` vẽ các cột theo chiều ngang. + +![category-length](../../../../../translated_images/category-length.7e34c296690e85d64f7e4d25a56077442683eca96c4f5b4eae120a64c0755636.vi.png) + +Biểu đồ cột này cho thấy một cái nhìn tốt về số lượng chim trong mỗi loại. Trong nháy mắt, bạn thấy rằng số lượng chim lớn nhất trong khu vực này thuộc loại Vịt/ngỗng/chim nước. Minnesota là "vùng đất của 10.000 hồ" nên điều này không có gì ngạc nhiên! + +✅ Hãy thử một số đếm khác trên tập dữ liệu này. Có điều gì làm bạn ngạc nhiên không? + +## So sánh dữ liệu + +Bạn có thể thử các so sánh khác nhau của dữ liệu được nhóm bằng cách tạo các trục mới. Hãy thử so sánh chiều dài tối đa của chim, dựa trên loại của chúng: + +```r +birds_grouped <- birds_filtered %>% + group_by(Category) %>% + summarise( + MaxLength = max(MaxLength, na.rm = T), + MinLength = max(MinLength, na.rm = T) + ) %>% + arrange(Category) + +ggplot(birds_grouped,aes(Category,MaxLength))+geom_bar(stat="identity")+coord_flip() +``` +Chúng ta nhóm dữ liệu `birds_filtered` theo `Category` và sau đó vẽ một biểu đồ cột. + +![comparing data](../../../../../translated_images/comparingdata.f486a450d61c7ca5416f27f3f55a6a4465d00df3be5e6d33936e9b07b95e2fdd.vi.png) + +Không có gì ngạc nhiên ở đây: chim ruồi có chiều dài tối đa nhỏ nhất so với bồ nông hoặc ngỗng. Thật tốt khi dữ liệu có ý nghĩa logic! + +Bạn có thể tạo các biểu đồ cột thú vị hơn bằng cách chồng dữ liệu. Hãy chồng chiều dài tối thiểu và tối đa lên một loại chim cụ thể: + +```r +ggplot(data=birds_grouped, aes(x=Category)) + + geom_bar(aes(y=MaxLength), stat="identity", position ="identity", fill='blue') + + geom_bar(aes(y=MinLength), stat="identity", position="identity", fill='orange')+ + coord_flip() +``` +![super-imposed values](../../../../../translated_images/superimposed-values.5363f0705a1da4167625a373a1064331ea3cb7a06a297297d0734fcc9b3819a0.vi.png) + +## 🚀 Thử thách + +Tập dữ liệu về chim này cung cấp rất nhiều thông tin về các loại chim khác nhau trong một hệ sinh thái cụ thể. Hãy tìm kiếm trên internet và xem liệu bạn có thể tìm thấy các tập dữ liệu khác liên quan đến chim không. Thực hành xây dựng các biểu đồ và đồ thị xung quanh các loài chim này để khám phá những điều bạn chưa từng nhận ra. +## [Câu hỏi sau bài học](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/17) + +## Ôn tập & Tự học + +Bài học đầu tiên này đã cung cấp cho bạn một số thông tin về cách sử dụng `ggplot2` để trực quan hóa số lượng. Hãy nghiên cứu thêm về các cách khác để làm việc với tập dữ liệu cho việc trực quan hóa. Tìm hiểu và tìm kiếm các tập dữ liệu mà bạn có thể trực quan hóa bằng các gói khác như [Lattice](https://stat.ethz.ch/R-manual/R-devel/library/lattice/html/Lattice.html) và [Plotly](https://github.com/plotly/plotly.R#readme). + +## Bài tập +[Đường, Scatter, và Cột](assignment.md) + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/3-Data-Visualization/R/09-visualization-quantities/assignment.md b/translations/vi/3-Data-Visualization/R/09-visualization-quantities/assignment.md new file mode 100644 index 00000000..7cf569a4 --- /dev/null +++ b/translations/vi/3-Data-Visualization/R/09-visualization-quantities/assignment.md @@ -0,0 +1,25 @@ + +# Đường, Biểu đồ Tán Xạ và Biểu Đồ Cột + +## Hướng Dẫn + +Trong bài học này, bạn đã làm việc với biểu đồ đường, biểu đồ tán xạ và biểu đồ cột để thể hiện những thông tin thú vị về tập dữ liệu này. Trong bài tập này, hãy đi sâu hơn vào tập dữ liệu để khám phá một thông tin thú vị về một loài chim cụ thể. Ví dụ, tạo một script để trực quan hóa tất cả các dữ liệu thú vị mà bạn có thể tìm thấy về loài Ngỗng Tuyết. Sử dụng ba loại biểu đồ được đề cập ở trên để kể một câu chuyện trong notebook của bạn. + +## Tiêu Chí Đánh Giá + +Xuất Sắc | Đạt Yêu Cầu | Cần Cải Thiện +--- | --- | --- | +Script được trình bày với chú thích tốt, câu chuyện rõ ràng và biểu đồ hấp dẫn | Script thiếu một trong các yếu tố này | Script thiếu hai trong các yếu tố này + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tham khảo chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/3-Data-Visualization/R/10-visualization-distributions/README.md b/translations/vi/3-Data-Visualization/R/10-visualization-distributions/README.md new file mode 100644 index 00000000..935f6204 --- /dev/null +++ b/translations/vi/3-Data-Visualization/R/10-visualization-distributions/README.md @@ -0,0 +1,185 @@ + +# Trực quan hóa phân bố + +|![ Sketchnote của [(@sketchthedocs)](https://sketchthedocs.dev) ](https://github.com/microsoft/Data-Science-For-Beginners/blob/main/sketchnotes/10-Visualizing-Distributions.png)| +|:---:| +| Trực quan hóa phân bố - _Sketchnote của [@nitya](https://twitter.com/nitya)_ | + +Trong bài học trước, bạn đã tìm hiểu một số thông tin thú vị về bộ dữ liệu về các loài chim ở Minnesota. Bạn đã phát hiện một số dữ liệu sai lệch bằng cách trực quan hóa các giá trị ngoại lai và xem xét sự khác biệt giữa các loại chim dựa trên chiều dài tối đa của chúng. + +## [Câu hỏi trước bài giảng](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/18) +## Khám phá bộ dữ liệu về các loài chim + +Một cách khác để tìm hiểu dữ liệu là xem xét phân bố của nó, hoặc cách dữ liệu được tổ chức dọc theo một trục. Ví dụ, có thể bạn muốn tìm hiểu về phân bố chung, đối với bộ dữ liệu này, của sải cánh tối đa hoặc khối lượng cơ thể tối đa của các loài chim ở Minnesota. + +Hãy khám phá một số thông tin về phân bố dữ liệu trong bộ dữ liệu này. Trong giao diện R của bạn, nhập `ggplot2` và cơ sở dữ liệu. Loại bỏ các giá trị ngoại lai khỏi cơ sở dữ liệu giống như trong chủ đề trước. + +```r +library(ggplot2) + +birds <- read.csv("../../data/birds.csv",fileEncoding="UTF-8-BOM") + +birds_filtered <- subset(birds, MaxWingspan < 500) +head(birds_filtered) +``` +| | Tên | Tên khoa học | Loại | Bộ | Họ | Chi | Tình trạng bảo tồn | Chiều dài tối thiểu | Chiều dài tối đa | Khối lượng cơ thể tối thiểu | Khối lượng cơ thể tối đa | Sải cánh tối thiểu | Sải cánh tối đa | +| ---: | :--------------------------- | :--------------------- | :-------------------- | :----------- | :------- | :---------- | :----------------- | ------------------: | ----------------: | --------------------------: | --------------------------: | ------------------: | ------------------: | +| 0 | Vịt huýt sáo bụng đen | Dendrocygna autumnalis | Vịt/ngỗng/Chim nước | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 | +| 1 | Vịt huýt sáo nâu | Dendrocygna bicolor | Vịt/ngỗng/Chim nước | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 | +| 2 | Ngỗng tuyết | Anser caerulescens | Vịt/ngỗng/Chim nước | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 | +| 3 | Ngỗng Ross | Anser rossii | Vịt/ngỗng/Chim nước | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 | +| 4 | Ngỗng trắng lớn | Anser albifrons | Vịt/ngỗng/Chim nước | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 | + +Nhìn chung, bạn có thể nhanh chóng xem cách dữ liệu được phân bố bằng cách sử dụng biểu đồ phân tán như chúng ta đã làm trong bài học trước: + +```r +ggplot(data=birds_filtered, aes(x=Order, y=MaxLength,group=1)) + + geom_point() + + ggtitle("Max Length per order") + coord_flip() +``` +![chiều dài tối đa theo bộ](../../../../../translated_images/max-length-per-order.e5b283d952c78c12b091307c5d3cf67132dad6fefe80a073353b9dc5c2bd3eb8.vi.png) + +Điều này cung cấp một cái nhìn tổng quan về phân bố chung của chiều dài cơ thể theo từng bộ chim, nhưng đây không phải là cách tối ưu để hiển thị phân bố thực sự. Nhiệm vụ này thường được thực hiện bằng cách tạo biểu đồ Histogram. + +## Làm việc với biểu đồ Histogram + +`ggplot2` cung cấp các cách rất tốt để trực quan hóa phân bố dữ liệu bằng biểu đồ Histogram. Loại biểu đồ này giống như biểu đồ cột, nơi phân bố có thể được nhìn thấy qua sự tăng giảm của các cột. Để tạo một biểu đồ Histogram, bạn cần dữ liệu dạng số. Để tạo biểu đồ Histogram, bạn có thể vẽ biểu đồ bằng cách định nghĩa loại là 'hist' cho Histogram. Biểu đồ này hiển thị phân bố của MaxBodyMass cho toàn bộ phạm vi dữ liệu số của bộ dữ liệu. Bằng cách chia mảng dữ liệu thành các nhóm nhỏ hơn, nó có thể hiển thị phân bố của các giá trị dữ liệu: + +```r +ggplot(data = birds_filtered, aes(x = MaxBodyMass)) + + geom_histogram(bins=10)+ylab('Frequency') +``` +![phân bố trên toàn bộ bộ dữ liệu](../../../../../translated_images/distribution-over-the-entire-dataset.d22afd3fa96be854e4c82213fedec9e3703cba753d07fad4606aadf58cf7e78e.vi.png) + +Như bạn có thể thấy, hầu hết hơn 400 loài chim trong bộ dữ liệu này nằm trong phạm vi dưới 2000 cho khối lượng cơ thể tối đa của chúng. Tìm hiểu thêm về dữ liệu bằng cách thay đổi tham số `bins` thành một số lớn hơn, chẳng hạn như 30: + +```r +ggplot(data = birds_filtered, aes(x = MaxBodyMass)) + geom_histogram(bins=30)+ylab('Frequency') +``` + +![phân bố-30bins](../../../../../translated_images/distribution-30bins.6a3921ea7a421bf71f06bf5231009e43d1146f1b8da8dc254e99b5779a4983e5.vi.png) + +Biểu đồ này hiển thị phân bố một cách chi tiết hơn. Một biểu đồ ít lệch về bên trái hơn có thể được tạo bằng cách đảm bảo rằng bạn chỉ chọn dữ liệu trong một phạm vi nhất định: + +Lọc dữ liệu của bạn để chỉ lấy những loài chim có khối lượng cơ thể dưới 60 và hiển thị 30 `bins`: + +```r +birds_filtered_1 <- subset(birds_filtered, MaxBodyMass > 1 & MaxBodyMass < 60) +ggplot(data = birds_filtered_1, aes(x = MaxBodyMass)) + + geom_histogram(bins=30)+ylab('Frequency') +``` + +![biểu đồ histogram đã lọc](../../../../../translated_images/filtered-histogram.6bf5d2bfd82533220e1bd4bc4f7d14308f43746ed66721d9ec8f460732be6674.vi.png) + +✅ Thử một số bộ lọc và điểm dữ liệu khác. Để xem toàn bộ phân bố của dữ liệu, loại bỏ bộ lọc `['MaxBodyMass']` để hiển thị các phân bố có nhãn. + +Biểu đồ Histogram cung cấp một số cải tiến về màu sắc và nhãn mà bạn có thể thử: + +Tạo biểu đồ Histogram 2D để so sánh mối quan hệ giữa hai phân bố. Hãy so sánh `MaxBodyMass` với `MaxLength`. `ggplot2` cung cấp một cách tích hợp để hiển thị sự hội tụ bằng cách sử dụng màu sắc sáng hơn: + +```r +ggplot(data=birds_filtered_1, aes(x=MaxBodyMass, y=MaxLength) ) + + geom_bin2d() +scale_fill_continuous(type = "viridis") +``` +Có vẻ như có một mối tương quan dự kiến giữa hai yếu tố này dọc theo một trục dự kiến, với một điểm hội tụ đặc biệt mạnh: + +![biểu đồ 2d](../../../../../translated_images/2d-plot.c504786f439bd7ebceebf2465c70ca3b124103e06c7ff7214bf24e26f7aec21e.vi.png) + +Biểu đồ Histogram hoạt động tốt theo mặc định cho dữ liệu dạng số. Vậy nếu bạn cần xem phân bố theo dữ liệu dạng văn bản thì sao? + +## Khám phá bộ dữ liệu để tìm phân bố theo dữ liệu dạng văn bản + +Bộ dữ liệu này cũng bao gồm thông tin tốt về loại chim và chi, loài, họ của chúng cũng như tình trạng bảo tồn. Hãy tìm hiểu thông tin bảo tồn này. Phân bố của các loài chim theo tình trạng bảo tồn của chúng là gì? + +> ✅ Trong bộ dữ liệu, một số từ viết tắt được sử dụng để mô tả tình trạng bảo tồn. Những từ viết tắt này đến từ [Danh mục Đỏ của IUCN](https://www.iucnredlist.org/), một tổ chức chuyên phân loại tình trạng của các loài. +> +> - CR: Cực kỳ nguy cấp +> - EN: Nguy cấp +> - EX: Tuyệt chủng +> - LC: Ít quan tâm +> - NT: Gần bị đe dọa +> - VU: Dễ bị tổn thương + +Đây là các giá trị dạng văn bản, vì vậy bạn sẽ cần thực hiện một chuyển đổi để tạo biểu đồ Histogram. Sử dụng dataframe filteredBirds, hiển thị tình trạng bảo tồn của nó cùng với sải cánh tối thiểu. Bạn thấy gì? + +```r +birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'EX'] <- 'x1' +birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'CR'] <- 'x2' +birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'EN'] <- 'x3' +birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'NT'] <- 'x4' +birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'VU'] <- 'x5' +birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'LC'] <- 'x6' + +ggplot(data=birds_filtered_1, aes(x = MinWingspan, fill = ConservationStatus)) + + geom_histogram(position = "identity", alpha = 0.4, bins = 20) + + scale_fill_manual(name="Conservation Status",values=c("red","green","blue","pink"),labels=c("Endangered","Near Threathened","Vulnerable","Least Concern")) +``` + +![sải cánh và tình trạng bảo tồn](../../../../../translated_images/wingspan-conservation-collation.4024e9aa6910866aa82f0c6cb6a6b4b925bd10079e6b0ef8f92eefa5a6792f76.vi.png) + +Dường như không có mối tương quan tốt giữa sải cánh tối thiểu và tình trạng bảo tồn. Thử nghiệm các yếu tố khác của bộ dữ liệu bằng phương pháp này. Bạn có thể thử các bộ lọc khác nhau. Bạn có tìm thấy mối tương quan nào không? + +## Biểu đồ mật độ + +Bạn có thể đã nhận thấy rằng các biểu đồ Histogram mà chúng ta đã xem xét cho đến nay có dạng 'bậc thang' và không trôi chảy mượt mà theo một vòng cung. Để hiển thị biểu đồ mật độ mượt mà hơn, bạn có thể thử biểu đồ mật độ. + +Hãy làm việc với biểu đồ mật độ ngay bây giờ! + +```r +ggplot(data = birds_filtered_1, aes(x = MinWingspan)) + + geom_density() +``` +![biểu đồ mật độ](../../../../../translated_images/density-plot.675ccf865b76c690487fb7f69420a8444a3515f03bad5482886232d4330f5c85.vi.png) + +Bạn có thể thấy cách biểu đồ phản ánh biểu đồ trước đó về dữ liệu sải cánh tối thiểu; nó chỉ mượt mà hơn một chút. Nếu bạn muốn xem lại đường gấp khúc của MaxBodyMass trong biểu đồ thứ hai mà bạn đã tạo, bạn có thể làm mượt nó rất tốt bằng cách tạo lại nó bằng phương pháp này: + +```r +ggplot(data = birds_filtered_1, aes(x = MaxBodyMass)) + + geom_density() +``` +![mật độ khối lượng cơ thể](../../../../../translated_images/bodymass-smooth.d31ce526d82b0a1f19a073815dea28ecfbe58145ec5337e4ef7e8cdac81120b3.vi.png) + +Nếu bạn muốn một đường mượt mà nhưng không quá mượt, hãy chỉnh sửa tham số `adjust`: + +```r +ggplot(data = birds_filtered_1, aes(x = MaxBodyMass)) + + geom_density(adjust = 1/5) +``` +![khối lượng cơ thể ít mượt hơn](../../../../../translated_images/less-smooth-bodymass.10f4db8b683cc17d17b2d33f22405413142004467a1493d416608dafecfdee23.vi.png) + +✅ Đọc về các tham số có sẵn cho loại biểu đồ này và thử nghiệm! + +Loại biểu đồ này cung cấp các hình ảnh trực quan giải thích rất đẹp. Với một vài dòng mã, ví dụ, bạn có thể hiển thị mật độ khối lượng cơ thể tối đa theo từng bộ chim: + +```r +ggplot(data=birds_filtered_1,aes(x = MaxBodyMass, fill = Order)) + + geom_density(alpha=0.5) +``` +![khối lượng cơ thể theo bộ](../../../../../translated_images/bodymass-per-order.9d2b065dd931b928c839d8cdbee63067ab1ae52218a1b90717f4bc744354f485.vi.png) + +## 🚀 Thử thách + +Biểu đồ Histogram là một loại biểu đồ tinh vi hơn so với biểu đồ phân tán, biểu đồ cột, hoặc biểu đồ đường cơ bản. Hãy tìm kiếm trên internet để tìm các ví dụ tốt về việc sử dụng biểu đồ Histogram. Chúng được sử dụng như thế nào, chúng thể hiện điều gì, và trong các lĩnh vực hoặc lĩnh vực nghiên cứu nào chúng thường được sử dụng? + +## [Câu hỏi sau bài giảng](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/19) + +## Ôn tập & Tự học + +Trong bài học này, bạn đã sử dụng `ggplot2` và bắt đầu làm việc để hiển thị các biểu đồ tinh vi hơn. Hãy nghiên cứu về `geom_density_2d()` một "đường cong mật độ xác suất liên tục trong một hoặc nhiều chiều". Đọc qua [tài liệu](https://ggplot2.tidyverse.org/reference/geom_density_2d.html) để hiểu cách nó hoạt động. + +## Bài tập + +[Áp dụng kỹ năng của bạn](assignment.md) + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tham khảo chính thức. Đối với các thông tin quan trọng, chúng tôi khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/3-Data-Visualization/R/10-visualization-distributions/assignment.md b/translations/vi/3-Data-Visualization/R/10-visualization-distributions/assignment.md new file mode 100644 index 00000000..c9db8454 --- /dev/null +++ b/translations/vi/3-Data-Visualization/R/10-visualization-distributions/assignment.md @@ -0,0 +1,25 @@ + +# Áp dụng kỹ năng của bạn + +## Hướng dẫn + +Cho đến nay, bạn đã làm việc với bộ dữ liệu về các loài chim ở Minnesota để khám phá thông tin về số lượng chim và mật độ dân số. Hãy thực hành áp dụng các kỹ thuật này bằng cách thử một bộ dữ liệu khác, có thể được lấy từ [Kaggle](https://www.kaggle.com/). Xây dựng một script R để kể một câu chuyện về bộ dữ liệu này, và đảm bảo sử dụng biểu đồ tần suất khi thảo luận về nó. + +## Tiêu chí đánh giá + +Xuất sắc | Đạt yêu cầu | Cần cải thiện +--- | --- | --- | +Một script được trình bày với các chú thích về bộ dữ liệu này, bao gồm nguồn gốc của nó, và sử dụng ít nhất 5 biểu đồ tần suất để khám phá các thông tin về dữ liệu. | Một script được trình bày với chú thích không đầy đủ hoặc có lỗi. | Một script được trình bày mà không có chú thích và có lỗi. + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/3-Data-Visualization/R/11-visualization-proportions/README.md b/translations/vi/3-Data-Visualization/R/11-visualization-proportions/README.md new file mode 100644 index 00000000..723d2354 --- /dev/null +++ b/translations/vi/3-Data-Visualization/R/11-visualization-proportions/README.md @@ -0,0 +1,200 @@ + +# Trực quan hóa tỷ lệ + +|![ Sketchnote của [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/11-Visualizing-Proportions.png)| +|:---:| +|Trực quan hóa tỷ lệ - _Sketchnote của [@nitya](https://twitter.com/nitya)_ | + +Trong bài học này, bạn sẽ sử dụng một bộ dữ liệu tập trung vào thiên nhiên để trực quan hóa tỷ lệ, chẳng hạn như số lượng các loại nấm khác nhau trong một bộ dữ liệu về nấm. Hãy cùng khám phá những loại nấm thú vị này bằng cách sử dụng một bộ dữ liệu từ Audubon, liệt kê chi tiết về 23 loài nấm có mang thuộc họ Agaricus và Lepiota. Bạn sẽ thử nghiệm với các biểu đồ hấp dẫn như: + +- Biểu đồ tròn 🥧 +- Biểu đồ donut 🍩 +- Biểu đồ waffle 🧇 + +> 💡 Một dự án rất thú vị có tên [Charticulator](https://charticulator.com) của Microsoft Research cung cấp giao diện kéo thả miễn phí để tạo trực quan hóa dữ liệu. Trong một trong các hướng dẫn của họ, họ cũng sử dụng bộ dữ liệu về nấm này! Vì vậy, bạn có thể khám phá dữ liệu và học thư viện cùng lúc: [Hướng dẫn Charticulator](https://charticulator.com/tutorials/tutorial4.html). + +## [Câu hỏi trước bài giảng](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/20) + +## Tìm hiểu về nấm 🍄 + +Nấm rất thú vị. Hãy nhập một bộ dữ liệu để nghiên cứu chúng: + +```r +mushrooms = read.csv('../../data/mushrooms.csv') +head(mushrooms) +``` +Một bảng được in ra với một số dữ liệu tuyệt vời để phân tích: + +| class | cap-shape | cap-surface | cap-color | bruises | odor | gill-attachment | gill-spacing | gill-size | gill-color | stalk-shape | stalk-root | stalk-surface-above-ring | stalk-surface-below-ring | stalk-color-above-ring | stalk-color-below-ring | veil-type | veil-color | ring-number | ring-type | spore-print-color | population | habitat | +| --------- | --------- | ----------- | --------- | ------- | ------- | --------------- | ------------ | --------- | ---------- | ----------- | ---------- | ------------------------ | ------------------------ | ---------------------- | ---------------------- | --------- | ---------- | ----------- | --------- | ----------------- | ---------- | ------- | +| Độc | Lồi | Mịn | Nâu | Có vết | Hăng | Tự do | Sát nhau | Hẹp | Đen | Phình ra | Bằng nhau | Mịn | Mịn | Trắng | Trắng | Một phần | Trắng | Một | Treo | Đen | Rải rác | Đô thị | +| Ăn được | Lồi | Mịn | Vàng | Có vết | Hạnh nhân| Tự do | Sát nhau | Rộng | Đen | Phình ra | Câu lạc bộ| Mịn | Mịn | Trắng | Trắng | Một phần | Trắng | Một | Treo | Nâu | Nhiều | Cỏ | +| Ăn được | Chuông | Mịn | Trắng | Có vết | Hồi | Tự do | Sát nhau | Rộng | Nâu | Phình ra | Câu lạc bộ| Mịn | Mịn | Trắng | Trắng | Một phần | Trắng | Một | Treo | Nâu | Nhiều | Đồng cỏ | +| Độc | Lồi | Có vảy | Trắng | Có vết | Hăng | Tự do | Sát nhau | Hẹp | Nâu | Phình ra | Bằng nhau | Mịn | Mịn | Trắng | Trắng | Một phần | Trắng | Một | Treo | Đen | Rải rác | Đô thị | +| Ăn được | Lồi | Mịn | Xanh | Không có vết | Không có | Tự do | Đông đúc | Rộng | Đen | Thon lại | Bằng nhau | Mịn | Mịn | Trắng | Trắng | Một phần | Trắng | Một | Thoáng qua| Nâu | Dồi dào | Cỏ | +| Ăn được | Lồi | Có vảy | Vàng | Có vết | Hạnh nhân| Tự do | Sát nhau | Rộng | Nâu | Phình ra | Câu lạc bộ| Mịn | Mịn | Trắng | Trắng | Một phần | Trắng | Một | Treo | Đen | Nhiều | Cỏ | + +Ngay lập tức, bạn nhận thấy rằng tất cả dữ liệu đều là dạng văn bản. Bạn sẽ phải chuyển đổi dữ liệu này để có thể sử dụng nó trong biểu đồ. Thực tế, hầu hết dữ liệu được biểu diễn dưới dạng đối tượng: + +```r +names(mushrooms) +``` + +Kết quả là: + +```output +[1] "class" "cap.shape" + [3] "cap.surface" "cap.color" + [5] "bruises" "odor" + [7] "gill.attachment" "gill.spacing" + [9] "gill.size" "gill.color" +[11] "stalk.shape" "stalk.root" +[13] "stalk.surface.above.ring" "stalk.surface.below.ring" +[15] "stalk.color.above.ring" "stalk.color.below.ring" +[17] "veil.type" "veil.color" +[19] "ring.number" "ring.type" +[21] "spore.print.color" "population" +[23] "habitat" +``` +Hãy lấy dữ liệu này và chuyển đổi cột 'class' thành một danh mục: + +```r +library(dplyr) +grouped=mushrooms %>% + group_by(class) %>% + summarise(count=n()) +``` + +Bây giờ, nếu bạn in dữ liệu về nấm, bạn có thể thấy rằng nó đã được nhóm thành các danh mục theo lớp độc/ăn được: + +```r +View(grouped) +``` + +| class | count | +| --------- | --------- | +| Ăn được | 4208 | +| Độc | 3916 | + +Nếu bạn làm theo thứ tự được trình bày trong bảng này để tạo nhãn danh mục lớp, bạn có thể tạo một biểu đồ tròn. + +## Biểu đồ tròn! + +```r +pie(grouped$count,grouped$class, main="Edible?") +``` +Voila, một biểu đồ tròn hiển thị tỷ lệ của dữ liệu này theo hai lớp nấm. Điều rất quan trọng là phải sắp xếp đúng thứ tự của các nhãn, đặc biệt ở đây, vì vậy hãy chắc chắn kiểm tra thứ tự mà mảng nhãn được xây dựng! + +![biểu đồ tròn](../../../../../translated_images/pie1-wb.685df063673751f4b0b82127f7a52c7f9a920192f22ae61ad28412ba9ace97bf.vi.png) + +## Biểu đồ donut! + +Một biểu đồ tròn thú vị hơn về mặt hình ảnh là biểu đồ donut, là một biểu đồ tròn với một lỗ ở giữa. Hãy xem dữ liệu của chúng ta bằng phương pháp này. + +Hãy xem các môi trường sống khác nhau nơi nấm phát triển: + +```r +library(dplyr) +habitat=mushrooms %>% + group_by(habitat) %>% + summarise(count=n()) +View(habitat) +``` +Kết quả là: + +| habitat | count | +| --------- | --------- | +| Cỏ | 2148 | +| Lá | 832 | +| Đồng cỏ | 292 | +| Đường mòn | 1144 | +| Đô thị | 368 | +| Rác thải | 192 | +| Gỗ | 3148 | + +Ở đây, bạn đang nhóm dữ liệu của mình theo môi trường sống. Có 7 môi trường sống được liệt kê, vì vậy hãy sử dụng chúng làm nhãn cho biểu đồ donut của bạn: + +```r +library(ggplot2) +library(webr) +PieDonut(habitat, aes(habitat, count=count)) +``` + +![biểu đồ donut](../../../../../translated_images/donut-wb.34e6fb275da9d834c2205145e39a3de9b6878191dcdba6f7a9e85f4b520449bc.vi.png) + +Đoạn mã này sử dụng hai thư viện - ggplot2 và webr. Sử dụng hàm PieDonut của thư viện webr, chúng ta có thể dễ dàng tạo biểu đồ donut! + +Biểu đồ donut trong R cũng có thể được tạo chỉ bằng thư viện ggplot2. Bạn có thể tìm hiểu thêm về nó [tại đây](https://www.r-graph-gallery.com/128-ring-or-donut-plot.html) và thử nghiệm. + +Bây giờ bạn đã biết cách nhóm dữ liệu của mình và hiển thị nó dưới dạng biểu đồ tròn hoặc donut, bạn có thể khám phá các loại biểu đồ khác. Hãy thử biểu đồ waffle, một cách khác để khám phá số lượng. + +## Biểu đồ waffle! + +Biểu đồ kiểu 'waffle' là một cách khác để trực quan hóa số lượng dưới dạng mảng 2D các ô vuông. Hãy thử trực quan hóa số lượng màu sắc của mũ nấm trong bộ dữ liệu này. Để làm điều này, bạn cần cài đặt một thư viện hỗ trợ có tên [waffle](https://cran.r-project.org/web/packages/waffle/waffle.pdf) và sử dụng nó để tạo trực quan hóa của bạn: + +```r +install.packages("waffle", repos = "https://cinc.rud.is") +``` + +Chọn một phần dữ liệu của bạn để nhóm: + +```r +library(dplyr) +cap_color=mushrooms %>% + group_by(cap.color) %>% + summarise(count=n()) +View(cap_color) +``` + +Tạo biểu đồ waffle bằng cách tạo nhãn và sau đó nhóm dữ liệu của bạn: + +```r +library(waffle) +names(cap_color$count) = paste0(cap_color$cap.color) +waffle((cap_color$count/10), rows = 7, title = "Waffle Chart")+scale_fill_manual(values=c("brown", "#F0DC82", "#D2691E", "green", + "pink", "purple", "red", "grey", + "yellow","white")) +``` + +Sử dụng biểu đồ waffle, bạn có thể dễ dàng thấy tỷ lệ màu sắc của mũ nấm trong bộ dữ liệu này. Thật thú vị, có rất nhiều nấm có mũ màu xanh lá cây! + +![biểu đồ waffle](../../../../../translated_images/waffle.aaa75c5337735a6ef32ace0ffb6506ef49e5aefe870ffd72b1bb080f4843c217.vi.png) + +Trong bài học này, bạn đã học ba cách để trực quan hóa tỷ lệ. Đầu tiên, bạn cần nhóm dữ liệu của mình thành các danh mục và sau đó quyết định cách tốt nhất để hiển thị dữ liệu - biểu đồ tròn, donut, hoặc waffle. Tất cả đều hấp dẫn và mang lại cho người dùng một cái nhìn nhanh về bộ dữ liệu. + +## 🚀 Thử thách + +Hãy thử tạo lại các biểu đồ hấp dẫn này trong [Charticulator](https://charticulator.com). + +## [Câu hỏi sau bài giảng](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/21) + +## Ôn tập & Tự học + +Đôi khi không rõ ràng khi nào nên sử dụng biểu đồ tròn, donut, hoặc waffle. Dưới đây là một số bài viết để đọc về chủ đề này: + +https://www.beautiful.ai/blog/battle-of-the-charts-pie-chart-vs-donut-chart + +https://medium.com/@hypsypops/pie-chart-vs-donut-chart-showdown-in-the-ring-5d24fd86a9ce + +https://www.mit.edu/~mbarker/formula1/f1help/11-ch-c6.htm + +https://medium.datadriveninvestor.com/data-visualization-done-the-right-way-with-tableau-waffle-chart-fdf2a19be402 + +Hãy nghiên cứu thêm để tìm hiểu thêm thông tin về quyết định khó khăn này. + +## Bài tập + +[Thử nghiệm trong Excel](assignment.md) + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm về bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/3-Data-Visualization/R/12-visualization-relationships/README.md b/translations/vi/3-Data-Visualization/R/12-visualization-relationships/README.md new file mode 100644 index 00000000..7c3073e9 --- /dev/null +++ b/translations/vi/3-Data-Visualization/R/12-visualization-relationships/README.md @@ -0,0 +1,177 @@ + +# Hình ảnh hóa Mối quan hệ: Tất cả về Mật ong 🍯 + +|![ Sketchnote của [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/12-Visualizing-Relationships.png)| +|:---:| +|Hình ảnh hóa Mối quan hệ - _Sketchnote của [@nitya](https://twitter.com/nitya)_ | + +Tiếp tục với trọng tâm nghiên cứu về thiên nhiên, hãy khám phá các cách hình ảnh hóa thú vị để thể hiện mối quan hệ giữa các loại mật ong khác nhau, dựa trên một tập dữ liệu từ [Bộ Nông nghiệp Hoa Kỳ](https://www.nass.usda.gov/About_NASS/index.php). + +Tập dữ liệu này gồm khoảng 600 mục, hiển thị sản lượng mật ong ở nhiều bang của Hoa Kỳ. Ví dụ, bạn có thể xem số lượng đàn ong, sản lượng mỗi đàn, tổng sản lượng, lượng tồn kho, giá mỗi pound, và giá trị mật ong được sản xuất ở một bang từ năm 1998-2012, với mỗi hàng đại diện cho một năm của từng bang. + +Sẽ rất thú vị khi hình ảnh hóa mối quan hệ giữa sản lượng của một bang trong một năm nhất định và, ví dụ, giá mật ong ở bang đó. Ngoài ra, bạn cũng có thể hình ảnh hóa mối quan hệ giữa sản lượng mật ong mỗi đàn của các bang. Khoảng thời gian này bao gồm sự kiện 'CCD' hay 'Hội chứng Sụp đổ Đàn ong' lần đầu tiên được ghi nhận vào năm 2006 (http://npic.orst.edu/envir/ccd.html), vì vậy đây là một tập dữ liệu đáng để nghiên cứu. 🐝 + +## [Câu hỏi trước bài học](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/22) + +Trong bài học này, bạn có thể sử dụng ggplot2, thư viện mà bạn đã sử dụng trước đây, để hình ảnh hóa mối quan hệ giữa các biến. Đặc biệt thú vị là việc sử dụng hàm `geom_point` và `qplot` của ggplot2, cho phép tạo biểu đồ phân tán và biểu đồ đường để nhanh chóng hình ảnh hóa '[mối quan hệ thống kê](https://ggplot2.tidyverse.org/)', giúp nhà khoa học dữ liệu hiểu rõ hơn về cách các biến liên quan đến nhau. + +## Biểu đồ phân tán + +Sử dụng biểu đồ phân tán để hiển thị cách giá mật ong thay đổi theo năm, từng bang. ggplot2, với `ggplot` và `geom_point`, thuận tiện nhóm dữ liệu theo bang và hiển thị các điểm dữ liệu cho cả dữ liệu phân loại và dữ liệu số. + +Hãy bắt đầu bằng cách nhập dữ liệu và Seaborn: + +```r +honey=read.csv('../../data/honey.csv') +head(honey) +``` +Bạn sẽ nhận thấy rằng dữ liệu mật ong có một số cột thú vị, bao gồm năm và giá mỗi pound. Hãy khám phá dữ liệu này, được nhóm theo bang của Hoa Kỳ: + +| state | numcol | yieldpercol | totalprod | stocks | priceperlb | prodvalue | year | +| ----- | ------ | ----------- | --------- | -------- | ---------- | --------- | ---- | +| AL | 16000 | 71 | 1136000 | 159000 | 0.72 | 818000 | 1998 | +| AZ | 55000 | 60 | 3300000 | 1485000 | 0.64 | 2112000 | 1998 | +| AR | 53000 | 65 | 3445000 | 1688000 | 0.59 | 2033000 | 1998 | +| CA | 450000 | 83 | 37350000 | 12326000 | 0.62 | 23157000 | 1998 | +| CO | 27000 | 72 | 1944000 | 1594000 | 0.7 | 1361000 | 1998 | +| FL | 230000 | 98 |22540000 | 4508000 | 0.64 | 14426000 | 1998 | + +Tạo một biểu đồ phân tán cơ bản để hiển thị mối quan hệ giữa giá mỗi pound mật ong và bang xuất xứ của nó. Làm cho trục `y` đủ cao để hiển thị tất cả các bang: + +```r +library(ggplot2) +ggplot(honey, aes(x = priceperlb, y = state)) + + geom_point(colour = "blue") +``` +![scatterplot 1](../../../../../translated_images/scatter1.86b8900674d88b26dd3353a83fe604e9ab3722c4680cc40ee9beb452ff02cdea.vi.png) + +Bây giờ, hiển thị cùng dữ liệu với bảng màu mật ong để thể hiện cách giá thay đổi theo năm. Bạn có thể làm điều này bằng cách thêm tham số 'scale_color_gradientn' để hiển thị sự thay đổi theo năm: + +> ✅ Tìm hiểu thêm về [scale_color_gradientn](https://www.rdocumentation.org/packages/ggplot2/versions/0.9.1/topics/scale_colour_gradientn) - thử một bảng màu cầu vồng đẹp mắt! + +```r +ggplot(honey, aes(x = priceperlb, y = state, color=year)) + + geom_point()+scale_color_gradientn(colours = colorspace::heat_hcl(7)) +``` +![scatterplot 2](../../../../../translated_images/scatter2.4d1cbc693bad20e2b563888747eb6bdf65b73ce449d903f7cd4068a78502dcff.vi.png) + +Với sự thay đổi bảng màu này, bạn có thể thấy rõ ràng rằng có một sự tiến triển mạnh mẽ theo năm về giá mật ong mỗi pound. Thực tế, nếu bạn xem xét một tập mẫu trong dữ liệu để xác minh (chọn một bang cụ thể, ví dụ Arizona), bạn có thể thấy một xu hướng tăng giá theo năm, với một vài ngoại lệ: + +| state | numcol | yieldpercol | totalprod | stocks | priceperlb | prodvalue | year | +| ----- | ------ | ----------- | --------- | ------- | ---------- | --------- | ---- | +| AZ | 55000 | 60 | 3300000 | 1485000 | 0.64 | 2112000 | 1998 | +| AZ | 52000 | 62 | 3224000 | 1548000 | 0.62 | 1999000 | 1999 | +| AZ | 40000 | 59 | 2360000 | 1322000 | 0.73 | 1723000 | 2000 | +| AZ | 43000 | 59 | 2537000 | 1142000 | 0.72 | 1827000 | 2001 | +| AZ | 38000 | 63 | 2394000 | 1197000 | 1.08 | 2586000 | 2002 | +| AZ | 35000 | 72 | 2520000 | 983000 | 1.34 | 3377000 | 2003 | +| AZ | 32000 | 55 | 1760000 | 774000 | 1.11 | 1954000 | 2004 | +| AZ | 36000 | 50 | 1800000 | 720000 | 1.04 | 1872000 | 2005 | +| AZ | 30000 | 65 | 1950000 | 839000 | 0.91 | 1775000 | 2006 | +| AZ | 30000 | 64 | 1920000 | 902000 | 1.26 | 2419000 | 2007 | +| AZ | 25000 | 64 | 1600000 | 336000 | 1.26 | 2016000 | 2008 | +| AZ | 20000 | 52 | 1040000 | 562000 | 1.45 | 1508000 | 2009 | +| AZ | 24000 | 77 | 1848000 | 665000 | 1.52 | 2809000 | 2010 | +| AZ | 23000 | 53 | 1219000 | 427000 | 1.55 | 1889000 | 2011 | +| AZ | 22000 | 46 | 1012000 | 253000 | 1.79 | 1811000 | 2012 | + +Một cách khác để hình ảnh hóa sự tiến triển này là sử dụng kích thước thay vì màu sắc. Đối với người dùng bị mù màu, đây có thể là một lựa chọn tốt hơn. Chỉnh sửa hình ảnh hóa của bạn để hiển thị sự tăng giá bằng cách tăng chu vi của các điểm: + +```r +ggplot(honey, aes(x = priceperlb, y = state)) + + geom_point(aes(size = year),colour = "blue") + + scale_size_continuous(range = c(0.25, 3)) +``` +Bạn có thể thấy kích thước của các điểm tăng dần. + +![scatterplot 3](../../../../../translated_images/scatter3.722d21e6f20b3ea2e18339bb9b10d75906126715eb7d5fdc88fe74dcb6d7066a.vi.png) + +Đây có phải là một trường hợp đơn giản của cung và cầu? Do các yếu tố như biến đổi khí hậu và sự sụp đổ của đàn ong, liệu có ít mật ong hơn để mua theo năm, dẫn đến giá tăng? + +Để khám phá mối tương quan giữa một số biến trong tập dữ liệu này, hãy cùng tìm hiểu một số biểu đồ đường. + +## Biểu đồ đường + +Câu hỏi: Có sự tăng rõ ràng về giá mật ong mỗi pound theo năm không? Bạn có thể dễ dàng khám phá điều này bằng cách tạo một biểu đồ đường đơn: + +```r +qplot(honey$year,honey$priceperlb, geom='smooth', span =0.5, xlab = "year",ylab = "priceperlb") +``` +Trả lời: Có, với một số ngoại lệ vào khoảng năm 2003: + +![line chart 1](../../../../../translated_images/line1.299b576fbb2a59e60a59e7130030f59836891f90302be084e4e8d14da0562e2a.vi.png) + +Câu hỏi: Vậy vào năm 2003, liệu chúng ta có thể thấy sự tăng đột biến trong nguồn cung mật ong không? Nếu bạn xem xét tổng sản lượng theo năm thì sao? + +```python +qplot(honey$year,honey$totalprod, geom='smooth', span =0.5, xlab = "year",ylab = "totalprod") +``` + +![line chart 2](../../../../../translated_images/line2.3b18fcda7176ceba5b6689eaaabb817d49c965e986f11cac1ae3f424030c34d8.vi.png) + +Trả lời: Không hẳn. Nếu bạn xem xét tổng sản lượng, thực tế nó dường như đã tăng trong năm đó, mặc dù nhìn chung lượng mật ong được sản xuất đang giảm trong những năm này. + +Câu hỏi: Trong trường hợp đó, điều gì có thể đã gây ra sự tăng giá mật ong vào khoảng năm 2003? + +Để khám phá điều này, bạn có thể sử dụng lưới facet. + +## Lưới facet + +Lưới facet lấy một khía cạnh của tập dữ liệu của bạn (trong trường hợp này, bạn có thể chọn 'năm' để tránh tạo quá nhiều facet). Seaborn sau đó có thể tạo một biểu đồ cho mỗi facet của các tọa độ x và y bạn chọn để so sánh dễ dàng hơn. Liệu năm 2003 có nổi bật trong loại so sánh này? + +Tạo một lưới facet bằng cách sử dụng `facet_wrap` như được khuyến nghị bởi [tài liệu của ggplot2](https://ggplot2.tidyverse.org/reference/facet_wrap.html). + +```r +ggplot(honey, aes(x=yieldpercol, y = numcol,group = 1)) + + geom_line() + facet_wrap(vars(year)) +``` +Trong hình ảnh hóa này, bạn có thể so sánh sản lượng mỗi đàn và số lượng đàn ong theo năm, cạnh nhau với wrap được đặt là 3 cho các cột: + +![facet grid](../../../../../translated_images/facet.491ad90d61c2a7cc69b50c929f80786c749e38217ccedbf1e22ed8909b65987c.vi.png) + +Đối với tập dữ liệu này, không có điều gì đặc biệt nổi bật liên quan đến số lượng đàn ong và sản lượng của chúng theo năm và theo bang. Liệu có cách khác để tìm mối tương quan giữa hai biến này? + +## Biểu đồ đường kép + +Thử một biểu đồ đường kép bằng cách chồng hai biểu đồ đường lên nhau, sử dụng hàm `par` và `plot` của R. Chúng ta sẽ vẽ năm trên trục x và hiển thị hai trục y. Vì vậy, hiển thị sản lượng mỗi đàn và số lượng đàn ong, chồng lên nhau: + +```r +par(mar = c(5, 4, 4, 4) + 0.3) +plot(honey$year, honey$numcol, pch = 16, col = 2,type="l") +par(new = TRUE) +plot(honey$year, honey$yieldpercol, pch = 17, col = 3, + axes = FALSE, xlab = "", ylab = "",type="l") +axis(side = 4, at = pretty(range(y2))) +mtext("colony yield", side = 4, line = 3) +``` +![superimposed plots](../../../../../translated_images/dual-line.fc4665f360a54018d7df9bc6abcc26460112e17dcbda18d3b9ae6109b32b36c3.vi.png) + +Mặc dù không có điều gì nổi bật vào khoảng năm 2003, điều này cho phép chúng ta kết thúc bài học với một ghi chú vui vẻ hơn: mặc dù số lượng đàn ong đang giảm, số lượng đàn ong đang ổn định ngay cả khi sản lượng mỗi đàn đang giảm. + +Cố lên, ong nhé! + +🐝❤️ +## 🚀 Thử thách + +Trong bài học này, bạn đã học thêm về các cách sử dụng biểu đồ phân tán và lưới đường, bao gồm lưới facet. Thử thách bản thân tạo một lưới facet bằng cách sử dụng một tập dữ liệu khác, có thể là một tập dữ liệu bạn đã sử dụng trước đây trong các bài học này. Lưu ý thời gian tạo và cẩn thận về số lượng lưới bạn cần vẽ bằng các kỹ thuật này. +## [Câu hỏi sau bài học](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/23) + +## Ôn tập & Tự học + +Biểu đồ đường có thể đơn giản hoặc khá phức tạp. Hãy đọc thêm trong [tài liệu ggplot2](https://ggplot2.tidyverse.org/reference/geom_path.html#:~:text=geom_line()%20connects%20them%20in,which%20cases%20are%20connected%20together) về các cách khác nhau bạn có thể xây dựng chúng. Thử cải thiện các biểu đồ đường bạn đã tạo trong bài học này bằng các phương pháp khác được liệt kê trong tài liệu. +## Bài tập + +[Khám phá tổ ong](assignment.md) + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc sự không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tham khảo chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/3-Data-Visualization/R/13-meaningful-vizualizations/README.md b/translations/vi/3-Data-Visualization/R/13-meaningful-vizualizations/README.md new file mode 100644 index 00000000..0e6d8175 --- /dev/null +++ b/translations/vi/3-Data-Visualization/R/13-meaningful-vizualizations/README.md @@ -0,0 +1,182 @@ + +# Tạo Các Biểu Đồ Trực Quan Có Ý Nghĩa + +|![ Sketchnote của [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/13-MeaningfulViz.png)| +|:---:| +| Biểu Đồ Trực Quan Có Ý Nghĩa - _Sketchnote của [@nitya](https://twitter.com/nitya)_ | + +> "Nếu bạn tra tấn dữ liệu đủ lâu, nó sẽ thú nhận bất cứ điều gì" -- [Ronald Coase](https://en.wikiquote.org/wiki/Ronald_Coase) + +Một trong những kỹ năng cơ bản của một nhà khoa học dữ liệu là khả năng tạo ra các biểu đồ trực quan có ý nghĩa, giúp trả lời các câu hỏi mà bạn có thể có. Trước khi trực quan hóa dữ liệu, bạn cần đảm bảo rằng dữ liệu đã được làm sạch và chuẩn bị, như bạn đã làm trong các bài học trước. Sau đó, bạn có thể bắt đầu quyết định cách tốt nhất để trình bày dữ liệu. + +Trong bài học này, bạn sẽ xem xét: + +1. Cách chọn loại biểu đồ phù hợp +2. Cách tránh biểu đồ gây hiểu lầm +3. Cách làm việc với màu sắc +4. Cách định dạng biểu đồ để dễ đọc +5. Cách tạo biểu đồ động hoặc 3D +6. Cách tạo biểu đồ sáng tạo + +## [Câu hỏi trước bài học](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/24) + +## Chọn loại biểu đồ phù hợp + +Trong các bài học trước, bạn đã thử nghiệm xây dựng nhiều loại biểu đồ trực quan thú vị bằng Matplotlib và Seaborn. Nói chung, bạn có thể chọn [loại biểu đồ phù hợp](https://chartio.com/learn/charts/how-to-select-a-data-vizualization/) cho câu hỏi bạn đang đặt ra bằng cách sử dụng bảng sau: + +| Bạn cần: | Bạn nên sử dụng: | +| -------------------------- | ------------------------------- | +| Hiển thị xu hướng theo thời gian | Đường (Line) | +| So sánh các danh mục | Cột (Bar), Tròn (Pie) | +| So sánh tổng số | Tròn (Pie), Cột xếp chồng | +| Hiển thị mối quan hệ | Điểm (Scatter), Đường, Facet, Đường kép | +| Hiển thị phân phối | Điểm (Scatter), Histogram, Box | +| Hiển thị tỷ lệ | Tròn (Pie), Donut, Waffle | + +> ✅ Tùy thuộc vào cấu trúc dữ liệu của bạn, bạn có thể cần chuyển đổi dữ liệu từ dạng văn bản sang số để biểu đồ hỗ trợ. + +## Tránh gây hiểu lầm + +Ngay cả khi một nhà khoa học dữ liệu cẩn thận chọn đúng biểu đồ cho dữ liệu, vẫn có nhiều cách để dữ liệu được trình bày nhằm chứng minh một quan điểm, thường là làm tổn hại đến tính chính xác của dữ liệu. Có rất nhiều ví dụ về các biểu đồ và đồ họa thông tin gây hiểu lầm! + +[![How Charts Lie của Alberto Cairo](../../../../../translated_images/tornado.2880ffc7f135f82b5e5328624799010abefd1080ae4b7ecacbdc7d792f1d8849.vi.png)](https://www.youtube.com/watch?v=oX74Nge8Wkw "How charts lie") + +> 🎥 Nhấp vào hình ảnh trên để xem một bài nói chuyện về các biểu đồ gây hiểu lầm + +Biểu đồ này đảo ngược trục X để hiển thị điều ngược lại với sự thật, dựa trên ngày tháng: + +![bad chart 1](../../../../../translated_images/bad-chart-1.596bc93425a8ac301a28b8361f59a970276e7b961658ce849886aa1fed427341.vi.png) + +[Biểu đồ này](https://media.firstcoastnews.com/assets/WTLV/images/170ae16f-4643-438f-b689-50d66ca6a8d8/170ae16f-4643-438f-b689-50d66ca6a8d8_1140x641.jpg) thậm chí còn gây hiểu lầm hơn, vì mắt người bị thu hút về phía bên phải để kết luận rằng, theo thời gian, số ca COVID đã giảm ở các quận khác nhau. Thực tế, nếu bạn nhìn kỹ vào các ngày tháng, bạn sẽ thấy chúng đã được sắp xếp lại để tạo ra xu hướng giảm giả. + +![bad chart 2](../../../../../translated_images/bad-chart-2.62edf4d2f30f4e519f5ef50c07ce686e27b0196a364febf9a4d98eecd21f9f60.vi.jpg) + +Ví dụ nổi tiếng này sử dụng màu sắc VÀ trục Y bị lật để đánh lừa: thay vì kết luận rằng số ca tử vong do súng tăng vọt sau khi thông qua luật thân thiện với súng, mắt người lại bị đánh lừa để nghĩ điều ngược lại: + +![bad chart 3](../../../../../translated_images/bad-chart-3.e201e2e915a230bc2cde289110604ec9abeb89be510bd82665bebc1228258972.vi.jpg) + +Biểu đồ kỳ lạ này cho thấy cách tỷ lệ có thể bị thao túng, dẫn đến hiệu ứng hài hước: + +![bad chart 4](../../../../../translated_images/bad-chart-4.8872b2b881ffa96c3e0db10eb6aed7793efae2cac382c53932794260f7bfff07.vi.jpg) + +So sánh những thứ không thể so sánh là một thủ thuật mờ ám khác. Có một [trang web tuyệt vời](https://tylervigen.com/spurious-correlations) về 'mối tương quan giả' hiển thị các 'sự thật' như tỷ lệ ly hôn ở Maine và mức tiêu thụ bơ thực vật. Một nhóm trên Reddit cũng thu thập [các ví dụ xấu](https://www.reddit.com/r/dataisugly/top/?t=all) về việc sử dụng dữ liệu. + +Điều quan trọng là phải hiểu mắt người dễ bị đánh lừa bởi các biểu đồ gây hiểu lầm như thế nào. Ngay cả khi ý định của nhà khoa học dữ liệu là tốt, việc chọn sai loại biểu đồ, chẳng hạn như biểu đồ tròn với quá nhiều danh mục, cũng có thể gây hiểu lầm. + +## Màu sắc + +Bạn đã thấy trong biểu đồ 'bạo lực súng ở Florida' ở trên rằng màu sắc có thể cung cấp một lớp ý nghĩa bổ sung cho biểu đồ, đặc biệt là những biểu đồ không được thiết kế bằng các thư viện như ggplot2 và RColorBrewer, vốn đi kèm với các thư viện và bảng màu đã được kiểm chứng. Nếu bạn tự tạo biểu đồ, hãy nghiên cứu một chút về [lý thuyết màu sắc](https://colormatters.com/color-and-design/basic-color-theory). + +> ✅ Hãy lưu ý, khi thiết kế biểu đồ, rằng khả năng tiếp cận là một khía cạnh quan trọng của trực quan hóa. Một số người dùng của bạn có thể bị mù màu - liệu biểu đồ của bạn có hiển thị tốt cho những người dùng bị suy giảm thị lực không? + +Hãy cẩn thận khi chọn màu sắc cho biểu đồ của bạn, vì màu sắc có thể truyền tải ý nghĩa mà bạn không mong muốn. Các 'quý cô màu hồng' trong biểu đồ 'chiều cao' ở trên truyền tải một ý nghĩa 'nữ tính' rõ ràng, làm tăng thêm sự kỳ quặc của chính biểu đồ. + +Mặc dù [ý nghĩa màu sắc](https://colormatters.com/color-symbolism/the-meanings-of-colors) có thể khác nhau ở các khu vực khác nhau trên thế giới và có xu hướng thay đổi theo sắc thái, nhưng nói chung, ý nghĩa màu sắc bao gồm: + +| Màu sắc | Ý nghĩa | +| ------- | --------------------- | +| đỏ | quyền lực | +| xanh | tin cậy, trung thành | +| vàng | hạnh phúc, cảnh báo | +| xanh lá | sinh thái, may mắn, ghen tị | +| tím | hạnh phúc | +| cam | sôi động | + +Nếu bạn được giao nhiệm vụ tạo biểu đồ với màu sắc tùy chỉnh, hãy đảm bảo rằng biểu đồ của bạn vừa dễ tiếp cận vừa phù hợp với ý nghĩa mà bạn muốn truyền tải. + +## Định dạng biểu đồ để dễ đọc + +Biểu đồ sẽ không có ý nghĩa nếu chúng không dễ đọc! Hãy dành một chút thời gian để cân nhắc định dạng chiều rộng và chiều cao của biểu đồ sao cho phù hợp với dữ liệu của bạn. Nếu một biến (chẳng hạn như tất cả 50 bang) cần được hiển thị, hãy hiển thị chúng theo chiều dọc trên trục Y nếu có thể để tránh biểu đồ cuộn ngang. + +Gắn nhãn các trục, cung cấp chú giải nếu cần thiết và cung cấp các công cụ hỗ trợ như tooltip để giúp hiểu dữ liệu tốt hơn. + +Nếu dữ liệu của bạn là văn bản và dài dòng trên trục X, bạn có thể xoay góc văn bản để dễ đọc hơn. [plot3D](https://cran.r-project.org/web/packages/plot3D/index.html) cung cấp khả năng vẽ biểu đồ 3D nếu dữ liệu của bạn hỗ trợ. Các biểu đồ trực quan phức tạp có thể được tạo ra bằng cách sử dụng nó. + +![3d plots](../../../../../translated_images/3d.db1734c151eee87d924989306a00e23f8cddac6a0aab122852ece220e9448def.vi.png) + +## Biểu đồ động và hiển thị 3D + +Một số biểu đồ trực quan tốt nhất hiện nay là biểu đồ động. Shirley Wu có những biểu đồ tuyệt vời được thực hiện bằng D3, chẳng hạn như '[film flowers](http://bl.ocks.org/sxywu/raw/d612c6c653fb8b4d7ff3d422be164a5d/)', nơi mỗi bông hoa là một biểu đồ trực quan của một bộ phim. Một ví dụ khác cho Guardian là 'bussed out', một trải nghiệm tương tác kết hợp biểu đồ trực quan với Greensock và D3 cùng với định dạng bài viết cuộn để kể câu chuyện về cách NYC xử lý vấn đề người vô gia cư bằng cách đưa họ ra khỏi thành phố. + +![busing](../../../../../translated_images/busing.8157cf1bc89a3f65052d362a78c72f964982ceb9dcacbe44480e35909c3dce62.vi.png) + +> "Bussed Out: How America Moves its Homeless" từ [the Guardian](https://www.theguardian.com/us-news/ng-interactive/2017/dec/20/bussed-out-america-moves-homeless-people-country-study). Biểu đồ trực quan bởi Nadieh Bremer & Shirley Wu + +Mặc dù bài học này không đủ để đi sâu vào việc dạy các thư viện trực quan hóa mạnh mẽ này, hãy thử sử dụng D3 trong một ứng dụng Vue.js bằng cách sử dụng một thư viện để hiển thị biểu đồ trực quan của cuốn sách "Dangerous Liaisons" dưới dạng một mạng xã hội động. + +> "Les Liaisons Dangereuses" là một tiểu thuyết dưới dạng thư từ, hoặc một tiểu thuyết được trình bày dưới dạng một loạt các bức thư. Được viết vào năm 1782 bởi Choderlos de Laclos, nó kể câu chuyện về những mưu đồ xã hội độc ác và vô đạo đức của hai nhân vật chính đối đầu nhau trong giới quý tộc Pháp cuối thế kỷ 18, Vicomte de Valmont và Marquise de Merteuil. Cả hai đều gặp kết cục bi thảm nhưng không trước khi gây ra rất nhiều tổn hại xã hội. Tiểu thuyết diễn ra dưới dạng một loạt các bức thư được viết cho nhiều người khác nhau trong vòng tròn của họ, âm mưu trả thù hoặc đơn giản là để gây rắc rối. Hãy tạo một biểu đồ trực quan về những bức thư này để khám phá các nhân vật chính của câu chuyện, một cách trực quan. + +Bạn sẽ hoàn thành một ứng dụng web hiển thị một cái nhìn động về mạng xã hội này. Nó sử dụng một thư viện được xây dựng để tạo [biểu đồ mạng](https://github.com/emiliorizzo/vue-d3-network) bằng Vue.js và D3. Khi ứng dụng đang chạy, bạn có thể kéo các nút trên màn hình để sắp xếp lại dữ liệu. + +![liaisons](../../../../../translated_images/liaisons.90ce7360bcf8476558f700bbbaf198ad697d5b5cb2829ba141a89c0add7c6ecd.vi.png) + +## Dự án: Tạo biểu đồ hiển thị mạng bằng D3.js + +> Thư mục bài học này bao gồm một thư mục `solution` nơi bạn có thể tìm thấy dự án hoàn chỉnh để tham khảo. + +1. Làm theo hướng dẫn trong tệp README.md trong thư mục gốc của thư mục starter. Đảm bảo rằng bạn đã cài đặt NPM và Node.js trên máy của mình trước khi cài đặt các phụ thuộc của dự án. + +2. Mở thư mục `starter/src`. Bạn sẽ thấy một thư mục `assets` nơi có tệp .json chứa tất cả các bức thư từ tiểu thuyết, được đánh số, với chú thích 'to' và 'from'. + +3. Hoàn thành mã trong `components/Nodes.vue` để kích hoạt biểu đồ trực quan. Tìm phương thức có tên `createLinks()` và thêm vòng lặp lồng nhau sau. + +Duyệt qua đối tượng .json để lấy dữ liệu 'to' và 'from' cho các bức thư và xây dựng đối tượng `links` để thư viện biểu đồ trực quan có thể sử dụng: + +```javascript +//loop through letters + let f = 0; + let t = 0; + for (var i = 0; i < letters.length; i++) { + for (var j = 0; j < characters.length; j++) { + + if (characters[j] == letters[i].from) { + f = j; + } + if (characters[j] == letters[i].to) { + t = j; + } + } + this.links.push({ sid: f, tid: t }); + } + ``` + +Chạy ứng dụng của bạn từ terminal (npm run serve) và tận hưởng biểu đồ trực quan! + +## 🚀 Thử thách + +Khám phá trên internet để tìm các biểu đồ trực quan gây hiểu lầm. Tác giả đã đánh lừa người dùng như thế nào, và điều đó có phải là cố ý không? Hãy thử chỉnh sửa các biểu đồ để hiển thị chúng đúng cách. + +## [Câu hỏi sau bài học](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/25) + +## Ôn tập & Tự học + +Dưới đây là một số bài viết để đọc về biểu đồ dữ liệu gây hiểu lầm: + +https://gizmodo.com/how-to-lie-with-data-visualization-1563576606 + +http://ixd.prattsi.org/2017/12/visual-lies-usability-in-deceptive-data-visualizations/ + +Hãy xem các biểu đồ trực quan thú vị về tài sản và hiện vật lịch sử: + +https://handbook.pubpub.org/ + +Xem qua bài viết này về cách hoạt hình có thể nâng cao biểu đồ trực quan của bạn: + +https://medium.com/@EvanSinar/use-animation-to-supercharge-data-visualization-cd905a882ad4 + +## Bài tập + +[Tự tạo biểu đồ trực quan của riêng bạn](assignment.md) + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tham khảo chính thức. Đối với các thông tin quan trọng, chúng tôi khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/3-Data-Visualization/README.md b/translations/vi/3-Data-Visualization/README.md new file mode 100644 index 00000000..eea34a3e --- /dev/null +++ b/translations/vi/3-Data-Visualization/README.md @@ -0,0 +1,42 @@ + +# Hình ảnh trực quan + +![một con ong trên hoa oải hương](../../../translated_images/bee.0aa1d91132b12e3a8994b9ca12816d05ce1642010d9b8be37f8d37365ba845cf.vi.jpg) +> Ảnh của Jenna Lee trên Unsplash + +Việc hình ảnh hóa dữ liệu là một trong những nhiệm vụ quan trọng nhất của một nhà khoa học dữ liệu. Một hình ảnh có giá trị bằng 1000 từ, và hình ảnh trực quan có thể giúp bạn nhận ra nhiều khía cạnh thú vị của dữ liệu như đỉnh, giá trị ngoại lai, nhóm, xu hướng, và nhiều hơn nữa, giúp bạn hiểu câu chuyện mà dữ liệu đang cố gắng truyền tải. + +Trong năm bài học này, bạn sẽ khám phá dữ liệu từ thiên nhiên và tạo ra những hình ảnh trực quan thú vị và đẹp mắt bằng cách sử dụng nhiều kỹ thuật khác nhau. + +| Số chủ đề | Chủ đề | Bài học liên kết | Tác giả | +| :-----------: | :--: | :-----------: | :----: | +| 1. | Hình ảnh hóa số lượng |
  • [Python](09-visualization-quantities/README.md)
  • [R](../../../3-Data-Visualization/R/09-visualization-quantities)
|
  • [Jen Looper](https://twitter.com/jenlooper)
  • [Vidushi Gupta](https://github.com/Vidushi-Gupta)
  • [Jasleen Sondhi](https://github.com/jasleen101010)
| +| 2. | Hình ảnh hóa phân phối |
  • [Python](10-visualization-distributions/README.md)
  • [R](../../../3-Data-Visualization/R/10-visualization-distributions)
|
  • [Jen Looper](https://twitter.com/jenlooper)
  • [Vidushi Gupta](https://github.com/Vidushi-Gupta)
  • [Jasleen Sondhi](https://github.com/jasleen101010)
| +| 3. | Hình ảnh hóa tỷ lệ |
  • [Python](11-visualization-proportions/README.md)
  • [R](../../../3-Data-Visualization)
|
  • [Jen Looper](https://twitter.com/jenlooper)
  • [Vidushi Gupta](https://github.com/Vidushi-Gupta)
  • [Jasleen Sondhi](https://github.com/jasleen101010)
| +| 4. | Hình ảnh hóa mối quan hệ |
  • [Python](12-visualization-relationships/README.md)
  • [R](../../../3-Data-Visualization)
|
  • [Jen Looper](https://twitter.com/jenlooper)
  • [Vidushi Gupta](https://github.com/Vidushi-Gupta)
  • [Jasleen Sondhi](https://github.com/jasleen101010)
| +| 5. | Tạo hình ảnh trực quan ý nghĩa |
  • [Python](13-meaningful-visualizations/README.md)
  • [R](../../../3-Data-Visualization)
|
  • [Jen Looper](https://twitter.com/jenlooper)
  • [Vidushi Gupta](https://github.com/Vidushi-Gupta)
  • [Jasleen Sondhi](https://github.com/jasleen101010)
| + +### Ghi nhận + +Những bài học về hình ảnh trực quan này được viết với 🌸 bởi [Jen Looper](https://twitter.com/jenlooper), [Jasleen Sondhi](https://github.com/jasleen101010) và [Vidushi Gupta](https://github.com/Vidushi-Gupta). + +🍯 Dữ liệu về sản xuất mật ong tại Mỹ được lấy từ dự án của Jessica Li trên [Kaggle](https://www.kaggle.com/jessicali9530/honey-production). [Dữ liệu](https://usda.library.cornell.edu/concern/publications/rn301137d) được trích xuất từ [Bộ Nông nghiệp Hoa Kỳ](https://www.nass.usda.gov/About_NASS/index.php). + +🍄 Dữ liệu về nấm cũng được lấy từ [Kaggle](https://www.kaggle.com/hatterasdunton/mushroom-classification-updated-dataset) do Hatteras Dunton chỉnh sửa. Bộ dữ liệu này bao gồm mô tả về các mẫu giả định tương ứng với 23 loài nấm có mang thuộc họ Agaricus và Lepiota. Nấm được lấy từ sách The Audubon Society Field Guide to North American Mushrooms (1981). Bộ dữ liệu này được hiến tặng cho UCI ML 27 vào năm 1987. + +🦆 Dữ liệu về các loài chim ở Minnesota được lấy từ [Kaggle](https://www.kaggle.com/hannahcollins/minnesota-birds) và được Hannah Collins thu thập từ [Wikipedia](https://en.wikipedia.org/wiki/List_of_birds_of_Minnesota). + +Tất cả các bộ dữ liệu này đều được cấp phép theo [CC0: Creative Commons](https://creativecommons.org/publicdomain/zero/1.0/). + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/4-Data-Science-Lifecycle/14-Introduction/README.md b/translations/vi/4-Data-Science-Lifecycle/14-Introduction/README.md new file mode 100644 index 00000000..a9d50ac7 --- /dev/null +++ b/translations/vi/4-Data-Science-Lifecycle/14-Introduction/README.md @@ -0,0 +1,123 @@ + +# Giới thiệu về Vòng đời Khoa học Dữ liệu + +|![ Sketchnote bởi [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/14-DataScience-Lifecycle.png)| +|:---:| +| Giới thiệu về Vòng đời Khoa học Dữ liệu - _Sketchnote bởi [@nitya](https://twitter.com/nitya)_ | + +## [Câu hỏi trước bài giảng](https://red-water-0103e7a0f.azurestaticapps.net/quiz/26) + +Đến thời điểm này, bạn có lẽ đã nhận ra rằng khoa học dữ liệu là một quy trình. Quy trình này có thể được chia thành 5 giai đoạn: + +- Thu thập +- Xử lý +- Phân tích +- Truyền đạt +- Bảo trì + +Bài học này tập trung vào 3 phần của vòng đời: thu thập, xử lý và bảo trì. + +![Sơ đồ vòng đời khoa học dữ liệu](../../../../translated_images/data-science-lifecycle.a1e362637503c4fb0cd5e859d7552edcdb4aa629a279727008baa121f2d33f32.vi.jpg) +> Ảnh bởi [Berkeley School of Information](https://ischoolonline.berkeley.edu/data-science/what-is-data-science/) + +## Thu thập + +Giai đoạn đầu tiên của vòng đời rất quan trọng vì các giai đoạn tiếp theo phụ thuộc vào nó. Thực tế, đây là hai giai đoạn kết hợp thành một: thu thập dữ liệu và xác định mục đích cũng như các vấn đề cần giải quyết. +Việc xác định mục tiêu của dự án sẽ yêu cầu hiểu sâu hơn về vấn đề hoặc câu hỏi. Đầu tiên, chúng ta cần xác định và thu thập những người cần giải quyết vấn đề của họ. Đây có thể là các bên liên quan trong doanh nghiệp hoặc nhà tài trợ của dự án, những người có thể giúp xác định ai hoặc điều gì sẽ hưởng lợi từ dự án này cũng như họ cần gì và tại sao. Một mục tiêu được xác định rõ ràng nên có thể đo lường và định lượng để xác định kết quả chấp nhận được. + +Các câu hỏi mà một nhà khoa học dữ liệu có thể đặt ra: +- Vấn đề này đã từng được giải quyết trước đây chưa? Điều gì đã được khám phá? +- Mục đích và mục tiêu có được tất cả các bên liên quan hiểu rõ không? +- Có sự mơ hồ nào không và làm thế nào để giảm bớt nó? +- Những ràng buộc là gì? +- Kết quả cuối cùng có thể trông như thế nào? +- Có bao nhiêu tài nguyên (thời gian, nhân lực, tính toán) sẵn có? + +Tiếp theo là xác định, thu thập, và cuối cùng là khám phá dữ liệu cần thiết để đạt được các mục tiêu đã xác định. Ở bước thu thập này, các nhà khoa học dữ liệu cũng phải đánh giá số lượng và chất lượng của dữ liệu. Điều này yêu cầu một số khám phá dữ liệu để xác nhận rằng những gì đã thu thập sẽ hỗ trợ đạt được kết quả mong muốn. + +Các câu hỏi mà một nhà khoa học dữ liệu có thể đặt ra về dữ liệu: +- Dữ liệu nào đã có sẵn cho tôi? +- Ai sở hữu dữ liệu này? +- Những lo ngại về quyền riêng tư là gì? +- Tôi có đủ dữ liệu để giải quyết vấn đề này không? +- Dữ liệu có chất lượng chấp nhận được cho vấn đề này không? +- Nếu tôi phát hiện thêm thông tin thông qua dữ liệu này, chúng ta có nên cân nhắc thay đổi hoặc xác định lại mục tiêu không? + +## Xử lý + +Giai đoạn xử lý của vòng đời tập trung vào việc khám phá các mẫu trong dữ liệu cũng như xây dựng mô hình. Một số kỹ thuật được sử dụng trong giai đoạn xử lý yêu cầu các phương pháp thống kê để tìm ra các mẫu. Thông thường, đây sẽ là một nhiệm vụ tẻ nhạt đối với con người khi làm việc với một tập dữ liệu lớn và sẽ dựa vào máy tính để thực hiện công việc nặng nhọc nhằm tăng tốc quá trình. Giai đoạn này cũng là nơi khoa học dữ liệu và học máy giao thoa. Như bạn đã học trong bài đầu tiên, học máy là quá trình xây dựng các mô hình để hiểu dữ liệu. Mô hình là sự biểu diễn mối quan hệ giữa các biến trong dữ liệu giúp dự đoán kết quả. + +Các kỹ thuật phổ biến được sử dụng trong giai đoạn này được đề cập trong chương trình học ML for Beginners. Theo các liên kết để tìm hiểu thêm về chúng: + +- [Phân loại](https://github.com/microsoft/ML-For-Beginners/tree/main/4-Classification): Sắp xếp dữ liệu vào các danh mục để sử dụng hiệu quả hơn. +- [Phân cụm](https://github.com/microsoft/ML-For-Beginners/tree/main/5-Clustering): Nhóm dữ liệu thành các nhóm tương tự. +- [Hồi quy](https://github.com/microsoft/ML-For-Beginners/tree/main/2-Regression): Xác định mối quan hệ giữa các biến để dự đoán hoặc dự báo giá trị. + +## Bảo trì + +Trong sơ đồ vòng đời, bạn có thể nhận thấy rằng bảo trì nằm giữa thu thập và xử lý. Bảo trì là một quá trình liên tục để quản lý, lưu trữ và bảo mật dữ liệu trong suốt quá trình của một dự án và nên được xem xét trong toàn bộ dự án. + +### Lưu trữ dữ liệu + +Việc cân nhắc cách và nơi lưu trữ dữ liệu có thể ảnh hưởng đến chi phí lưu trữ cũng như hiệu suất của việc truy cập dữ liệu nhanh như thế nào. Những quyết định như vậy không có khả năng được thực hiện bởi một nhà khoa học dữ liệu đơn lẻ, nhưng họ có thể phải đưa ra lựa chọn về cách làm việc với dữ liệu dựa trên cách nó được lưu trữ. + +Dưới đây là một số khía cạnh của hệ thống lưu trữ dữ liệu hiện đại có thể ảnh hưởng đến những lựa chọn này: + +**Tại chỗ so với ngoài chỗ so với đám mây công cộng hoặc riêng tư** + +Tại chỗ đề cập đến việc lưu trữ và quản lý dữ liệu trên thiết bị của riêng bạn, như sở hữu một máy chủ với ổ cứng lưu trữ dữ liệu, trong khi ngoài chỗ dựa vào thiết bị mà bạn không sở hữu, chẳng hạn như trung tâm dữ liệu. Đám mây công cộng là một lựa chọn phổ biến để lưu trữ dữ liệu mà không yêu cầu kiến thức về cách hoặc nơi dữ liệu được lưu trữ chính xác, nơi công cộng đề cập đến cơ sở hạ tầng cơ bản thống nhất được chia sẻ bởi tất cả những người sử dụng đám mây. Một số tổ chức có chính sách bảo mật nghiêm ngặt yêu cầu họ phải có quyền truy cập hoàn toàn vào thiết bị nơi dữ liệu được lưu trữ và sẽ dựa vào đám mây riêng cung cấp các dịch vụ đám mây riêng của mình. Bạn sẽ tìm hiểu thêm về dữ liệu trong đám mây trong [các bài học sau](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/5-Data-Science-In-Cloud). + +**Dữ liệu lạnh so với dữ liệu nóng** + +Khi huấn luyện mô hình của bạn, bạn có thể cần thêm dữ liệu huấn luyện. Nếu bạn hài lòng với mô hình của mình, nhiều dữ liệu hơn sẽ đến để mô hình phục vụ mục đích của nó. Trong bất kỳ trường hợp nào, chi phí lưu trữ và truy cập dữ liệu sẽ tăng lên khi bạn tích lũy thêm dữ liệu. Việc tách dữ liệu ít được sử dụng, được gọi là dữ liệu lạnh, khỏi dữ liệu thường xuyên được truy cập, dữ liệu nóng, có thể là một lựa chọn lưu trữ dữ liệu rẻ hơn thông qua phần cứng hoặc dịch vụ phần mềm. Nếu dữ liệu lạnh cần được truy cập, có thể mất một chút thời gian để truy xuất so với dữ liệu nóng. + +### Quản lý dữ liệu + +Khi làm việc với dữ liệu, bạn có thể phát hiện rằng một số dữ liệu cần được làm sạch bằng một số kỹ thuật được đề cập trong bài học tập trung vào [chuẩn bị dữ liệu](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/2-Working-With-Data/08-data-preparation) để xây dựng các mô hình chính xác. Khi dữ liệu mới đến, nó sẽ cần một số ứng dụng tương tự để duy trì tính nhất quán về chất lượng. Một số dự án sẽ liên quan đến việc sử dụng công cụ tự động để làm sạch, tổng hợp và nén trước khi dữ liệu được chuyển đến vị trí cuối cùng. Azure Data Factory là một ví dụ về một trong những công cụ này. + +### Bảo mật dữ liệu + +Một trong những mục tiêu chính của việc bảo mật dữ liệu là đảm bảo rằng những người làm việc với dữ liệu kiểm soát được những gì được thu thập và trong ngữ cảnh nào nó được sử dụng. Việc giữ dữ liệu an toàn liên quan đến việc giới hạn quyền truy cập chỉ cho những người cần nó, tuân thủ luật pháp và quy định địa phương, cũng như duy trì các tiêu chuẩn đạo đức, như đã đề cập trong [bài học về đạo đức](https://github.com/microsoft/Data-Science-For-Beginners/tree/main/1-Introduction/02-ethics). + +Dưới đây là một số điều mà nhóm có thể làm với mục tiêu bảo mật: +- Xác nhận rằng tất cả dữ liệu đều được mã hóa +- Cung cấp cho khách hàng thông tin về cách dữ liệu của họ được sử dụng +- Loại bỏ quyền truy cập dữ liệu từ những người đã rời khỏi dự án +- Chỉ cho phép một số thành viên dự án nhất định thay đổi dữ liệu + +## 🚀 Thử thách + +Có nhiều phiên bản của Vòng đời Khoa học Dữ liệu, trong đó mỗi bước có thể có tên gọi và số lượng giai đoạn khác nhau nhưng sẽ chứa các quy trình giống như đã đề cập trong bài học này. + +Khám phá [Vòng đời Quy trình Khoa học Dữ liệu của Nhóm](https://docs.microsoft.com/en-us/azure/architecture/data-science-process/lifecycle) và [Quy trình tiêu chuẩn liên ngành cho khai thác dữ liệu](https://www.datascience-pm.com/crisp-dm-2/). Nêu 3 điểm tương đồng và khác biệt giữa hai quy trình này. + +|Quy trình Khoa học Dữ liệu của Nhóm (TDSP)|Quy trình tiêu chuẩn liên ngành cho khai thác dữ liệu (CRISP-DM)| +|--|--| +|![Vòng đời Khoa học Dữ liệu của Nhóm](../../../../translated_images/tdsp-lifecycle2.e19029d598e2e73d5ef8a4b98837d688ec6044fe332c905d4dbb69eb6d5c1d96.vi.png) | ![Hình ảnh Quy trình Khoa học Dữ liệu](../../../../translated_images/CRISP-DM.8bad2b4c66e62aa75278009e38e3e99902c73b0a6f63fd605a67c687a536698c.vi.png) | +| Hình ảnh bởi [Microsoft](https://docs.microsoft.comazure/architecture/data-science-process/lifecycle) | Hình ảnh bởi [Data Science Process Alliance](https://www.datascience-pm.com/crisp-dm-2/) | + +## [Câu hỏi sau bài giảng](https://red-water-0103e7a0f.azurestaticapps.net/quiz/27) + +## Ôn tập & Tự học + +Việc áp dụng Vòng đời Khoa học Dữ liệu liên quan đến nhiều vai trò và nhiệm vụ, trong đó một số có thể tập trung vào các phần cụ thể của mỗi giai đoạn. Quy trình Khoa học Dữ liệu của Nhóm cung cấp một số tài nguyên giải thích các loại vai trò và nhiệm vụ mà ai đó có thể có trong một dự án. + +* [Vai trò và nhiệm vụ trong Quy trình Khoa học Dữ liệu của Nhóm](https://docs.microsoft.com/en-us/azure/architecture/data-science-process/roles-tasks) +* [Thực hiện các nhiệm vụ khoa học dữ liệu: khám phá, mô hình hóa và triển khai](https://docs.microsoft.com/en-us/azure/architecture/data-science-process/execute-data-science-tasks) + +## Bài tập + +[Đánh giá một tập dữ liệu](assignment.md) + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tham khảo chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/4-Data-Science-Lifecycle/14-Introduction/assignment.md b/translations/vi/4-Data-Science-Lifecycle/14-Introduction/assignment.md new file mode 100644 index 00000000..b37d126a --- /dev/null +++ b/translations/vi/4-Data-Science-Lifecycle/14-Introduction/assignment.md @@ -0,0 +1,37 @@ + +# Đánh giá một tập dữ liệu + +Một khách hàng đã liên hệ với nhóm của bạn để nhờ giúp đỡ trong việc điều tra thói quen chi tiêu theo mùa của khách hàng đi taxi ở Thành phố New York. + +Họ muốn biết: **Hành khách đi taxi vàng ở Thành phố New York có tip cho tài xế nhiều hơn vào mùa đông hay mùa hè?** + +Nhóm của bạn đang ở giai đoạn [Thu thập](Readme.md#Capturing) trong Vòng đời Khoa học Dữ liệu và bạn chịu trách nhiệm xử lý tập dữ liệu. Bạn đã được cung cấp một notebook và [dữ liệu](../../../../data/taxi.csv) để khám phá. + +Trong thư mục này có một [notebook](notebook.ipynb) sử dụng Python để tải dữ liệu chuyến đi taxi vàng từ [NYC Taxi & Limousine Commission](https://docs.microsoft.com/en-us/azure/open-datasets/dataset-taxi-yellow?tabs=azureml-opendatasets). +Bạn cũng có thể mở tệp dữ liệu taxi trong trình soạn thảo văn bản hoặc phần mềm bảng tính như Excel. + +## Hướng dẫn + +- Đánh giá xem liệu dữ liệu trong tập dữ liệu này có thể giúp trả lời câu hỏi hay không. +- Khám phá [danh mục Dữ liệu Mở NYC](https://data.cityofnewyork.us/browse?sortBy=most_accessed&utf8=%E2%9C%93). Xác định một tập dữ liệu bổ sung có thể hữu ích trong việc trả lời câu hỏi của khách hàng. +- Viết 3 câu hỏi mà bạn sẽ hỏi khách hàng để làm rõ và hiểu rõ hơn về vấn đề. + +Tham khảo [từ điển của tập dữ liệu](https://www1.nyc.gov/assets/tlc/downloads/pdf/data_dictionary_trip_records_yellow.pdf) và [hướng dẫn sử dụng](https://www1.nyc.gov/assets/tlc/downloads/pdf/trip_record_user_guide.pdf) để biết thêm thông tin về dữ liệu. + +## Tiêu chí đánh giá + +Xuất sắc | Đạt yêu cầu | Cần cải thiện +--- | --- | --- + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tham khảo chính thức. Đối với các thông tin quan trọng, chúng tôi khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/4-Data-Science-Lifecycle/15-analyzing/README.md b/translations/vi/4-Data-Science-Lifecycle/15-analyzing/README.md new file mode 100644 index 00000000..d6f048de --- /dev/null +++ b/translations/vi/4-Data-Science-Lifecycle/15-analyzing/README.md @@ -0,0 +1,60 @@ + +# Vòng đời Khoa học Dữ liệu: Phân tích + +|![ Sketchnote của [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/15-Analyzing.png)| +|:---:| +| Vòng đời Khoa học Dữ liệu: Phân tích - _Sketchnote của [@nitya](https://twitter.com/nitya)_ | + +## Câu hỏi trước bài giảng + +## [Câu hỏi trước bài giảng](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/28) + +Phân tích trong vòng đời dữ liệu xác nhận rằng dữ liệu có thể trả lời các câu hỏi được đề xuất hoặc giải quyết một vấn đề cụ thể. Bước này cũng có thể tập trung vào việc xác nhận một mô hình có đang giải quyết đúng các câu hỏi và vấn đề hay không. Bài học này tập trung vào Phân tích Dữ liệu Khám phá (Exploratory Data Analysis - EDA), là các kỹ thuật để xác định các đặc điểm và mối quan hệ trong dữ liệu, đồng thời có thể được sử dụng để chuẩn bị dữ liệu cho việc xây dựng mô hình. + +Chúng ta sẽ sử dụng một tập dữ liệu ví dụ từ [Kaggle](https://www.kaggle.com/balaka18/email-spam-classification-dataset-csv/version/1) để minh họa cách áp dụng điều này với Python và thư viện Pandas. Tập dữ liệu này chứa số lượng một số từ phổ biến được tìm thấy trong email, nguồn gốc của các email này là ẩn danh. Hãy sử dụng [notebook](notebook.ipynb) trong thư mục này để thực hành theo. + +## Phân tích Dữ liệu Khám phá + +Giai đoạn thu thập trong vòng đời là nơi dữ liệu được thu thập cũng như các vấn đề và câu hỏi được đặt ra, nhưng làm thế nào để chúng ta biết dữ liệu có thể hỗ trợ kết quả cuối cùng? +Hãy nhớ rằng một nhà khoa học dữ liệu có thể đặt ra các câu hỏi sau khi họ thu thập dữ liệu: +- Tôi có đủ dữ liệu để giải quyết vấn đề này không? +- Dữ liệu có chất lượng chấp nhận được cho vấn đề này không? +- Nếu tôi phát hiện thêm thông tin thông qua dữ liệu này, chúng ta có nên xem xét thay đổi hoặc xác định lại mục tiêu không? +Phân tích Dữ liệu Khám phá là quá trình làm quen với dữ liệu và có thể được sử dụng để trả lời các câu hỏi này, cũng như xác định các thách thức khi làm việc với tập dữ liệu. Hãy tập trung vào một số kỹ thuật được sử dụng để đạt được điều này. + +## Lập hồ sơ dữ liệu, Thống kê mô tả và Pandas +Làm thế nào để chúng ta đánh giá liệu có đủ dữ liệu để giải quyết vấn đề này không? Lập hồ sơ dữ liệu có thể tóm tắt và thu thập một số thông tin tổng quan chung về tập dữ liệu của chúng ta thông qua các kỹ thuật thống kê mô tả. Lập hồ sơ dữ liệu giúp chúng ta hiểu những gì có sẵn, và thống kê mô tả giúp chúng ta hiểu có bao nhiêu thứ có sẵn. + +Trong một số bài học trước, chúng ta đã sử dụng Pandas để cung cấp một số thống kê mô tả với hàm [`describe()`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.describe.html). Hàm này cung cấp số lượng, giá trị lớn nhất và nhỏ nhất, giá trị trung bình, độ lệch chuẩn và các phân vị trên dữ liệu số. Sử dụng các thống kê mô tả như hàm `describe()` có thể giúp bạn đánh giá bạn có bao nhiêu dữ liệu và liệu bạn có cần thêm hay không. + +## Lấy mẫu và Truy vấn +Khám phá toàn bộ một tập dữ liệu lớn có thể rất tốn thời gian và thường được giao cho máy tính thực hiện. Tuy nhiên, lấy mẫu là một công cụ hữu ích để hiểu dữ liệu và cho phép chúng ta có cái nhìn rõ hơn về những gì có trong tập dữ liệu và nó đại diện cho điều gì. Với một mẫu, bạn có thể áp dụng xác suất và thống kê để đưa ra một số kết luận chung về dữ liệu của mình. Mặc dù không có quy tắc cụ thể về việc bạn nên lấy mẫu bao nhiêu dữ liệu, nhưng điều quan trọng cần lưu ý là càng lấy mẫu nhiều dữ liệu, bạn càng có thể đưa ra các khái quát chính xác hơn về dữ liệu. +Pandas có hàm [`sample()` trong thư viện của nó](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.sample.html), nơi bạn có thể truyền một tham số để nhận được số lượng mẫu ngẫu nhiên mà bạn muốn sử dụng. + +Truy vấn tổng quát dữ liệu có thể giúp bạn trả lời một số câu hỏi và giả thuyết chung mà bạn có thể có. Trái ngược với lấy mẫu, truy vấn cho phép bạn kiểm soát và tập trung vào các phần cụ thể của dữ liệu mà bạn có câu hỏi. +Hàm [`query()`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.query.html) trong thư viện Pandas cho phép bạn chọn các cột và nhận các câu trả lời đơn giản về dữ liệu thông qua các hàng được truy xuất. + +## Khám phá với Hình ảnh hóa +Bạn không cần phải đợi đến khi dữ liệu được làm sạch và phân tích kỹ lưỡng để bắt đầu tạo hình ảnh hóa. Thực tế, việc có một biểu diễn trực quan trong khi khám phá có thể giúp xác định các mẫu, mối quan hệ và vấn đề trong dữ liệu. Hơn nữa, hình ảnh hóa cung cấp một phương tiện giao tiếp với những người không tham gia vào việc quản lý dữ liệu và có thể là cơ hội để chia sẻ và làm rõ các câu hỏi bổ sung chưa được giải quyết trong giai đoạn thu thập. Tham khảo [phần về Hình ảnh hóa](../../../../../../../../../3-Data-Visualization) để tìm hiểu thêm về một số cách phổ biến để khám phá trực quan. + +## Khám phá để xác định sự không nhất quán +Tất cả các chủ đề trong bài học này có thể giúp xác định các giá trị bị thiếu hoặc không nhất quán, nhưng Pandas cung cấp các hàm để kiểm tra một số điều này. [isna() hoặc isnull()](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.isna.html) có thể kiểm tra các giá trị bị thiếu. Một phần quan trọng của việc khám phá các giá trị này trong dữ liệu của bạn là tìm hiểu tại sao chúng lại xuất hiện như vậy ngay từ đầu. Điều này có thể giúp bạn quyết định [các hành động cần thực hiện để giải quyết chúng](/2-Working-With-Data/08-data-preparation/notebook.ipynb). + +## [Câu hỏi trước bài giảng](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/27) + +## Bài tập + +[Khám phá để tìm câu trả lời](assignment.md) + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tham khảo chính thức. Đối với các thông tin quan trọng, chúng tôi khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/4-Data-Science-Lifecycle/15-analyzing/assignment.md b/translations/vi/4-Data-Science-Lifecycle/15-analyzing/assignment.md new file mode 100644 index 00000000..5e9d55d3 --- /dev/null +++ b/translations/vi/4-Data-Science-Lifecycle/15-analyzing/assignment.md @@ -0,0 +1,36 @@ + +# Khám phá câu trả lời + +Đây là phần tiếp nối của [bài tập](../14-Introduction/assignment.md) trong bài học trước, nơi chúng ta đã xem qua bộ dữ liệu. Bây giờ, chúng ta sẽ đi sâu hơn vào bộ dữ liệu này. + +Một lần nữa, câu hỏi mà khách hàng muốn biết: **Hành khách taxi vàng ở Thành phố New York có tip cho tài xế nhiều hơn vào mùa đông hay mùa hè?** + +Nhóm của bạn đang ở giai đoạn [Phân tích](README.md) trong Vòng đời Khoa học Dữ liệu, nơi bạn chịu trách nhiệm thực hiện phân tích dữ liệu khám phá trên bộ dữ liệu. Bạn đã được cung cấp một notebook và bộ dữ liệu chứa 200 giao dịch taxi từ tháng 1 và tháng 7 năm 2019. + +## Hướng dẫn + +Trong thư mục này có một [notebook](assignment.ipynb) và dữ liệu từ [Ủy ban Taxi & Limousine](https://docs.microsoft.com/en-us/azure/open-datasets/dataset-taxi-yellow?tabs=azureml-opendatasets). Tham khảo [từ điển của bộ dữ liệu](https://www1.nyc.gov/assets/tlc/downloads/pdf/data_dictionary_trip_records_yellow.pdf) và [hướng dẫn sử dụng](https://www1.nyc.gov/assets/tlc/downloads/pdf/trip_record_user_guide.pdf) để biết thêm thông tin về dữ liệu. + +Sử dụng một số kỹ thuật trong bài học này để thực hiện phân tích dữ liệu khám phá (EDA) của riêng bạn trong notebook (thêm các ô nếu cần) và trả lời các câu hỏi sau: + +- Những yếu tố nào khác trong dữ liệu có thể ảnh hưởng đến số tiền tip? +- Những cột nào có khả năng không cần thiết để trả lời câu hỏi của khách hàng? +- Dựa trên những gì đã được cung cấp cho đến nay, liệu dữ liệu có cung cấp bất kỳ bằng chứng nào về hành vi tip theo mùa không? + +## Tiêu chí đánh giá + +Xuất sắc | Đạt yêu cầu | Cần cải thiện +--- | --- | --- + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tham khảo chính thức. Đối với các thông tin quan trọng, chúng tôi khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/4-Data-Science-Lifecycle/16-communication/README.md b/translations/vi/4-Data-Science-Lifecycle/16-communication/README.md new file mode 100644 index 00000000..4707c0a2 --- /dev/null +++ b/translations/vi/4-Data-Science-Lifecycle/16-communication/README.md @@ -0,0 +1,222 @@ + +# Vòng đời Khoa học Dữ liệu: Giao tiếp + +|![ Sketchnote của [(@sketchthedocs)](https://sketchthedocs.dev)](../../sketchnotes/16-Communicating.png)| +|:---:| +| Vòng đời Khoa học Dữ liệu: Giao tiếp - _Sketchnote của [@nitya](https://twitter.com/nitya)_ | + +## [Câu hỏi trước bài giảng](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/30) + +Kiểm tra kiến thức của bạn về nội dung sắp tới với bài kiểm tra trên! + +# Giới thiệu + +### Giao tiếp là gì? +Hãy bắt đầu bài học này bằng cách định nghĩa giao tiếp là gì. **Giao tiếp là truyền đạt hoặc trao đổi thông tin.** Thông tin có thể là ý tưởng, suy nghĩ, cảm xúc, thông điệp, tín hiệu ngầm, dữ liệu – bất cứ điều gì mà một **_người gửi_** (người truyền thông tin) muốn một **_người nhận_** (người nhận thông tin) hiểu. Trong bài học này, chúng ta sẽ gọi người gửi là người giao tiếp, và người nhận là khán giả. + +### Giao tiếp dữ liệu & Kể chuyện +Chúng ta hiểu rằng khi giao tiếp, mục tiêu là truyền đạt hoặc trao đổi thông tin. Nhưng khi giao tiếp dữ liệu, mục tiêu của bạn không chỉ đơn thuần là truyền tải các con số đến khán giả. Mục tiêu của bạn là truyền đạt một câu chuyện được định hình bởi dữ liệu của bạn – giao tiếp dữ liệu hiệu quả và kể chuyện luôn song hành. Khán giả của bạn có khả năng nhớ một câu chuyện bạn kể hơn là một con số bạn đưa ra. Trong phần sau của bài học này, chúng ta sẽ thảo luận một số cách mà bạn có thể sử dụng kể chuyện để giao tiếp dữ liệu hiệu quả hơn. + +### Các loại hình giao tiếp +Trong bài học này, chúng ta sẽ thảo luận hai loại hình giao tiếp khác nhau: Giao tiếp một chiều và Giao tiếp hai chiều. + +**Giao tiếp một chiều** xảy ra khi người gửi truyền thông tin đến người nhận mà không có bất kỳ phản hồi hay hồi đáp nào. Chúng ta thấy ví dụ về giao tiếp một chiều hàng ngày – trong các email hàng loạt, khi tin tức truyền tải các câu chuyện mới nhất, hoặc thậm chí khi một quảng cáo truyền hình xuất hiện và giới thiệu lý do tại sao sản phẩm của họ tuyệt vời. Trong mỗi trường hợp này, người gửi không tìm kiếm sự trao đổi thông tin. Họ chỉ muốn truyền đạt hoặc cung cấp thông tin. + +**Giao tiếp hai chiều** xảy ra khi tất cả các bên tham gia đều đóng vai trò là người gửi và người nhận. Một người gửi sẽ bắt đầu bằng cách giao tiếp với một người nhận, và người nhận sẽ cung cấp phản hồi hoặc hồi đáp. Giao tiếp hai chiều là điều chúng ta thường nghĩ đến khi nói về giao tiếp. Chúng ta thường nghĩ đến những người tham gia vào một cuộc trò chuyện – trực tiếp, qua điện thoại, mạng xã hội, hoặc tin nhắn. + +Khi giao tiếp dữ liệu, sẽ có những trường hợp bạn sử dụng giao tiếp một chiều (hãy nghĩ đến việc thuyết trình tại một hội nghị, hoặc trước một nhóm lớn mà không có câu hỏi trực tiếp sau đó) và cũng sẽ có những trường hợp bạn sử dụng giao tiếp hai chiều (hãy nghĩ đến việc sử dụng dữ liệu để thuyết phục một số bên liên quan hoặc để thuyết phục đồng đội rằng nên dành thời gian và công sức để xây dựng một điều gì đó mới). + +# Giao tiếp hiệu quả + +### Trách nhiệm của bạn với tư cách là người giao tiếp +Khi giao tiếp, nhiệm vụ của bạn là đảm bảo rằng người nhận của bạn tiếp nhận được thông tin mà bạn muốn họ tiếp nhận. Khi bạn giao tiếp dữ liệu, bạn không chỉ muốn người nhận tiếp nhận các con số, mà bạn muốn họ tiếp nhận một câu chuyện được định hình bởi dữ liệu của bạn. Một người giao tiếp dữ liệu giỏi là một người kể chuyện giỏi. + +Làm thế nào để bạn kể một câu chuyện với dữ liệu? Có vô số cách – nhưng dưới đây là 6 cách mà chúng ta sẽ thảo luận trong bài học này. +1. Hiểu khán giả, kênh giao tiếp và phương pháp giao tiếp của bạn +2. Bắt đầu với kết quả cuối cùng trong tâm trí +3. Tiếp cận như một câu chuyện thực sự +4. Sử dụng từ ngữ và cụm từ có ý nghĩa +5. Sử dụng cảm xúc + +Mỗi chiến lược này sẽ được giải thích chi tiết hơn dưới đây. + +### 1. Hiểu khán giả, kênh giao tiếp và phương pháp giao tiếp của bạn +Cách bạn giao tiếp với các thành viên trong gia đình có thể khác với cách bạn giao tiếp với bạn bè. Bạn có thể sử dụng các từ ngữ và cụm từ khác nhau mà những người bạn đang nói chuyện có khả năng hiểu hơn. Bạn nên áp dụng cách tiếp cận tương tự khi giao tiếp dữ liệu. Hãy nghĩ về người mà bạn đang giao tiếp. Hãy nghĩ về mục tiêu của họ và bối cảnh mà họ có liên quan đến tình huống mà bạn đang giải thích. + +Bạn có thể nhóm phần lớn khán giả của mình vào một danh mục. Trong một bài viết của _Harvard Business Review_, “[How to Tell a Story with Data](http://blogs.hbr.org/2013/04/how-to-tell-a-story-with-data/)” (Cách kể một câu chuyện với dữ liệu), Jim Stikeleather, Chiến lược gia Điều hành của Dell, đã xác định năm danh mục khán giả. + +- **Người mới**: lần đầu tiếp xúc với chủ đề, nhưng không muốn bị đơn giản hóa quá mức +- **Người tổng quát**: nhận thức về chủ đề, nhưng tìm kiếm sự hiểu biết tổng quan và các chủ đề chính +- **Quản lý**: hiểu biết sâu sắc, có thể hành động về các chi tiết phức tạp và mối quan hệ với quyền truy cập vào chi tiết +- **Chuyên gia**: tìm kiếm sự khám phá và khám phá nhiều hơn, ít kể chuyện hơn với chi tiết lớn +- **Lãnh đạo**: chỉ có thời gian để nắm bắt ý nghĩa và kết luận của các xác suất có trọng số + +Những danh mục này có thể định hình cách bạn trình bày dữ liệu cho khán giả của mình. + +Ngoài việc nghĩ về danh mục khán giả của bạn, bạn cũng nên xem xét kênh mà bạn đang sử dụng để giao tiếp với họ. Cách tiếp cận của bạn nên hơi khác nếu bạn đang viết một bản ghi nhớ hoặc email so với khi bạn có một cuộc họp hoặc thuyết trình tại một hội nghị. + +Bên cạnh việc hiểu khán giả, biết cách bạn sẽ giao tiếp với họ (sử dụng giao tiếp một chiều hay hai chiều) cũng rất quan trọng. + +Nếu bạn đang giao tiếp với phần lớn khán giả là Người mới và bạn đang sử dụng giao tiếp một chiều, bạn phải giáo dục khán giả trước và cung cấp cho họ bối cảnh phù hợp. Sau đó, bạn phải trình bày dữ liệu của mình và giải thích ý nghĩa của nó và tại sao nó quan trọng. Trong trường hợp này, bạn có thể muốn tập trung vào việc làm rõ ràng, vì khán giả của bạn sẽ không thể đặt câu hỏi trực tiếp. + +Nếu bạn đang giao tiếp với phần lớn khán giả là Quản lý và bạn đang sử dụng giao tiếp hai chiều, bạn có thể không cần phải giáo dục khán giả hoặc cung cấp cho họ nhiều bối cảnh. Bạn có thể đi thẳng vào việc thảo luận về dữ liệu mà bạn đã thu thập và tại sao nó quan trọng. Trong trường hợp này, bạn nên tập trung vào thời gian và kiểm soát bài thuyết trình của mình. Khi sử dụng giao tiếp hai chiều (đặc biệt với khán giả Quản lý đang tìm kiếm "sự hiểu biết có thể hành động về các chi tiết phức tạp và mối quan hệ"), các câu hỏi có thể xuất hiện trong quá trình tương tác của bạn và có thể đưa cuộc thảo luận đi theo hướng không liên quan đến câu chuyện mà bạn đang cố gắng kể. Khi điều này xảy ra, bạn có thể hành động và đưa cuộc thảo luận trở lại đúng hướng với câu chuyện của mình. + +### 2. Bắt đầu với kết quả cuối cùng trong tâm trí +Bắt đầu với kết quả cuối cùng trong tâm trí có nghĩa là hiểu rõ những điều bạn muốn khán giả tiếp nhận trước khi bạn bắt đầu giao tiếp với họ. Suy nghĩ cẩn thận về những điều bạn muốn khán giả tiếp nhận trước có thể giúp bạn xây dựng một câu chuyện mà khán giả có thể theo dõi. Bắt đầu với kết quả cuối cùng trong tâm trí phù hợp cho cả giao tiếp một chiều và hai chiều. + +Làm thế nào để bạn bắt đầu với kết quả cuối cùng trong tâm trí? Trước khi giao tiếp dữ liệu của bạn, hãy viết ra những điều quan trọng mà bạn muốn khán giả tiếp nhận. Sau đó, trong từng bước khi bạn chuẩn bị câu chuyện mà bạn muốn kể với dữ liệu của mình, hãy tự hỏi, "Điều này tích hợp vào câu chuyện mà tôi đang kể như thế nào?" + +Hãy lưu ý – Mặc dù bắt đầu với kết quả cuối cùng trong tâm trí là lý tưởng, bạn không nên chỉ giao tiếp dữ liệu hỗ trợ những điều bạn muốn khán giả tiếp nhận. Làm điều này được gọi là "chọn lọc dữ liệu", xảy ra khi một người giao tiếp chỉ truyền đạt dữ liệu hỗ trợ quan điểm của họ và bỏ qua tất cả các dữ liệu khác. + +Nếu tất cả dữ liệu bạn thu thập rõ ràng hỗ trợ những điều bạn muốn khán giả tiếp nhận, thật tuyệt. Nhưng nếu có dữ liệu bạn thu thập không hỗ trợ những điều đó, hoặc thậm chí hỗ trợ một lập luận chống lại những điều quan trọng của bạn, bạn cũng nên truyền đạt dữ liệu đó. Nếu điều này xảy ra, hãy thẳng thắn với khán giả của bạn và cho họ biết lý do bạn chọn tiếp tục với câu chuyện của mình mặc dù không phải tất cả dữ liệu đều hỗ trợ nó. + +### 3. Tiếp cận như một câu chuyện thực sự +Một câu chuyện truyền thống diễn ra qua 5 giai đoạn. Bạn có thể đã nghe những giai đoạn này được diễn đạt như Mở đầu, Hành động tăng dần, Cao trào, Hành động giảm dần, và Kết thúc. Hoặc dễ nhớ hơn là Bối cảnh, Xung đột, Cao trào, Kết thúc, Kết luận. Khi giao tiếp dữ liệu và câu chuyện của bạn, bạn có thể áp dụng cách tiếp cận tương tự. + +Bạn có thể bắt đầu với bối cảnh, thiết lập sân khấu và đảm bảo khán giả của bạn đều hiểu rõ. Sau đó giới thiệu xung đột. Tại sao bạn cần thu thập dữ liệu này? Những vấn đề nào bạn đang cố gắng giải quyết? Tiếp theo là cao trào. Dữ liệu là gì? Dữ liệu có ý nghĩa gì? Những giải pháp nào dữ liệu cho thấy chúng ta cần? Sau đó, bạn đến phần kết thúc, nơi bạn có thể nhắc lại vấn đề và giải pháp được đề xuất. Cuối cùng, chúng ta đến phần kết luận, nơi bạn có thể tóm tắt những điều quan trọng và các bước tiếp theo mà bạn đề xuất nhóm thực hiện. + +### 4. Sử dụng từ ngữ và cụm từ có ý nghĩa +Nếu bạn và tôi đang làm việc cùng nhau trên một sản phẩm, và tôi nói với bạn "Người dùng của chúng ta mất nhiều thời gian để đăng ký trên nền tảng của chúng ta," bạn sẽ ước tính "nhiều thời gian" là bao lâu? Một giờ? Một tuần? Thật khó để biết. Nếu tôi nói điều đó với cả một khán giả thì sao? Mỗi người trong khán giả có thể có một ý tưởng khác nhau về việc người dùng mất bao lâu để đăng ký trên nền tảng của chúng ta. + +Thay vào đó, nếu tôi nói "Người dùng của chúng ta mất trung bình 3 phút để đăng ký và hoàn tất trên nền tảng của chúng ta." + +Thông điệp đó rõ ràng hơn. Khi giao tiếp dữ liệu, có thể dễ dàng nghĩ rằng mọi người trong khán giả đều suy nghĩ giống bạn. Nhưng điều đó không phải lúc nào cũng đúng. Làm rõ dữ liệu của bạn và ý nghĩa của nó là một trong những trách nhiệm của bạn với tư cách là người giao tiếp. Nếu dữ liệu hoặc câu chuyện của bạn không rõ ràng, khán giả của bạn sẽ gặp khó khăn trong việc theo dõi, và khả năng họ hiểu những điều quan trọng của bạn sẽ giảm đi. + +Bạn có thể giao tiếp dữ liệu rõ ràng hơn khi sử dụng từ ngữ và cụm từ có ý nghĩa, thay vì những từ ngữ mơ hồ. Dưới đây là một vài ví dụ. + +- Chúng ta đã có một năm *ấn tượng*! + - Một người có thể nghĩ rằng ấn tượng có nghĩa là tăng 2% - 3% doanh thu, và một người khác có thể nghĩ rằng nó có nghĩa là tăng 50% - 60%. +- Tỷ lệ thành công của người dùng của chúng ta đã tăng *đáng kể*. + - Tăng bao nhiêu là đáng kể? +- Dự án này sẽ đòi hỏi nỗ lực *đáng kể*. + - Bao nhiêu nỗ lực là đáng kể? + +Sử dụng từ ngữ mơ hồ có thể hữu ích như một phần giới thiệu cho dữ liệu sắp tới, hoặc như một bản tóm tắt câu chuyện mà bạn vừa kể. Nhưng hãy cân nhắc đảm bảo rằng mọi phần trong bài thuyết trình của bạn đều rõ ràng cho khán giả. + +### 5. Sử dụng cảm xúc +Cảm xúc là yếu tố quan trọng trong kể chuyện. Nó thậm chí còn quan trọng hơn khi bạn kể một câu chuyện với dữ liệu. Khi bạn giao tiếp dữ liệu, mọi thứ đều tập trung vào những điều bạn muốn khán giả tiếp nhận. Khi bạn khơi gợi cảm xúc cho khán giả, điều đó giúp họ đồng cảm và làm tăng khả năng họ sẽ hành động. Cảm xúc cũng làm tăng khả năng khán giả sẽ nhớ thông điệp của bạn. + +Bạn có thể đã gặp điều này trước đây với các quảng cáo trên TV. Một số quảng cáo rất nghiêm túc và sử dụng cảm xúc buồn để kết nối với khán giả và làm nổi bật dữ liệu mà họ đang trình bày. Hoặc, một số quảng cáo rất vui vẻ và hạnh phúc có thể khiến bạn liên kết dữ liệu của họ với một cảm giác vui vẻ. + +Làm thế nào để bạn sử dụng cảm xúc khi giao tiếp dữ liệu? Dưới đây là một vài cách. + +- Sử dụng lời chứng thực và câu chuyện cá nhân + - Khi thu thập dữ liệu, hãy cố gắng thu thập cả dữ liệu định lượng và định tính, và tích hợp cả hai loại dữ liệu khi bạn giao tiếp. Nếu dữ liệu của bạn chủ yếu là định lượng, hãy tìm kiếm các câu chuyện từ cá nhân để hiểu thêm về trải nghiệm của họ với những gì dữ liệu của bạn đang nói. +- Sử dụng hình ảnh + - Hình ảnh giúp khán giả nhìn thấy chính họ trong một tình huống. Khi bạn sử dụng hình ảnh, bạn có thể hướng khán giả đến cảm xúc mà bạn cảm thấy họ nên có về dữ liệu của bạn. +- Sử dụng màu sắc + - Các màu sắc khác nhau khơi gợi các cảm xúc khác nhau. Các màu sắc phổ biến và cảm xúc mà chúng khơi gợi được liệt kê dưới đây. Hãy lưu ý rằng màu sắc có thể mang ý nghĩa khác nhau trong các nền văn hóa khác nhau. + - Màu xanh thường khơi gợi cảm xúc yên bình và tin tưởng + - Màu xanh lá thường liên quan đến thiên nhiên và môi trường + - Màu đỏ thường là đam mê và phấn khích + - Màu vàng thường là lạc quan và hạnh phúc + +# Nghiên cứu tình huống về giao tiếp +Emerson là một Quản lý Sản phẩm cho một ứng dụng di động. Emerson nhận thấy rằng khách hàng gửi nhiều khiếu nại và báo cáo lỗi hơn 42% vào cuối tuần. Emerson cũng nhận thấy rằng khách hàng gửi khiếu nại không được trả lời sau 48 giờ có khả năng đánh giá ứng dụng 1 hoặc 2 sao trên cửa hàng ứng dụng cao hơn 32%. + +Sau khi nghiên cứu, Emerson có một vài giải pháp để giải quyết vấn đề. Emerson tổ chức một cuộc họp kéo dài 30 phút với 3 lãnh đạo công ty để truyền đạt dữ liệu và các giải pháp được đề xuất. + +Trong cuộc họp này, mục tiêu của Emerson là để các lãnh đạo công ty hiểu rằng 2 giải pháp dưới đây có thể cải thiện xếp hạng của ứng dụng, điều này có thể dẫn đến doanh thu cao hơn. + +**Giải pháp 1.** Thuê nhân viên dịch vụ khách hàng làm việc vào cuối tuần + +**Giải pháp 2.** Mua một hệ thống quản lý khiếu nại mới, nơi nhân viên dịch vụ khách hàng có thể dễ dàng xác định các khiếu nại đã nằm trong hàng đợi lâu nhất – để họ biết nên giải quyết cái nào ngay lập tức. +Trong cuộc họp, Emerson dành 5 phút để giải thích tại sao việc có đánh giá thấp trên cửa hàng ứng dụng là không tốt, 10 phút để trình bày quy trình nghiên cứu và cách các xu hướng được xác định, 10 phút để xem xét một số khiếu nại gần đây của khách hàng, và 5 phút cuối cùng để lướt qua 2 giải pháp tiềm năng. + +Liệu đây có phải là cách hiệu quả để Emerson truyền đạt thông tin trong cuộc họp này không? + +Trong cuộc họp, một trưởng nhóm của công ty tập trung vào 10 phút khiếu nại của khách hàng mà Emerson đã trình bày. Sau cuộc họp, những khiếu nại này là điều duy nhất mà trưởng nhóm này nhớ. Một trưởng nhóm khác chủ yếu tập trung vào việc Emerson mô tả quy trình nghiên cứu. Trưởng nhóm thứ ba có nhớ các giải pháp mà Emerson đề xuất nhưng không chắc chắn cách những giải pháp đó có thể được triển khai. + +Trong tình huống trên, bạn có thể thấy rằng có một khoảng cách đáng kể giữa những gì Emerson muốn các trưởng nhóm tiếp thu và những gì họ thực sự tiếp thu từ cuộc họp. Dưới đây là một cách tiếp cận khác mà Emerson có thể cân nhắc. + +Làm thế nào Emerson có thể cải thiện cách tiếp cận này? +Bối cảnh, Xung đột, Cao trào, Kết thúc, Kết luận +**Bối cảnh** - Emerson có thể dành 5 phút đầu tiên để giới thiệu toàn bộ tình huống và đảm bảo rằng các trưởng nhóm hiểu cách các vấn đề ảnh hưởng đến các chỉ số quan trọng đối với công ty, như doanh thu. + +Có thể trình bày như sau: "Hiện tại, xếp hạng của ứng dụng chúng ta trên cửa hàng ứng dụng là 2.5. Xếp hạng trên cửa hàng ứng dụng rất quan trọng đối với Tối ưu hóa Cửa hàng Ứng dụng, điều này ảnh hưởng đến số lượng người dùng nhìn thấy ứng dụng của chúng ta trong tìm kiếm, và cách ứng dụng của chúng ta được nhìn nhận bởi người dùng tiềm năng. Và tất nhiên, số lượng người dùng chúng ta có liên quan trực tiếp đến doanh thu." + +**Xung đột** Emerson sau đó có thể dành khoảng 5 phút để nói về xung đột. + +Có thể trình bày như sau: “Người dùng gửi khiếu nại và báo cáo lỗi nhiều hơn 42% vào cuối tuần. Khách hàng gửi khiếu nại mà không được trả lời sau 48 giờ có khả năng thấp hơn 32% để đánh giá ứng dụng của chúng ta trên mức 2 trong cửa hàng ứng dụng. Cải thiện xếp hạng ứng dụng của chúng ta trên cửa hàng ứng dụng lên mức 4 sẽ cải thiện khả năng hiển thị từ 20-30%, mà tôi dự đoán sẽ tăng doanh thu lên 10%." Tất nhiên, Emerson nên chuẩn bị để giải thích các con số này. + +**Cao trào** Sau khi đặt nền tảng, Emerson có thể chuyển sang phần Cao trào trong khoảng 5 phút. + +Emerson có thể giới thiệu các giải pháp đề xuất, trình bày cách các giải pháp này sẽ giải quyết các vấn đề đã nêu, cách các giải pháp này có thể được tích hợp vào quy trình làm việc hiện tại, chi phí của các giải pháp, ROI của các giải pháp, và thậm chí có thể hiển thị một số ảnh chụp màn hình hoặc bản phác thảo về cách các giải pháp sẽ trông như thế nào nếu được triển khai. Emerson cũng có thể chia sẻ các lời chứng thực từ người dùng đã phải chờ hơn 48 giờ để khiếu nại của họ được giải quyết, và thậm chí một lời chứng thực từ một đại diện dịch vụ khách hàng hiện tại trong công ty, người có ý kiến về hệ thống xử lý vé hiện tại. + +**Kết thúc** Bây giờ Emerson có thể dành 5 phút để nhắc lại các vấn đề mà công ty đang đối mặt, xem lại các giải pháp đề xuất, và ôn lại lý do tại sao những giải pháp đó là phù hợp. + +**Kết luận** Vì đây là một cuộc họp với một vài bên liên quan, nơi giao tiếp hai chiều sẽ được sử dụng, Emerson có thể lên kế hoạch dành 10 phút để trả lời câu hỏi, nhằm đảm bảo rằng bất kỳ điều gì gây nhầm lẫn cho các trưởng nhóm đều được làm rõ trước khi cuộc họp kết thúc. + +Nếu Emerson áp dụng cách tiếp cận thứ hai, rất có khả năng các trưởng nhóm sẽ tiếp thu từ cuộc họp đúng những gì Emerson muốn họ tiếp thu – rằng cách xử lý khiếu nại và lỗi có thể được cải thiện, và có 2 giải pháp có thể được triển khai để thực hiện sự cải thiện đó. Cách tiếp cận này sẽ là một cách hiệu quả hơn để truyền đạt dữ liệu và câu chuyện mà Emerson muốn truyền tải. + +# Kết luận +### Tóm tắt các điểm chính +- Giao tiếp là truyền đạt hoặc trao đổi thông tin. +- Khi truyền đạt dữ liệu, mục tiêu của bạn không nên chỉ là truyền tải các con số đến khán giả. Mục tiêu của bạn nên là truyền tải một câu chuyện được thông tin bởi dữ liệu của bạn. +- Có 2 loại giao tiếp, Giao tiếp Một Chiều (thông tin được truyền đạt mà không có ý định nhận phản hồi) và Giao tiếp Hai Chiều (thông tin được truyền đạt qua lại). +- Có nhiều chiến lược bạn có thể sử dụng để kể một câu chuyện với dữ liệu của mình, 5 chiến lược chúng ta đã thảo luận là: + - Hiểu Khán Giả, Phương Tiện, & Phương Pháp Giao Tiếp của Bạn + - Bắt đầu với Kết Quả trong Tâm Trí + - Tiếp cận như một Câu Chuyện Thực Sự + - Sử dụng Từ Ngữ & Cụm Từ Có Ý Nghĩa + - Sử dụng Cảm Xúc + +### Tài nguyên khuyến nghị để tự học +[The Five C's of Storytelling - Articulate Persuasion](http://articulatepersuasion.com/the-five-cs-of-storytelling/) + +[1.4 Your Responsibilities as a Communicator – Business Communication for Success (umn.edu)](https://open.lib.umn.edu/businesscommunication/chapter/1-4-your-responsibilities-as-a-communicator/) + +[How to Tell a Story with Data (hbr.org)](https://hbr.org/2013/04/how-to-tell-a-story-with-data) + +[Two-Way Communication: 4 Tips for a More Engaged Workplace (yourthoughtpartner.com)](https://www.yourthoughtpartner.com/blog/bid/59576/4-steps-to-increase-employee-engagement-through-two-way-communication) + +[6 succinct steps to great data storytelling - BarnRaisers, LLC (barnraisersllc.com)](https://barnraisersllc.com/2021/05/02/6-succinct-steps-to-great-data-storytelling/) + +[How to Tell a Story With Data | Lucidchart Blog](https://www.lucidchart.com/blog/how-to-tell-a-story-with-data) + +[6 Cs of Effective Storytelling on Social Media | Cooler Insights](https://coolerinsights.com/2018/06/effective-storytelling-social-media/) + +[The Importance of Emotions In Presentations | Ethos3 - A Presentation Training and Design Agency](https://ethos3.com/2015/02/the-importance-of-emotions-in-presentations/) + +[Data storytelling: linking emotions and rational decisions (toucantoco.com)](https://www.toucantoco.com/en/blog/data-storytelling-dataviz) + +[Emotional Advertising: How Brands Use Feelings to Get People to Buy (hubspot.com)](https://blog.hubspot.com/marketing/emotions-in-advertising-examples) + +[Choosing Colors for Your Presentation Slides | Think Outside The Slide](https://www.thinkoutsidetheslide.com/choosing-colors-for-your-presentation-slides/) + +[How To Present Data [10 Expert Tips] | ObservePoint](https://resources.observepoint.com/blog/10-tips-for-presenting-data) + +[Microsoft Word - Persuasive Instructions.doc (tpsnva.org)](https://www.tpsnva.org/teach/lq/016/persinstr.pdf) + +[The Power of Story for Your Data (thinkhdi.com)](https://www.thinkhdi.com/library/supportworld/2019/power-story-your-data.aspx) + +[Common Mistakes in Data Presentation (perceptualedge.com)](https://www.perceptualedge.com/articles/ie/data_presentation.pdf) + +[Infographic: Here are 15 Common Data Fallacies to Avoid (visualcapitalist.com)](https://www.visualcapitalist.com/here-are-15-common-data-fallacies-to-avoid/) + +[Cherry Picking: When People Ignore Evidence that They Dislike – Effectiviology](https://effectiviology.com/cherry-picking/#How_to_avoid_cherry_picking) + +[Tell Stories with Data: Communication in Data Science | by Sonali Verghese | Towards Data Science](https://towardsdatascience.com/tell-stories-with-data-communication-in-data-science-5266f7671d7) + +[1. Communicating Data - Communicating Data with Tableau [Book] (oreilly.com)](https://www.oreilly.com/library/view/communicating-data-with/9781449372019/ch01.html) + +## [Post-Lecture Quiz](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/31) + +Ôn lại những gì bạn vừa học với bài kiểm tra sau bài giảng ở trên! + +## Bài tập + +[Market Research](assignment.md) + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc sự không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tham khảo chính thức. Đối với các thông tin quan trọng, chúng tôi khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/4-Data-Science-Lifecycle/16-communication/assignment.md b/translations/vi/4-Data-Science-Lifecycle/16-communication/assignment.md new file mode 100644 index 00000000..3cd22e55 --- /dev/null +++ b/translations/vi/4-Data-Science-Lifecycle/16-communication/assignment.md @@ -0,0 +1,26 @@ + +# Kể một câu chuyện + +## Hướng dẫn + +Khoa học dữ liệu là về việc kể chuyện. Hãy chọn bất kỳ tập dữ liệu nào và viết một bài luận ngắn về câu chuyện mà bạn có thể kể từ nó. Bạn hy vọng tập dữ liệu của mình sẽ tiết lộ điều gì? Bạn sẽ làm gì nếu những tiết lộ đó gây ra vấn đề? Điều gì sẽ xảy ra nếu dữ liệu của bạn không dễ dàng tiết lộ bí mật của nó? Hãy nghĩ đến các kịch bản mà tập dữ liệu của bạn có thể đưa ra và viết chúng ra. + +## Tiêu chí đánh giá + +Xuất sắc | Đạt yêu cầu | Cần cải thiện +--- | --- | --- | + +Một bài luận dài một trang được trình bày ở định dạng .doc với tập dữ liệu được giải thích, ghi chú, ghi nguồn và một câu chuyện mạch lạc được trình bày về nó với các ví dụ chi tiết từ dữ liệu. | Một bài luận ngắn hơn được trình bày với ít chi tiết hơn | Bài luận thiếu một trong các chi tiết trên. + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/4-Data-Science-Lifecycle/README.md b/translations/vi/4-Data-Science-Lifecycle/README.md new file mode 100644 index 00000000..38a92c81 --- /dev/null +++ b/translations/vi/4-Data-Science-Lifecycle/README.md @@ -0,0 +1,30 @@ + +# Vòng đời Khoa học Dữ liệu + +![communication](../../../translated_images/communication.06d8e2a88d30d168d661ad9f9f0a4f947ebff3719719cfdaf9ed00a406a01ead.vi.jpg) +> Ảnh của Headway trên Unsplash + +Trong các bài học này, bạn sẽ khám phá một số khía cạnh của vòng đời Khoa học Dữ liệu, bao gồm phân tích và giao tiếp xoay quanh dữ liệu. + +### Chủ đề + +1. [Giới thiệu](14-Introduction/README.md) +2. [Phân tích](15-analyzing/README.md) +3. [Giao tiếp](16-communication/README.md) + +### Tín dụng + +Các bài học này được viết với ❤️ bởi [Jalen McGee](https://twitter.com/JalenMCG) và [Jasmine Greenaway](https://twitter.com/paladique) + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tham khảo chính thức. Đối với các thông tin quan trọng, chúng tôi khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/5-Data-Science-In-Cloud/17-Introduction/README.md b/translations/vi/5-Data-Science-In-Cloud/17-Introduction/README.md new file mode 100644 index 00000000..15aea196 --- /dev/null +++ b/translations/vi/5-Data-Science-In-Cloud/17-Introduction/README.md @@ -0,0 +1,114 @@ + +# Giới thiệu về Khoa học Dữ liệu trên Đám mây + +|![ Sketchnote của [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/17-DataScience-Cloud.png)| +|:---:| +| Khoa học Dữ liệu trên Đám mây: Giới thiệu - _Sketchnote của [@nitya](https://twitter.com/nitya)_ | + +Trong bài học này, bạn sẽ tìm hiểu các nguyên tắc cơ bản về Đám mây, sau đó bạn sẽ thấy tại sao việc sử dụng các dịch vụ Đám mây để thực hiện các dự án khoa học dữ liệu lại có thể thú vị đối với bạn. Chúng ta cũng sẽ xem một số ví dụ về các dự án khoa học dữ liệu được thực hiện trên Đám mây. + +## [Câu hỏi trước bài giảng](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/32) + +## Đám mây là gì? + +Đám mây, hay Điện toán Đám mây, là việc cung cấp một loạt các dịch vụ tính toán theo mô hình trả phí theo mức sử dụng, được lưu trữ trên một cơ sở hạ tầng qua internet. Các dịch vụ bao gồm các giải pháp như lưu trữ, cơ sở dữ liệu, mạng, phần mềm, phân tích và các dịch vụ thông minh. + +Chúng ta thường phân biệt Đám mây Công cộng, Đám mây Riêng và Đám mây Lai như sau: + +* Đám mây công cộng: Đám mây công cộng được sở hữu và vận hành bởi một nhà cung cấp dịch vụ đám mây bên thứ ba, cung cấp các tài nguyên tính toán của mình qua Internet cho công chúng. +* Đám mây riêng: Đề cập đến các tài nguyên điện toán đám mây được sử dụng độc quyền bởi một doanh nghiệp hoặc tổ chức duy nhất, với các dịch vụ và cơ sở hạ tầng được duy trì trên một mạng riêng. +* Đám mây lai: Đám mây lai là một hệ thống kết hợp giữa đám mây công cộng và đám mây riêng. Người dùng chọn trung tâm dữ liệu tại chỗ, đồng thời cho phép dữ liệu và ứng dụng chạy trên một hoặc nhiều đám mây công cộng. + +Hầu hết các dịch vụ điện toán đám mây thuộc ba loại chính: Cơ sở hạ tầng như một Dịch vụ (IaaS), Nền tảng như một Dịch vụ (PaaS) và Phần mềm như một Dịch vụ (SaaS). + +* Cơ sở hạ tầng như một Dịch vụ (IaaS): Người dùng thuê cơ sở hạ tầng CNTT như máy chủ và máy ảo (VMs), lưu trữ, mạng, hệ điều hành. +* Nền tảng như một Dịch vụ (PaaS): Người dùng thuê một môi trường để phát triển, kiểm thử, triển khai và quản lý các ứng dụng phần mềm. Người dùng không cần lo lắng về việc thiết lập hoặc quản lý cơ sở hạ tầng cơ bản của máy chủ, lưu trữ, mạng và cơ sở dữ liệu cần thiết cho việc phát triển. +* Phần mềm như một Dịch vụ (SaaS): Người dùng truy cập các ứng dụng phần mềm qua Internet, theo yêu cầu và thường theo hình thức đăng ký. Người dùng không cần lo lắng về việc lưu trữ và quản lý ứng dụng phần mềm, cơ sở hạ tầng cơ bản hoặc bảo trì, như nâng cấp phần mềm và vá lỗi bảo mật. + +Một số nhà cung cấp Đám mây lớn nhất là Amazon Web Services, Google Cloud Platform và Microsoft Azure. + +## Tại sao chọn Đám mây cho Khoa học Dữ liệu? + +Các nhà phát triển và chuyên gia CNTT chọn làm việc với Đám mây vì nhiều lý do, bao gồm: + +* Đổi mới: Bạn có thể tăng cường ứng dụng của mình bằng cách tích hợp các dịch vụ sáng tạo do các nhà cung cấp Đám mây tạo ra trực tiếp vào ứng dụng của bạn. +* Linh hoạt: Bạn chỉ trả tiền cho các dịch vụ mà bạn cần và có thể chọn từ một loạt các dịch vụ. Bạn thường trả phí theo mức sử dụng và điều chỉnh dịch vụ theo nhu cầu thay đổi của mình. +* Ngân sách: Bạn không cần đầu tư ban đầu để mua phần cứng và phần mềm, thiết lập và vận hành trung tâm dữ liệu tại chỗ, và bạn chỉ cần trả tiền cho những gì bạn sử dụng. +* Khả năng mở rộng: Tài nguyên của bạn có thể mở rộng theo nhu cầu của dự án, nghĩa là ứng dụng của bạn có thể sử dụng nhiều hoặc ít sức mạnh tính toán, lưu trữ và băng thông, bằng cách thích ứng với các yếu tố bên ngoài tại bất kỳ thời điểm nào. +* Năng suất: Bạn có thể tập trung vào công việc kinh doanh của mình thay vì dành thời gian cho các nhiệm vụ có thể được quản lý bởi người khác, chẳng hạn như quản lý trung tâm dữ liệu. +* Độ tin cậy: Điện toán Đám mây cung cấp nhiều cách để liên tục sao lưu dữ liệu của bạn và bạn có thể thiết lập các kế hoạch khôi phục thảm họa để duy trì hoạt động kinh doanh và dịch vụ của mình, ngay cả trong thời kỳ khủng hoảng. +* Bảo mật: Bạn có thể hưởng lợi từ các chính sách, công nghệ và kiểm soát giúp tăng cường bảo mật cho dự án của mình. + +Đây là một số lý do phổ biến nhất khiến mọi người chọn sử dụng các dịch vụ Đám mây. Bây giờ chúng ta đã hiểu rõ hơn về Đám mây và những lợi ích chính của nó, hãy xem xét cụ thể công việc của các nhà khoa học dữ liệu và nhà phát triển làm việc với dữ liệu, và cách Đám mây có thể giúp họ giải quyết một số thách thức mà họ có thể gặp phải: + +* Lưu trữ lượng lớn dữ liệu: Thay vì mua, quản lý và bảo vệ các máy chủ lớn, bạn có thể lưu trữ dữ liệu của mình trực tiếp trên đám mây, với các giải pháp như Azure Cosmos DB, Azure SQL Database và Azure Data Lake Storage. +* Thực hiện tích hợp dữ liệu: Tích hợp dữ liệu là một phần thiết yếu của Khoa học Dữ liệu, cho phép bạn chuyển từ việc thu thập dữ liệu sang hành động. Với các dịch vụ tích hợp dữ liệu được cung cấp trên đám mây, bạn có thể thu thập, chuyển đổi và tích hợp dữ liệu từ nhiều nguồn vào một kho dữ liệu duy nhất, với Data Factory. +* Xử lý dữ liệu: Xử lý lượng lớn dữ liệu đòi hỏi rất nhiều sức mạnh tính toán, và không phải ai cũng có quyền truy cập vào các máy đủ mạnh cho việc đó, đó là lý do tại sao nhiều người chọn tận dụng sức mạnh tính toán khổng lồ của đám mây để chạy và triển khai các giải pháp của họ. +* Sử dụng các dịch vụ phân tích dữ liệu: Các dịch vụ đám mây như Azure Synapse Analytics, Azure Stream Analytics và Azure Databricks giúp bạn biến dữ liệu thành những thông tin có thể hành động. +* Sử dụng các dịch vụ học máy và trí tuệ dữ liệu: Thay vì bắt đầu từ đầu, bạn có thể sử dụng các thuật toán học máy được cung cấp bởi nhà cung cấp đám mây, với các dịch vụ như AzureML. Bạn cũng có thể sử dụng các dịch vụ nhận thức như chuyển đổi giọng nói thành văn bản, văn bản thành giọng nói, thị giác máy tính và nhiều hơn nữa. + +## Ví dụ về Khoa học Dữ liệu trên Đám mây + +Hãy làm cho điều này trở nên cụ thể hơn bằng cách xem xét một vài kịch bản. + +### Phân tích cảm xúc mạng xã hội theo thời gian thực +Chúng ta sẽ bắt đầu với một kịch bản thường được nghiên cứu bởi những người mới bắt đầu học máy: phân tích cảm xúc mạng xã hội theo thời gian thực. + +Giả sử bạn điều hành một trang web tin tức và muốn tận dụng dữ liệu trực tiếp để hiểu nội dung mà độc giả của bạn có thể quan tâm. Để biết thêm về điều đó, bạn có thể xây dựng một chương trình thực hiện phân tích cảm xúc theo thời gian thực từ dữ liệu các bài đăng trên Twitter, về các chủ đề liên quan đến độc giả của bạn. + +Các chỉ số chính mà bạn sẽ xem xét là số lượng tweet về các chủ đề cụ thể (hashtag) và cảm xúc, được xác định bằng các công cụ phân tích thực hiện phân tích cảm xúc xung quanh các chủ đề được chỉ định. + +Các bước cần thiết để tạo dự án này như sau: + +* Tạo một trung tâm sự kiện để thu thập dữ liệu đầu vào, sẽ thu thập dữ liệu từ Twitter. +* Cấu hình và khởi động một ứng dụng khách Twitter, sẽ gọi các API Streaming của Twitter. +* Tạo một công việc Stream Analytics. +* Xác định đầu vào và truy vấn của công việc. +* Tạo một nơi lưu trữ đầu ra và xác định đầu ra của công việc. +* Khởi động công việc. + +Để xem toàn bộ quy trình, hãy tham khảo [tài liệu](https://docs.microsoft.com/azure/stream-analytics/stream-analytics-twitter-sentiment-analysis-trends?WT.mc_id=academic-77958-bethanycheum&ocid=AID30411099). + +### Phân tích các bài báo khoa học +Hãy xem một ví dụ khác về một dự án được tạo bởi [Dmitry Soshnikov](http://soshnikov.com), một trong những tác giả của chương trình học này. + +Dmitry đã tạo một công cụ phân tích các bài báo về COVID. Bằng cách xem xét dự án này, bạn sẽ thấy cách bạn có thể tạo một công cụ trích xuất kiến thức từ các bài báo khoa học, thu thập thông tin chi tiết và giúp các nhà nghiên cứu điều hướng qua các bộ sưu tập lớn các bài báo một cách hiệu quả. + +Hãy xem các bước khác nhau được sử dụng cho dự án này: + +* Trích xuất và tiền xử lý thông tin với [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). +* Sử dụng [Azure ML](https://azure.microsoft.com/services/machine-learning?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) để xử lý song song. +* Lưu trữ và truy vấn thông tin với [Cosmos DB](https://azure.microsoft.com/services/cosmos-db?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). +* Tạo bảng điều khiển tương tác để khám phá và trực quan hóa dữ liệu bằng Power BI. + +Để xem toàn bộ quy trình, hãy truy cập [blog của Dmitry](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). + +Như bạn có thể thấy, chúng ta có thể tận dụng các dịch vụ Đám mây theo nhiều cách để thực hiện Khoa học Dữ liệu. + +## Chú thích + +Nguồn: +* https://azure.microsoft.com/overview/what-is-cloud-computing?ocid=AID3041109 +* https://docs.microsoft.com/azure/stream-analytics/stream-analytics-twitter-sentiment-analysis-trends?ocid=AID3041109 +* https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/ + +## Câu hỏi sau bài giảng + +[Câu hỏi sau bài giảng](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/33) + +## Bài tập + +[Nghiên cứu thị trường](assignment.md) + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tham khảo chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/5-Data-Science-In-Cloud/17-Introduction/assignment.md b/translations/vi/5-Data-Science-In-Cloud/17-Introduction/assignment.md new file mode 100644 index 00000000..f9e427f5 --- /dev/null +++ b/translations/vi/5-Data-Science-In-Cloud/17-Introduction/assignment.md @@ -0,0 +1,25 @@ + +# Nghiên cứu Thị trường + +## Hướng dẫn + +Trong bài học này, bạn đã học rằng có một số nhà cung cấp dịch vụ đám mây quan trọng. Hãy thực hiện một nghiên cứu thị trường để khám phá những gì mỗi nhà cung cấp có thể mang lại cho Nhà khoa học Dữ liệu. Các dịch vụ này có tương đương nhau không? Viết một bài luận để mô tả các dịch vụ của ba hoặc nhiều hơn ba nhà cung cấp đám mây này. + +## Tiêu chí đánh giá + +Xuất sắc | Đạt yêu cầu | Cần cải thiện +--- | --- | --- | +Một bài luận dài một trang mô tả các dịch vụ khoa học dữ liệu của ba nhà cung cấp đám mây và phân biệt giữa chúng. | Một bài luận ngắn hơn được trình bày | Một bài luận được trình bày nhưng không hoàn thành phân tích + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tham khảo chính thức. Đối với các thông tin quan trọng, chúng tôi khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/5-Data-Science-In-Cloud/18-Low-Code/README.md b/translations/vi/5-Data-Science-In-Cloud/18-Low-Code/README.md new file mode 100644 index 00000000..c8a06b6f --- /dev/null +++ b/translations/vi/5-Data-Science-In-Cloud/18-Low-Code/README.md @@ -0,0 +1,351 @@ + +# Khoa học Dữ liệu trên Đám mây: Phương pháp "Ít mã/Không mã" + +|![ Sketchnote của [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/18-DataScience-Cloud.png)| +|:---:| +| Khoa học Dữ liệu trên Đám mây: Ít mã - _Sketchnote của [@nitya](https://twitter.com/nitya)_ | + +Mục lục: + +- [Khoa học Dữ liệu trên Đám mây: Phương pháp "Ít mã/Không mã"](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [Câu hỏi trước bài giảng](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [1. Giới thiệu](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [1.1 Azure Machine Learning là gì?](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [1.2 Dự án Dự đoán Suy tim:](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [1.3 Bộ dữ liệu Suy tim:](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [2. Huấn luyện mô hình Ít mã/Không mã trong Azure ML Studio](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [2.1 Tạo một không gian làm việc Azure ML](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [2.2 Tài nguyên tính toán](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [2.2.1 Lựa chọn các tùy chọn phù hợp cho tài nguyên tính toán của bạn](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [2.2.2 Tạo một cụm tính toán](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [2.3 Tải bộ dữ liệu](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [2.4 Huấn luyện Ít mã/Không mã với AutoML](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [3. Triển khai mô hình Ít mã/Không mã và sử dụng endpoint](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [3.1 Triển khai mô hình](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [3.2 Sử dụng endpoint](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [🚀 Thử thách](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [Câu hỏi sau bài giảng](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [Ôn tập & Tự học](../../../../5-Data-Science-In-Cloud/18-Low-Code) + - [Bài tập](../../../../5-Data-Science-In-Cloud/18-Low-Code) + +## [Câu hỏi trước bài giảng](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/34) + +## 1. Giới thiệu + +### 1.1 Azure Machine Learning là gì? + +Nền tảng đám mây Azure bao gồm hơn 200 sản phẩm và dịch vụ đám mây được thiết kế để giúp bạn hiện thực hóa các giải pháp mới. Các nhà khoa học dữ liệu thường dành rất nhiều thời gian để khám phá và xử lý dữ liệu, thử nghiệm các thuật toán huấn luyện mô hình khác nhau để tạo ra các mô hình chính xác. Những công việc này rất tốn thời gian và thường sử dụng không hiệu quả phần cứng tính toán đắt đỏ. + +[Azure ML](https://docs.microsoft.com/azure/machine-learning/overview-what-is-azure-machine-learning?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) là một nền tảng dựa trên đám mây để xây dựng và vận hành các giải pháp học máy trên Azure. Nó bao gồm nhiều tính năng và khả năng giúp các nhà khoa học dữ liệu chuẩn bị dữ liệu, huấn luyện mô hình, xuất bản các dịch vụ dự đoán và giám sát việc sử dụng chúng. Quan trọng nhất, nó giúp tăng hiệu quả bằng cách tự động hóa nhiều công việc tốn thời gian liên quan đến huấn luyện mô hình; và cho phép sử dụng các tài nguyên tính toán dựa trên đám mây có khả năng mở rộng hiệu quả để xử lý khối lượng dữ liệu lớn, chỉ tính phí khi thực sự sử dụng. + +Azure ML cung cấp tất cả các công cụ mà các nhà phát triển và nhà khoa học dữ liệu cần cho quy trình làm việc học máy của họ. Bao gồm: + +- **Azure Machine Learning Studio**: cổng web trong Azure Machine Learning dành cho các tùy chọn ít mã và không mã để huấn luyện mô hình, triển khai, tự động hóa, theo dõi và quản lý tài sản. Studio tích hợp với Azure Machine Learning SDK để mang lại trải nghiệm liền mạch. +- **Jupyter Notebooks**: nhanh chóng tạo mẫu và kiểm tra các mô hình học máy. +- **Azure Machine Learning Designer**: cho phép kéo-thả các module để xây dựng các thí nghiệm và triển khai pipeline trong môi trường ít mã. +- **Giao diện AutoML tự động hóa học máy**: tự động hóa các nhiệm vụ lặp lại trong phát triển mô hình học máy, cho phép xây dựng các mô hình với quy mô lớn, hiệu quả và năng suất cao, đồng thời duy trì chất lượng mô hình. +- **Gắn nhãn dữ liệu**: công cụ học máy hỗ trợ tự động gắn nhãn dữ liệu. +- **Tiện ích mở rộng học máy cho Visual Studio Code**: cung cấp môi trường phát triển đầy đủ tính năng để xây dựng và quản lý các dự án học máy. +- **CLI học máy**: cung cấp các lệnh để quản lý tài nguyên Azure ML từ dòng lệnh. +- **Tích hợp với các framework mã nguồn mở** như PyTorch, TensorFlow, Scikit-learn và nhiều hơn nữa để huấn luyện, triển khai và quản lý quy trình học máy từ đầu đến cuối. +- **MLflow**: thư viện mã nguồn mở để quản lý vòng đời của các thí nghiệm học máy. **MLFlow Tracking** là một thành phần của MLflow giúp ghi lại và theo dõi các chỉ số huấn luyện và các tài sản mô hình, bất kể môi trường của thí nghiệm. + +### 1.2 Dự án Dự đoán Suy tim: + +Không còn nghi ngờ gì rằng việc thực hiện và xây dựng các dự án là cách tốt nhất để kiểm tra kỹ năng và kiến thức của bạn. Trong bài học này, chúng ta sẽ khám phá hai cách khác nhau để xây dựng một dự án khoa học dữ liệu nhằm dự đoán các cơn suy tim trong Azure ML Studio, thông qua phương pháp Ít mã/Không mã và thông qua Azure ML SDK như được minh họa trong sơ đồ sau: + +![project-schema](../../../../translated_images/project-schema.736f6e403f321eb48d10242b3f4334dc6ccf0eabef8ff87daf52b89781389fcb.vi.png) + +Mỗi phương pháp đều có ưu và nhược điểm riêng. Phương pháp Ít mã/Không mã dễ bắt đầu hơn vì nó liên quan đến việc tương tác với giao diện đồ họa (GUI), không yêu cầu kiến thức lập trình trước. Phương pháp này cho phép kiểm tra nhanh tính khả thi của dự án và tạo POC (Bằng chứng về Khái niệm). Tuy nhiên, khi dự án phát triển và cần sẵn sàng cho sản xuất, việc tạo tài nguyên thông qua GUI không còn khả thi. Chúng ta cần tự động hóa mọi thứ bằng lập trình, từ việc tạo tài nguyên đến triển khai mô hình. Đây là lúc việc biết cách sử dụng Azure ML SDK trở nên quan trọng. + +| | Ít mã/Không mã | Azure ML SDK | +|-------------------|----------------|---------------------------| +| Kiến thức lập trình | Không cần thiết | Cần thiết | +| Thời gian phát triển | Nhanh và dễ dàng | Phụ thuộc vào kỹ năng lập trình | +| Sẵn sàng cho sản xuất | Không | Có | + +### 1.3 Bộ dữ liệu Suy tim: + +Các bệnh tim mạch (CVDs) là nguyên nhân gây tử vong hàng đầu trên toàn cầu, chiếm 31% tổng số ca tử vong trên toàn thế giới. Các yếu tố nguy cơ môi trường và hành vi như sử dụng thuốc lá, chế độ ăn uống không lành mạnh và béo phì, thiếu hoạt động thể chất và sử dụng rượu bia có hại có thể được sử dụng làm đặc trưng cho các mô hình ước tính. Việc có thể ước tính xác suất phát triển CVD có thể rất hữu ích để ngăn ngừa các cơn suy tim ở những người có nguy cơ cao. + +Kaggle đã cung cấp một [bộ dữ liệu Suy tim](https://www.kaggle.com/andrewmvd/heart-failure-clinical-data) công khai mà chúng ta sẽ sử dụng cho dự án này. Bạn có thể tải bộ dữ liệu ngay bây giờ. Đây là một bộ dữ liệu dạng bảng với 13 cột (12 đặc trưng và 1 biến mục tiêu) và 299 hàng. + +| | Tên biến | Loại dữ liệu | Mô tả | Ví dụ | +|----|---------------------------|------------------|---------------------------------------------------------|-------------------| +| 1 | age | số | Tuổi của bệnh nhân | 25 | +| 2 | anaemia | boolean | Giảm số lượng hồng cầu hoặc hemoglobin | 0 hoặc 1 | +| 3 | creatinine_phosphokinase | số | Mức độ enzyme CPK trong máu | 542 | +| 4 | diabetes | boolean | Bệnh nhân có bị tiểu đường không | 0 hoặc 1 | +| 5 | ejection_fraction | số | Tỷ lệ máu rời khỏi tim trong mỗi lần co bóp | 45 | +| 6 | high_blood_pressure | boolean | Bệnh nhân có bị cao huyết áp không | 0 hoặc 1 | +| 7 | platelets | số | Số lượng tiểu cầu trong máu | 149000 | +| 8 | serum_creatinine | số | Mức độ creatinine trong huyết thanh | 0.5 | +| 9 | serum_sodium | số | Mức độ natri trong huyết thanh | jun | +| 10 | sex | boolean | Giới tính (nữ hoặc nam) | 0 hoặc 1 | +| 11 | smoking | boolean | Bệnh nhân có hút thuốc không | 0 hoặc 1 | +| 12 | time | số | Thời gian theo dõi (ngày) | 4 | +|----|---------------------------|------------------|---------------------------------------------------------|-------------------| +| 21 | DEATH_EVENT [Mục tiêu] | boolean | Bệnh nhân có tử vong trong thời gian theo dõi không | 0 hoặc 1 | + +Khi bạn đã có bộ dữ liệu, chúng ta có thể bắt đầu dự án trong Azure. + +## 2. Huấn luyện mô hình Ít mã/Không mã trong Azure ML Studio + +### 2.1 Tạo một không gian làm việc Azure ML + +Để huấn luyện một mô hình trong Azure ML, trước tiên bạn cần tạo một không gian làm việc Azure ML. Không gian làm việc là tài nguyên cấp cao nhất cho Azure Machine Learning, cung cấp một nơi tập trung để làm việc với tất cả các tài sản bạn tạo khi sử dụng Azure Machine Learning. Không gian làm việc lưu giữ lịch sử của tất cả các lần huấn luyện, bao gồm nhật ký, chỉ số, đầu ra và ảnh chụp nhanh của các tập lệnh của bạn. Bạn sử dụng thông tin này để xác định lần huấn luyện nào tạo ra mô hình tốt nhất. [Tìm hiểu thêm](https://docs.microsoft.com/azure/machine-learning/concept-workspace?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) + +Nên sử dụng trình duyệt mới nhất tương thích với hệ điều hành của bạn. Các trình duyệt được hỗ trợ bao gồm: + +- Microsoft Edge (phiên bản mới nhất của Microsoft Edge mới. Không phải Microsoft Edge cũ) +- Safari (phiên bản mới nhất, chỉ dành cho Mac) +- Chrome (phiên bản mới nhất) +- Firefox (phiên bản mới nhất) + +Để sử dụng Azure Machine Learning, hãy tạo một không gian làm việc trong đăng ký Azure của bạn. Sau đó, bạn có thể sử dụng không gian làm việc này để quản lý dữ liệu, tài nguyên tính toán, mã, mô hình và các tài sản khác liên quan đến khối lượng công việc học máy của bạn. + +> **_LƯU Ý:_** Đăng ký Azure của bạn sẽ bị tính một khoản phí nhỏ cho việc lưu trữ dữ liệu miễn là không gian làm việc Azure Machine Learning tồn tại trong đăng ký của bạn, vì vậy chúng tôi khuyến nghị bạn xóa không gian làm việc Azure Machine Learning khi không còn sử dụng. + +1. Đăng nhập vào [cổng Azure](https://ms.portal.azure.com/) bằng thông tin đăng nhập Microsoft liên kết với đăng ký Azure của bạn. +2. Chọn **+Tạo tài nguyên** + + ![workspace-1](../../../../translated_images/workspace-1.ac8694d60b073ed1ae8333d71244dc8a9b3e439d54593724f98f1beefdd27b08.vi.png) + + Tìm kiếm Machine Learning và chọn ô Machine Learning + + ![workspace-2](../../../../translated_images/workspace-2.ae7c486db8796147075e4a56566aa819827dd6c4c8d18d64590317c3be625f17.vi.png) + + Nhấp vào nút tạo + + ![workspace-3](../../../../translated_images/workspace-3.398ca4a5858132cce584db9df10c5a011cd9075eb182e647a77d5cac01771eea.vi.png) + + Điền các cài đặt như sau: + - Đăng ký: Đăng ký Azure của bạn + - Nhóm tài nguyên: Tạo hoặc chọn một nhóm tài nguyên + - Tên không gian làm việc: Nhập một tên duy nhất cho không gian làm việc của bạn + - Khu vực: Chọn khu vực địa lý gần bạn nhất + - Tài khoản lưu trữ: Lưu ý tài khoản lưu trữ mới mặc định sẽ được tạo cho không gian làm việc của bạn + - Key vault: Lưu ý key vault mới mặc định sẽ được tạo cho không gian làm việc của bạn + - Application insights: Lưu ý tài nguyên application insights mới mặc định sẽ được tạo cho không gian làm việc của bạn + - Container registry: Không (một cái sẽ được tạo tự động lần đầu tiên bạn triển khai mô hình vào container) + + ![workspace-4](../../../../translated_images/workspace-4.bac87f6599c4df63e624fc2608990f965887bee551d9dedc71c687b43b986b6a.vi.png) + + - Nhấp vào nút tạo + xem lại và sau đó nhấp vào nút tạo +3. Chờ không gian làm việc của bạn được tạo (có thể mất vài phút). Sau đó, truy cập vào nó trong cổng. Bạn có thể tìm thấy nó thông qua dịch vụ Azure Machine Learning. +4. Trên trang Tổng quan của không gian làm việc của bạn, khởi chạy Azure Machine Learning studio (hoặc mở một tab trình duyệt mới và điều hướng đến https://ml.azure.com), và đăng nhập vào Azure Machine Learning studio bằng tài khoản Microsoft của bạn. Nếu được nhắc, chọn thư mục và đăng ký Azure của bạn, và không gian làm việc Azure Machine Learning của bạn. + +![workspace-5](../../../../translated_images/workspace-5.a6eb17e0a5e6420018b08bdaf3755ce977f96f1df3ea363d2476a9dce7e15adb.vi.png) + +5. Trong Azure Machine Learning studio, chuyển đổi biểu tượng ☰ ở góc trên bên trái để xem các trang khác nhau trong giao diện. Bạn có thể sử dụng các trang này để quản lý các tài nguyên trong không gian làm việc của mình. + +![workspace-6](../../../../translated_images/workspace-6.8dd81fe841797ee17f8f73916769576260b16c4e17e850d277a49db35fd74a15.vi.png) + +Bạn có thể quản lý không gian làm việc của mình bằng cổng Azure, nhưng đối với các nhà khoa học dữ liệu và kỹ sư vận hành học máy, Azure Machine Learning Studio cung cấp giao diện người dùng tập trung hơn để quản lý các tài nguyên không gian làm việc. + +### 2.2 Tài nguyên tính toán + +Tài nguyên tính toán là các tài nguyên dựa trên đám mây mà bạn có thể sử dụng để chạy các quy trình huấn luyện mô hình và khám phá dữ liệu. Có bốn loại tài nguyên tính toán bạn có thể tạo: + +- **Compute Instances**: Các máy trạm phát triển mà các nhà khoa học dữ liệu có thể sử dụng để làm việc với dữ liệu và mô hình. Điều này bao gồm việc tạo một Máy ảo (VM) và khởi chạy một phiên bản notebook. Bạn có thể huấn luyện mô hình bằng cách gọi một cụm tính toán từ notebook. +- **Compute Clusters**: Các cụm VM có khả năng mở rộng để xử lý mã thí nghiệm theo yêu cầu. Bạn sẽ cần nó khi huấn luyện mô hình. Các cụm tính toán cũng có thể sử dụng các tài nguyên GPU hoặc CPU chuyên dụng. +- **Inference Clusters**: Các mục tiêu triển khai cho các dịch vụ dự đoán sử dụng mô hình đã huấn luyện của bạn. +- **Attached Compute**: Liên kết với các tài nguyên tính toán Azure hiện có, chẳng hạn như Máy Ảo hoặc các cụm Azure Databricks. + +#### 2.2.1 Lựa chọn các tùy chọn phù hợp cho tài nguyên tính toán của bạn + +Một số yếu tố quan trọng cần xem xét khi tạo tài nguyên tính toán, và những lựa chọn này có thể là các quyết định quan trọng. + +**Bạn cần CPU hay GPU?** + +CPU (Bộ xử lý trung tâm) là mạch điện tử thực hiện các lệnh trong một chương trình máy tính. GPU (Bộ xử lý đồ họa) là một mạch điện tử chuyên dụng có thể thực thi mã liên quan đến đồ họa với tốc độ rất cao. + +Sự khác biệt chính giữa kiến trúc CPU và GPU là CPU được thiết kế để xử lý nhiều loại tác vụ nhanh chóng (được đo bằng tốc độ xung nhịp CPU), nhưng bị giới hạn về mức độ đồng thời của các tác vụ có thể chạy. GPU được thiết kế cho tính toán song song và do đó tốt hơn nhiều trong các tác vụ học sâu. + +| CPU | GPU | +|-----------------------------------------|-----------------------------| +| Ít tốn kém hơn | Đắt đỏ hơn | +| Mức độ đồng thời thấp hơn | Mức độ đồng thời cao hơn | +| Chậm hơn trong việc huấn luyện mô hình học sâu | Tối ưu cho học sâu | + +**Kích thước cụm** + +Cụm lớn hơn sẽ đắt hơn nhưng mang lại khả năng phản hồi tốt hơn. Vì vậy, nếu bạn có thời gian nhưng không đủ tiền, bạn nên bắt đầu với một cụm nhỏ. Ngược lại, nếu bạn có tiền nhưng không có nhiều thời gian, bạn nên bắt đầu với một cụm lớn hơn. + +**Kích thước VM** + +Tùy thuộc vào thời gian và ngân sách của bạn, bạn có thể thay đổi kích thước RAM, ổ đĩa, số lõi và tốc độ xung nhịp. Tăng tất cả các thông số này sẽ tốn kém hơn, nhưng sẽ mang lại hiệu suất tốt hơn. + +**Phiên bản chuyên dụng hay ưu tiên thấp?** + +Phiên bản ưu tiên thấp có nghĩa là có thể bị gián đoạn: về cơ bản, Microsoft Azure có thể lấy các tài nguyên đó và gán chúng cho một tác vụ khác, do đó làm gián đoạn công việc. Phiên bản chuyên dụng, hoặc không bị gián đoạn, có nghĩa là công việc sẽ không bao giờ bị dừng mà không có sự cho phép của bạn. Đây là một cân nhắc khác giữa thời gian và tiền bạc, vì các phiên bản có thể bị gián đoạn rẻ hơn so với các phiên bản chuyên dụng. + +#### 2.2.2 Tạo một cụm tính toán + +Trong [Azure ML workspace](https://ml.azure.com/) mà chúng ta đã tạo trước đó, vào phần Compute và bạn sẽ thấy các tài nguyên tính toán khác nhau mà chúng ta vừa thảo luận (ví dụ: compute instances, compute clusters, inference clusters và attached compute). Đối với dự án này, chúng ta sẽ cần một cụm tính toán để huấn luyện mô hình. Trong Studio, nhấp vào menu "Compute", sau đó tab "Compute cluster" và nhấp vào nút "+ New" để tạo một cụm tính toán. + +![22](../../../../translated_images/cluster-1.b78cb630bb543729b11f60c34d97110a263f8c27b516ba4dc47807b3cee5579f.vi.png) + +1. Chọn các tùy chọn của bạn: Dedicated vs Low priority, CPU hoặc GPU, kích thước VM và số lõi (bạn có thể giữ các cài đặt mặc định cho dự án này). +2. Nhấp vào nút Next. + +![23](../../../../translated_images/cluster-2.ea30cdbc9f926bb9e05af3fdbc1f679811c796dc2a6847f935290aec15526e88.vi.png) + +3. Đặt tên cho cụm tính toán. +4. Chọn các tùy chọn của bạn: Số lượng nút tối thiểu/tối đa, số giây không hoạt động trước khi giảm quy mô, truy cập SSH. Lưu ý rằng nếu số lượng nút tối thiểu là 0, bạn sẽ tiết kiệm tiền khi cụm không hoạt động. Lưu ý rằng số lượng nút tối đa càng cao, thời gian huấn luyện sẽ càng ngắn. Số lượng nút tối đa được khuyến nghị là 3. +5. Nhấp vào nút "Create". Bước này có thể mất vài phút. + +![29](../../../../translated_images/cluster-3.8a334bc070ec173a329ce5abd2a9d727542e83eb2347676c9af20f2c8870b3e7.vi.png) + +Tuyệt vời! Bây giờ chúng ta đã có một cụm tính toán, chúng ta cần tải dữ liệu lên Azure ML Studio. + +### 2.3 Tải dữ liệu + +1. Trong [Azure ML workspace](https://ml.azure.com/) mà chúng ta đã tạo trước đó, nhấp vào "Datasets" trong menu bên trái và nhấp vào nút "+ Create dataset" để tạo một tập dữ liệu. Chọn tùy chọn "From local files" và chọn tập dữ liệu Kaggle mà chúng ta đã tải xuống trước đó. + + ![24](../../../../translated_images/dataset-1.e86ab4e10907a6e9c2a72577b51db35f13689cb33702337b8b7032f2ef76dac2.vi.png) + +2. Đặt tên, loại và mô tả cho tập dữ liệu của bạn. Nhấp Next. Tải dữ liệu từ các tệp. Nhấp Next. + + ![25](../../../../translated_images/dataset-2.f58de1c435d5bf9ccb16ccc5f5d4380eb2b50affca85cfbf4f97562bdab99f77.vi.png) + +3. Trong Schema, thay đổi kiểu dữ liệu thành Boolean cho các đặc điểm sau: anaemia, diabetes, high blood pressure, sex, smoking, và DEATH_EVENT. Nhấp Next và nhấp Create. + + ![26](../../../../translated_images/dataset-3.58db8c0eb783e89236a02bbce5bb4ba808d081a87d994d5284b1ae59928c95bf.vi.png) + +Tuyệt vời! Bây giờ tập dữ liệu đã sẵn sàng và cụm tính toán đã được tạo, chúng ta có thể bắt đầu huấn luyện mô hình! + +### 2.4 Huấn luyện không mã/thấp mã với AutoML + +Phát triển mô hình học máy truyền thống tiêu tốn nhiều tài nguyên, đòi hỏi kiến thức chuyên môn và thời gian đáng kể để tạo và so sánh hàng chục mô hình. Học máy tự động (AutoML) là quá trình tự động hóa các tác vụ lặp đi lặp lại và tốn thời gian trong phát triển mô hình học máy. Nó cho phép các nhà khoa học dữ liệu, nhà phân tích và nhà phát triển xây dựng các mô hình ML với quy mô, hiệu quả và năng suất cao, đồng thời duy trì chất lượng mô hình. Điều này giảm thời gian để có được các mô hình ML sẵn sàng cho sản xuất một cách dễ dàng và hiệu quả. [Tìm hiểu thêm](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) + +1. Trong [Azure ML workspace](https://ml.azure.com/) mà chúng ta đã tạo trước đó, nhấp vào "Automated ML" trong menu bên trái và chọn tập dữ liệu bạn vừa tải lên. Nhấp Next. + + ![27](../../../../translated_images/aml-1.67281a85d3a1e2f34eb367b2d0f74e1039d13396e510f363cd8766632106d1ec.vi.png) + +2. Nhập tên thử nghiệm mới, cột mục tiêu (DEATH_EVENT) và cụm tính toán mà chúng ta đã tạo. Nhấp Next. + + ![28](../../../../translated_images/aml-2.c9fb9cffb39ccbbe21ab9810ae937195d41a489744e15cff2b8477ed4dcae1ec.vi.png) + +3. Chọn "Classification" và nhấp Finish. Bước này có thể mất từ 30 phút đến 1 giờ, tùy thuộc vào kích thước cụm tính toán của bạn. + + ![30](../../../../translated_images/aml-3.a7952e4295f38cc6cdb0c7ed6dc71ea756b7fb5697ec126bc1220f87c5fa9231.vi.png) + +4. Khi quá trình chạy hoàn tất, nhấp vào tab "Automated ML", nhấp vào lần chạy của bạn và nhấp vào thuật toán trong thẻ "Best model summary". + + ![31](../../../../translated_images/aml-4.7a627e09cb6f16d0aa246059d9faee3d1725cc4258d0c8df15e801f73afc7e2c.vi.png) + +Tại đây, bạn có thể xem mô tả chi tiết về mô hình tốt nhất mà AutoML đã tạo ra. Bạn cũng có thể khám phá các mô hình khác được tạo trong tab Models. Dành vài phút để khám phá các mô hình trong nút Explanations (preview). Sau khi bạn đã chọn mô hình muốn sử dụng (ở đây chúng ta sẽ chọn mô hình tốt nhất được AutoML chọn), chúng ta sẽ xem cách triển khai nó. + +## 3. Triển khai mô hình không mã/thấp mã và tiêu thụ endpoint +### 3.1 Triển khai mô hình + +Giao diện học máy tự động cho phép bạn triển khai mô hình tốt nhất dưới dạng dịch vụ web chỉ trong vài bước. Triển khai là tích hợp mô hình để nó có thể đưa ra dự đoán dựa trên dữ liệu mới và xác định các cơ hội tiềm năng. Đối với dự án này, triển khai thành dịch vụ web có nghĩa là các ứng dụng y tế sẽ có thể sử dụng mô hình để đưa ra dự đoán trực tiếp về nguy cơ bệnh nhân bị đau tim. + +Trong mô tả mô hình tốt nhất, nhấp vào nút "Deploy". + +![deploy-1](../../../../translated_images/deploy-1.ddad725acadc84e34553c3d09e727160faeb32527a9fb8b904c0f99235a34bb6.vi.png) + +15. Đặt tên, mô tả, loại tính toán (Azure Container Instance), bật xác thực và nhấp Deploy. Bước này có thể mất khoảng 20 phút để hoàn tất. Quá trình triển khai bao gồm nhiều bước như đăng ký mô hình, tạo tài nguyên và cấu hình chúng cho dịch vụ web. Một thông báo trạng thái xuất hiện dưới Deploy status. Chọn Refresh định kỳ để kiểm tra trạng thái triển khai. Khi trạng thái là "Healthy", nghĩa là đã triển khai và đang chạy. + +![deploy-2](../../../../translated_images/deploy-2.94dbb13f239086473aa4bf814342fd40483d136849b080f02bafbb995383940e.vi.png) + +16. Khi đã triển khai xong, nhấp vào tab Endpoint và nhấp vào endpoint bạn vừa triển khai. Tại đây, bạn có thể tìm thấy tất cả các chi tiết cần biết về endpoint. + +![deploy-3](../../../../translated_images/deploy-3.fecefef070e8ef3b28e802326d107f61ac4e672d20bf82d05f78d025f9e6c611.vi.png) + +Tuyệt vời! Bây giờ chúng ta đã có một mô hình được triển khai, chúng ta có thể bắt đầu tiêu thụ endpoint. + +### 3.2 Tiêu thụ endpoint + +Nhấp vào tab "Consume". Tại đây, bạn có thể tìm thấy REST endpoint và một script Python trong tùy chọn tiêu thụ. Dành thời gian để đọc mã Python. + +Script này có thể được chạy trực tiếp từ máy cục bộ của bạn và sẽ tiêu thụ endpoint của bạn. + +![35](../../../../translated_images/consumption-1.700abd196452842a020c7d745908637a6e4c5c50494ad1217be80e283e0de154.vi.png) + +Dành một chút thời gian để kiểm tra hai dòng mã này: + +```python +url = 'http://98e3715f-xxxx-xxxx-xxxx-9ec22d57b796.centralus.azurecontainer.io/score' +api_key = '' # Replace this with the API key for the web service +``` +Biến `url` là REST endpoint được tìm thấy trong tab consume và biến `api_key` là khóa chính cũng được tìm thấy trong tab consume (chỉ trong trường hợp bạn đã bật xác thực). Đây là cách script có thể tiêu thụ endpoint. + +18. Khi chạy script, bạn sẽ thấy đầu ra sau: + ```python + b'"{\\"result\\": [true]}"' + ``` +Điều này có nghĩa là dự đoán về nguy cơ suy tim cho dữ liệu được cung cấp là đúng. Điều này hợp lý vì nếu bạn nhìn kỹ hơn vào dữ liệu được tạo tự động trong script, mọi thứ đều ở mức 0 và sai theo mặc định. Bạn có thể thay đổi dữ liệu với mẫu đầu vào sau: + +```python +data = { + "data": + [ + { + 'age': "0", + 'anaemia': "false", + 'creatinine_phosphokinase': "0", + 'diabetes': "false", + 'ejection_fraction': "0", + 'high_blood_pressure': "false", + 'platelets': "0", + 'serum_creatinine': "0", + 'serum_sodium': "0", + 'sex': "false", + 'smoking': "false", + 'time': "0", + }, + { + 'age': "60", + 'anaemia': "false", + 'creatinine_phosphokinase': "500", + 'diabetes': "false", + 'ejection_fraction': "38", + 'high_blood_pressure': "false", + 'platelets': "260000", + 'serum_creatinine': "1.40", + 'serum_sodium': "137", + 'sex': "false", + 'smoking': "false", + 'time': "130", + }, + ], +} +``` +Script sẽ trả về: + ```python + b'"{\\"result\\": [true, false]}"' + ``` + +Chúc mừng! Bạn vừa tiêu thụ mô hình được triển khai và huấn luyện nó trên Azure ML! + +> **_LƯU Ý:_** Khi hoàn thành dự án, đừng quên xóa tất cả các tài nguyên. +## 🚀 Thử thách + +Xem xét kỹ các giải thích và chi tiết mô hình mà AutoML đã tạo cho các mô hình hàng đầu. Cố gắng hiểu tại sao mô hình tốt nhất lại tốt hơn các mô hình khác. Những thuật toán nào đã được so sánh? Sự khác biệt giữa chúng là gì? Tại sao mô hình tốt nhất lại hoạt động tốt hơn trong trường hợp này? + +## [Câu hỏi sau bài giảng](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/35) + +## Ôn tập & Tự học + +Trong bài học này, bạn đã học cách huấn luyện, triển khai và tiêu thụ một mô hình để dự đoán nguy cơ suy tim theo cách không mã/thấp mã trên đám mây. Nếu bạn chưa làm, hãy đi sâu hơn vào các giải thích mô hình mà AutoML đã tạo cho các mô hình hàng đầu và cố gắng hiểu tại sao mô hình tốt nhất lại tốt hơn các mô hình khác. + +Bạn có thể tìm hiểu thêm về AutoML không mã/thấp mã bằng cách đọc [tài liệu này](https://docs.microsoft.com/azure/machine-learning/tutorial-first-experiment-automated-ml?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). + +## Bài tập + +[Dự án Khoa học Dữ liệu không mã/thấp mã trên Azure ML](assignment.md) + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tham khảo chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/5-Data-Science-In-Cloud/18-Low-Code/assignment.md b/translations/vi/5-Data-Science-In-Cloud/18-Low-Code/assignment.md new file mode 100644 index 00000000..1c6e83ed --- /dev/null +++ b/translations/vi/5-Data-Science-In-Cloud/18-Low-Code/assignment.md @@ -0,0 +1,25 @@ + +# Dự án Khoa học Dữ liệu Low code/No code trên Azure ML + +## Hướng dẫn + +Chúng ta đã xem cách sử dụng nền tảng Azure ML để huấn luyện, triển khai và sử dụng một mô hình theo cách Low code/No code. Bây giờ hãy tìm kiếm một số dữ liệu mà bạn có thể sử dụng để huấn luyện một mô hình khác, triển khai và sử dụng nó. Bạn có thể tìm kiếm các bộ dữ liệu trên [Kaggle](https://kaggle.com) và [Azure Open Datasets](https://azure.microsoft.com/services/open-datasets/catalog?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). + +## Tiêu chí đánh giá + +| Xuất sắc | Đạt yêu cầu | Cần cải thiện | +|----------|-------------|---------------| +|Khi tải dữ liệu lên, bạn đã chú ý thay đổi loại của các đặc trưng nếu cần thiết. Bạn cũng đã làm sạch dữ liệu nếu cần. Bạn đã chạy huấn luyện trên một bộ dữ liệu thông qua AutoML và kiểm tra giải thích của mô hình. Bạn đã triển khai mô hình tốt nhất và có thể sử dụng nó. | Khi tải dữ liệu lên, bạn đã chú ý thay đổi loại của các đặc trưng nếu cần thiết. Bạn đã chạy huấn luyện trên một bộ dữ liệu thông qua AutoML, triển khai mô hình tốt nhất và có thể sử dụng nó. | Bạn đã triển khai mô hình tốt nhất được huấn luyện bởi AutoML và có thể sử dụng nó. | + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tham khảo chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/5-Data-Science-In-Cloud/19-Azure/README.md b/translations/vi/5-Data-Science-In-Cloud/19-Azure/README.md new file mode 100644 index 00000000..fecfe9b0 --- /dev/null +++ b/translations/vi/5-Data-Science-In-Cloud/19-Azure/README.md @@ -0,0 +1,312 @@ + +# Khoa học Dữ liệu trên Đám mây: Cách sử dụng "Azure ML SDK" + +|![ Sketchnote của [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/19-DataScience-Cloud.png)| +|:---:| +| Khoa học Dữ liệu trên Đám mây: Azure ML SDK - _Sketchnote của [@nitya](https://twitter.com/nitya)_ | + +Mục lục: + +- [Khoa học Dữ liệu trên Đám mây: Cách sử dụng "Azure ML SDK"](../../../../5-Data-Science-In-Cloud/19-Azure) + - [Câu hỏi trước bài giảng](../../../../5-Data-Science-In-Cloud/19-Azure) + - [1. Giới thiệu](../../../../5-Data-Science-In-Cloud/19-Azure) + - [1.1 Azure ML SDK là gì?](../../../../5-Data-Science-In-Cloud/19-Azure) + - [1.2 Dự án dự đoán suy tim và giới thiệu tập dữ liệu](../../../../5-Data-Science-In-Cloud/19-Azure) + - [2. Huấn luyện mô hình với Azure ML SDK](../../../../5-Data-Science-In-Cloud/19-Azure) + - [2.1 Tạo một không gian làm việc Azure ML](../../../../5-Data-Science-In-Cloud/19-Azure) + - [2.2 Tạo một phiên bản tính toán](../../../../5-Data-Science-In-Cloud/19-Azure) + - [2.3 Tải tập dữ liệu](../../../../5-Data-Science-In-Cloud/19-Azure) + - [2.4 Tạo Notebooks](../../../../5-Data-Science-In-Cloud/19-Azure) + - [2.5 Huấn luyện mô hình](../../../../5-Data-Science-In-Cloud/19-Azure) + - [2.5.1 Thiết lập không gian làm việc, thí nghiệm, cụm tính toán và tập dữ liệu](../../../../5-Data-Science-In-Cloud/19-Azure) + - [2.5.2 Cấu hình AutoML và huấn luyện](../../../../5-Data-Science-In-Cloud/19-Azure) + - [3. Triển khai mô hình và sử dụng endpoint với Azure ML SDK](../../../../5-Data-Science-In-Cloud/19-Azure) + - [3.1 Lưu mô hình tốt nhất](../../../../5-Data-Science-In-Cloud/19-Azure) + - [3.2 Triển khai mô hình](../../../../5-Data-Science-In-Cloud/19-Azure) + - [3.3 Sử dụng endpoint](../../../../5-Data-Science-In-Cloud/19-Azure) + - [🚀 Thử thách](../../../../5-Data-Science-In-Cloud/19-Azure) + - [Câu hỏi sau bài giảng](../../../../5-Data-Science-In-Cloud/19-Azure) + - [Ôn tập & Tự học](../../../../5-Data-Science-In-Cloud/19-Azure) + - [Bài tập](../../../../5-Data-Science-In-Cloud/19-Azure) + +## [Câu hỏi trước bài giảng](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/36) + +## 1. Giới thiệu + +### 1.1 Azure ML SDK là gì? + +Các nhà khoa học dữ liệu và nhà phát triển AI sử dụng Azure Machine Learning SDK để xây dựng và chạy các quy trình làm việc học máy với dịch vụ Azure Machine Learning. Bạn có thể tương tác với dịch vụ này trong bất kỳ môi trường Python nào, bao gồm Jupyter Notebooks, Visual Studio Code hoặc IDE Python yêu thích của bạn. + +Các lĩnh vực chính của SDK bao gồm: + +- Khám phá, chuẩn bị và quản lý vòng đời của các tập dữ liệu được sử dụng trong các thí nghiệm học máy. +- Quản lý tài nguyên đám mây để giám sát, ghi nhật ký và tổ chức các thí nghiệm học máy của bạn. +- Huấn luyện mô hình tại chỗ hoặc sử dụng tài nguyên đám mây, bao gồm huấn luyện mô hình tăng tốc GPU. +- Sử dụng học máy tự động (AutoML), chấp nhận các tham số cấu hình và dữ liệu huấn luyện. Nó tự động lặp qua các thuật toán và cài đặt siêu tham số để tìm mô hình tốt nhất cho việc dự đoán. +- Triển khai dịch vụ web để chuyển đổi các mô hình đã huấn luyện thành các dịch vụ RESTful có thể được sử dụng trong bất kỳ ứng dụng nào. + +[Tìm hiểu thêm về Azure Machine Learning SDK](https://docs.microsoft.com/python/api/overview/azure/ml?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) + +Trong [bài học trước](../18-Low-Code/README.md), chúng ta đã thấy cách huấn luyện, triển khai và sử dụng một mô hình theo cách ít mã/không mã. Chúng ta đã sử dụng tập dữ liệu Suy tim để tạo ra một mô hình dự đoán suy tim. Trong bài học này, chúng ta sẽ làm chính xác điều đó nhưng sử dụng Azure Machine Learning SDK. + +![project-schema](../../../../translated_images/project-schema.420e56d495624541eaecf2b737f138c86fb7d8162bb1c0bf8783c350872ffc4d.vi.png) + +### 1.2 Dự án dự đoán suy tim và giới thiệu tập dữ liệu + +Xem [tại đây](../18-Low-Code/README.md) để biết giới thiệu về dự án dự đoán suy tim và tập dữ liệu. + +## 2. Huấn luyện mô hình với Azure ML SDK +### 2.1 Tạo một không gian làm việc Azure ML + +Để đơn giản, chúng ta sẽ làm việc trên một jupyter notebook. Điều này có nghĩa là bạn đã có một Không gian làm việc và một phiên bản tính toán. Nếu bạn đã có Không gian làm việc, bạn có thể chuyển thẳng đến phần 2.3 Tạo Notebook. + +Nếu chưa, vui lòng làm theo hướng dẫn trong phần **2.1 Tạo một không gian làm việc Azure ML** trong [bài học trước](../18-Low-Code/README.md) để tạo một không gian làm việc. + +### 2.2 Tạo một phiên bản tính toán + +Trong [Không gian làm việc Azure ML](https://ml.azure.com/) mà chúng ta đã tạo trước đó, vào menu tính toán và bạn sẽ thấy các tài nguyên tính toán khác nhau có sẵn. + +![compute-instance-1](../../../../translated_images/compute-instance-1.dba347cb199ca4996b3e3d649295ed95626ba481479d3986557b9b98e76d8816.vi.png) + +Hãy tạo một phiên bản tính toán để cung cấp một jupyter notebook. +1. Nhấp vào nút + New. +2. Đặt tên cho phiên bản tính toán của bạn. +3. Chọn các tùy chọn: CPU hoặc GPU, kích thước VM và số lõi. +4. Nhấp vào nút Create. + +Chúc mừng, bạn vừa tạo một phiên bản tính toán! Chúng ta sẽ sử dụng phiên bản tính toán này để tạo một Notebook trong phần [Tạo Notebooks](../../../../5-Data-Science-In-Cloud/19-Azure). + +### 2.3 Tải tập dữ liệu +Tham khảo [bài học trước](../18-Low-Code/README.md) trong phần **2.3 Tải tập dữ liệu** nếu bạn chưa tải tập dữ liệu lên. + +### 2.4 Tạo Notebooks + +> **_LƯU Ý:_** Trong bước tiếp theo, bạn có thể tạo một notebook mới từ đầu hoặc tải lên [notebook mà chúng ta đã tạo](notebook.ipynb) trong Azure ML Studio của bạn. Để tải lên, chỉ cần nhấp vào menu "Notebook" và tải notebook lên. + +Notebooks là một phần rất quan trọng trong quy trình khoa học dữ liệu. Chúng có thể được sử dụng để thực hiện Phân tích Dữ liệu Khám phá (EDA), gọi đến một cụm tính toán để huấn luyện mô hình, hoặc gọi đến một cụm suy luận để triển khai một endpoint. + +Để tạo một Notebook, chúng ta cần một nút tính toán đang phục vụ phiên bản jupyter notebook. Quay lại [Không gian làm việc Azure ML](https://ml.azure.com/) và nhấp vào Compute instances. Trong danh sách các phiên bản tính toán, bạn sẽ thấy [phiên bản tính toán mà chúng ta đã tạo trước đó](../../../../5-Data-Science-In-Cloud/19-Azure). + +1. Trong phần Applications, nhấp vào tùy chọn Jupyter. +2. Tích vào ô "Yes, I understand" và nhấp vào nút Continue. +![notebook-1](../../../../translated_images/notebook-1.12998af7b02c83f536c11b3aeba561be16e0f05e94146600728ec64270ce1105.vi.png) +3. Điều này sẽ mở một tab trình duyệt mới với phiên bản jupyter notebook của bạn như sau. Nhấp vào nút "New" để tạo một notebook. + +![notebook-2](../../../../translated_images/notebook-2.9a657c037e34f1cf26c0212f5ee9e2da8545b3e107c7682c55114e494167a8aa.vi.png) + +Bây giờ chúng ta đã có một Notebook, chúng ta có thể bắt đầu huấn luyện mô hình với Azure ML SDK. + +### 2.5 Huấn luyện mô hình + +Trước tiên, nếu bạn có bất kỳ thắc mắc nào, hãy tham khảo [tài liệu Azure ML SDK](https://docs.microsoft.com/python/api/overview/azure/ml?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). Tài liệu này chứa tất cả thông tin cần thiết để hiểu các module mà chúng ta sẽ xem trong bài học này. + +#### 2.5.1 Thiết lập không gian làm việc, thí nghiệm, cụm tính toán và tập dữ liệu + +Bạn cần tải `workspace` từ tệp cấu hình bằng đoạn mã sau: + +```python +from azureml.core import Workspace +ws = Workspace.from_config() +``` + +Điều này trả về một đối tượng kiểu `Workspace` đại diện cho không gian làm việc. Sau đó, bạn cần tạo một `experiment` bằng đoạn mã sau: + +```python +from azureml.core import Experiment +experiment_name = 'aml-experiment' +experiment = Experiment(ws, experiment_name) +``` +Để lấy hoặc tạo một thí nghiệm từ không gian làm việc, bạn yêu cầu thí nghiệm bằng tên thí nghiệm. Tên thí nghiệm phải từ 3-36 ký tự, bắt đầu bằng một chữ cái hoặc số, và chỉ chứa các chữ cái, số, dấu gạch dưới và dấu gạch ngang. Nếu không tìm thấy thí nghiệm trong không gian làm việc, một thí nghiệm mới sẽ được tạo. + +Bây giờ bạn cần tạo một cụm tính toán để huấn luyện bằng đoạn mã sau. Lưu ý rằng bước này có thể mất vài phút. + +```python +from azureml.core.compute import AmlCompute + +aml_name = "heart-f-cluster" +try: + aml_compute = AmlCompute(ws, aml_name) + print('Found existing AML compute context.') +except: + print('Creating new AML compute context.') + aml_config = AmlCompute.provisioning_configuration(vm_size = "Standard_D2_v2", min_nodes=1, max_nodes=3) + aml_compute = AmlCompute.create(ws, name = aml_name, provisioning_configuration = aml_config) + aml_compute.wait_for_completion(show_output = True) + +cts = ws.compute_targets +compute_target = cts[aml_name] +``` + +Bạn có thể lấy tập dữ liệu từ không gian làm việc bằng tên tập dữ liệu theo cách sau: + +```python +dataset = ws.datasets['heart-failure-records'] +df = dataset.to_pandas_dataframe() +df.describe() +``` +#### 2.5.2 Cấu hình AutoML và huấn luyện + +Để thiết lập cấu hình AutoML, sử dụng [lớp AutoMLConfig](https://docs.microsoft.com/python/api/azureml-train-automl-client/azureml.train.automl.automlconfig(class)?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). + +Như được mô tả trong tài liệu, có rất nhiều tham số mà bạn có thể tùy chỉnh. Đối với dự án này, chúng ta sẽ sử dụng các tham số sau: + +- `experiment_timeout_minutes`: Thời gian tối đa (tính bằng phút) mà thí nghiệm được phép chạy trước khi nó tự động dừng và kết quả được tự động cung cấp. +- `max_concurrent_iterations`: Số lần lặp huấn luyện đồng thời tối đa được phép cho thí nghiệm. +- `primary_metric`: Chỉ số chính được sử dụng để xác định trạng thái của thí nghiệm. +- `compute_target`: Mục tiêu tính toán Azure Machine Learning để chạy thí nghiệm Học máy Tự động. +- `task`: Loại nhiệm vụ cần chạy. Các giá trị có thể là 'classification', 'regression', hoặc 'forecasting' tùy thuộc vào loại vấn đề AutoML cần giải quyết. +- `training_data`: Dữ liệu huấn luyện được sử dụng trong thí nghiệm. Nó nên chứa cả các đặc trưng huấn luyện và một cột nhãn (tùy chọn một cột trọng số mẫu). +- `label_column_name`: Tên của cột nhãn. +- `path`: Đường dẫn đầy đủ đến thư mục dự án Azure Machine Learning. +- `enable_early_stopping`: Có bật dừng sớm nếu điểm số không cải thiện trong ngắn hạn hay không. +- `featurization`: Chỉ báo cho biết bước tạo đặc trưng có nên được thực hiện tự động hay không, hoặc có nên sử dụng tạo đặc trưng tùy chỉnh hay không. +- `debug_log`: Tệp nhật ký để ghi thông tin gỡ lỗi. + +```python +from azureml.train.automl import AutoMLConfig + +project_folder = './aml-project' + +automl_settings = { + "experiment_timeout_minutes": 20, + "max_concurrent_iterations": 3, + "primary_metric" : 'AUC_weighted' +} + +automl_config = AutoMLConfig(compute_target=compute_target, + task = "classification", + training_data=dataset, + label_column_name="DEATH_EVENT", + path = project_folder, + enable_early_stopping= True, + featurization= 'auto', + debug_log = "automl_errors.log", + **automl_settings + ) +``` +Bây giờ bạn đã thiết lập cấu hình, bạn có thể huấn luyện mô hình bằng đoạn mã sau. Bước này có thể mất đến một giờ tùy thuộc vào kích thước cụm của bạn. + +```python +remote_run = experiment.submit(automl_config) +``` +Bạn có thể chạy widget RunDetails để hiển thị các thí nghiệm khác nhau. +```python +from azureml.widgets import RunDetails +RunDetails(remote_run).show() +``` +## 3. Triển khai mô hình và sử dụng endpoint với Azure ML SDK + +### 3.1 Lưu mô hình tốt nhất + +`remote_run` là một đối tượng kiểu [AutoMLRun](https://docs.microsoft.com/python/api/azureml-train-automl-client/azureml.train.automl.run.automlrun?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). Đối tượng này chứa phương thức `get_output()` trả về lần chạy tốt nhất và mô hình đã được huấn luyện tương ứng. + +```python +best_run, fitted_model = remote_run.get_output() +``` +Bạn có thể xem các tham số được sử dụng cho mô hình tốt nhất chỉ bằng cách in `fitted_model` và xem các thuộc tính của mô hình tốt nhất bằng cách sử dụng phương thức [get_properties()](https://docs.microsoft.com/python/api/azureml-core/azureml.core.run(class)?view=azure-ml-py#azureml_core_Run_get_properties?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). + +```python +best_run.get_properties() +``` + +Bây giờ hãy đăng ký mô hình với phương thức [register_model](https://docs.microsoft.com/python/api/azureml-train-automl-client/azureml.train.automl.run.automlrun?view=azure-ml-py#register-model-model-name-none--description-none--tags-none--iteration-none--metric-none-?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). +```python +model_name = best_run.properties['model_name'] +script_file_name = 'inference/score.py' +best_run.download_file('outputs/scoring_file_v_1_0_0.py', 'inference/score.py') +description = "aml heart failure project sdk" +model = best_run.register_model(model_name = model_name, + model_path = './outputs/', + description = description, + tags = None) +``` +### 3.2 Triển khai mô hình + +Khi mô hình tốt nhất đã được lưu, chúng ta có thể triển khai nó với lớp [InferenceConfig](https://docs.microsoft.com/python/api/azureml-core/azureml.core.model.inferenceconfig?view=azure-ml-py?ocid=AID3041109). InferenceConfig đại diện cho các cài đặt cấu hình cho một môi trường tùy chỉnh được sử dụng để triển khai. Lớp [AciWebservice](https://docs.microsoft.com/python/api/azureml-core/azureml.core.webservice.aciwebservice?view=azure-ml-py) đại diện cho một mô hình học máy được triển khai dưới dạng một endpoint dịch vụ web trên Azure Container Instances. Một dịch vụ được triển khai được tạo từ một mô hình, tập lệnh và các tệp liên quan. Dịch vụ web kết quả là một endpoint HTTP cân bằng tải với REST API. Bạn có thể gửi dữ liệu đến API này và nhận dự đoán trả về từ mô hình. + +Mô hình được triển khai bằng phương thức [deploy](https://docs.microsoft.com/python/api/azureml-core/azureml.core.model(class)?view=azure-ml-py#deploy-workspace--name--models--inference-config-none--deployment-config-none--deployment-target-none--overwrite-false--show-output-false-?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). + +```python +from azureml.core.model import InferenceConfig, Model +from azureml.core.webservice import AciWebservice + +inference_config = InferenceConfig(entry_script=script_file_name, environment=best_run.get_environment()) + +aciconfig = AciWebservice.deploy_configuration(cpu_cores = 1, + memory_gb = 1, + tags = {'type': "automl-heart-failure-prediction"}, + description = 'Sample service for AutoML Heart Failure Prediction') + +aci_service_name = 'automl-hf-sdk' +aci_service = Model.deploy(ws, aci_service_name, [model], inference_config, aciconfig) +aci_service.wait_for_deployment(True) +print(aci_service.state) +``` +Bước này sẽ mất vài phút. + +### 3.3 Sử dụng endpoint + +Bạn sử dụng endpoint của mình bằng cách tạo một đầu vào mẫu: + +```python +data = { + "data": + [ + { + 'age': "60", + 'anaemia': "false", + 'creatinine_phosphokinase': "500", + 'diabetes': "false", + 'ejection_fraction': "38", + 'high_blood_pressure': "false", + 'platelets': "260000", + 'serum_creatinine': "1.40", + 'serum_sodium': "137", + 'sex': "false", + 'smoking': "false", + 'time': "130", + }, + ], +} + +test_sample = str.encode(json.dumps(data)) +``` +Sau đó, bạn có thể gửi đầu vào này đến mô hình của mình để dự đoán: +```python +response = aci_service.run(input_data=test_sample) +response +``` +Điều này sẽ xuất ra `'{"result": [false]}'`. Điều này có nghĩa là dữ liệu bệnh nhân mà chúng ta gửi đến endpoint đã tạo ra dự đoán `false`, tức là người này không có khả năng bị đau tim. + +Chúc mừng bạn! Bạn vừa sử dụng mô hình được triển khai và huấn luyện trên Azure ML với Azure ML SDK! + +> **_NOTE:_** Khi hoàn thành dự án, đừng quên xóa tất cả các tài nguyên. + +## 🚀 Thử thách + +Có rất nhiều điều khác bạn có thể làm thông qua SDK, tuy nhiên, chúng ta không thể xem hết trong bài học này. Nhưng tin tốt là, việc học cách tìm kiếm nhanh qua tài liệu SDK có thể giúp bạn tiến xa hơn. Hãy xem tài liệu Azure ML SDK và tìm lớp `Pipeline`, lớp này cho phép bạn tạo các pipeline. Pipeline là một tập hợp các bước có thể được thực thi như một quy trình làm việc. + +**GỢI Ý:** Truy cập [tài liệu SDK](https://docs.microsoft.com/python/api/overview/azure/ml/?view=azure-ml-py?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) và nhập các từ khóa như "Pipeline" vào thanh tìm kiếm. Bạn sẽ thấy lớp `azureml.pipeline.core.Pipeline` trong kết quả tìm kiếm. + +## [Câu hỏi sau bài giảng](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/37) + +## Ôn tập & Tự học + +Trong bài học này, bạn đã học cách huấn luyện, triển khai và sử dụng một mô hình để dự đoán nguy cơ suy tim với Azure ML SDK trên đám mây. Xem [tài liệu này](https://docs.microsoft.com/python/api/overview/azure/ml/?view=azure-ml-py?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) để biết thêm thông tin về Azure ML SDK. Hãy thử tạo mô hình của riêng bạn với Azure ML SDK. + +## Bài tập + +[Dự án Khoa học Dữ liệu sử dụng Azure ML SDK](assignment.md) + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm về bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/5-Data-Science-In-Cloud/19-Azure/assignment.md b/translations/vi/5-Data-Science-In-Cloud/19-Azure/assignment.md new file mode 100644 index 00000000..8ba3fd66 --- /dev/null +++ b/translations/vi/5-Data-Science-In-Cloud/19-Azure/assignment.md @@ -0,0 +1,25 @@ + +# Dự án Khoa học Dữ liệu sử dụng Azure ML SDK + +## Hướng dẫn + +Chúng ta đã thấy cách sử dụng nền tảng Azure ML để huấn luyện, triển khai và sử dụng một mô hình với Azure ML SDK. Bây giờ, hãy tìm kiếm một số dữ liệu mà bạn có thể sử dụng để huấn luyện một mô hình khác, triển khai nó và sử dụng nó. Bạn có thể tìm kiếm các tập dữ liệu trên [Kaggle](https://kaggle.com) và [Azure Open Datasets](https://azure.microsoft.com/services/open-datasets/catalog?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). + +## Tiêu chí đánh giá + +| Xuất sắc | Đạt yêu cầu | Cần cải thiện | +|----------|-------------|---------------| +|Khi thực hiện Cấu hình AutoML, bạn đã tham khảo tài liệu SDK để xem các tham số có thể sử dụng. Bạn đã chạy một quá trình huấn luyện trên một tập dữ liệu thông qua AutoML sử dụng Azure ML SDK, và bạn đã kiểm tra các giải thích của mô hình. Bạn đã triển khai mô hình tốt nhất và có thể sử dụng nó thông qua Azure ML SDK. | Bạn đã chạy một quá trình huấn luyện trên một tập dữ liệu thông qua AutoML sử dụng Azure ML SDK, và bạn đã kiểm tra các giải thích của mô hình. Bạn đã triển khai mô hình tốt nhất và có thể sử dụng nó thông qua Azure ML SDK. | Bạn đã chạy một quá trình huấn luyện trên một tập dữ liệu thông qua AutoML sử dụng Azure ML SDK. Bạn đã triển khai mô hình tốt nhất và có thể sử dụng nó thông qua Azure ML SDK. | + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tham khảo chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/5-Data-Science-In-Cloud/README.md b/translations/vi/5-Data-Science-In-Cloud/README.md new file mode 100644 index 00000000..c7afa1e8 --- /dev/null +++ b/translations/vi/5-Data-Science-In-Cloud/README.md @@ -0,0 +1,35 @@ + +# Khoa học dữ liệu trên đám mây + +![cloud-picture](../../../translated_images/cloud-picture.f5526de3c6c6387b2d656ba94f019b3352e5e3854a78440e4fb00c93e2dea675.vi.jpg) + +> Ảnh của [Jelleke Vanooteghem](https://unsplash.com/@ilumire) từ [Unsplash](https://unsplash.com/s/photos/cloud?orientation=landscape) + +Khi thực hiện khoa học dữ liệu với dữ liệu lớn, đám mây có thể là một yếu tố thay đổi cuộc chơi. Trong ba bài học tiếp theo, chúng ta sẽ tìm hiểu đám mây là gì và tại sao nó có thể rất hữu ích. Chúng ta cũng sẽ khám phá một tập dữ liệu về suy tim và xây dựng một mô hình để giúp đánh giá khả năng một người bị suy tim. Chúng ta sẽ sử dụng sức mạnh của đám mây để huấn luyện, triển khai và sử dụng mô hình theo hai cách khác nhau. Một cách sử dụng giao diện người dùng theo phong cách "Ít mã/Không mã", cách còn lại sử dụng Bộ công cụ phát triển phần mềm Azure Machine Learning (Azure ML SDK). + +![project-schema](../../../translated_images/project-schema.420e56d495624541eaecf2b737f138c86fb7d8162bb1c0bf8783c350872ffc4d.vi.png) + +### Các chủ đề + +1. [Tại sao sử dụng đám mây cho khoa học dữ liệu?](17-Introduction/README.md) +2. [Khoa học dữ liệu trên đám mây: Cách "Ít mã/Không mã"](18-Low-Code/README.md) +3. [Khoa học dữ liệu trên đám mây: Cách "Azure ML SDK"](19-Azure/README.md) + +### Tín dụng +Những bài học này được viết với ☁️ và 💕 bởi [Maud Levy](https://twitter.com/maudstweets) và [Tiffany Souterre](https://twitter.com/TiffanySouterre) + +Dữ liệu cho dự án Dự đoán Suy tim được lấy từ [ +Larxel](https://www.kaggle.com/andrewmvd) trên [Kaggle](https://www.kaggle.com/andrewmvd/heart-failure-clinical-data). Nó được cấp phép theo [Attribution 4.0 International (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/) + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/6-Data-Science-In-Wild/20-Real-World-Examples/README.md b/translations/vi/6-Data-Science-In-Wild/20-Real-World-Examples/README.md new file mode 100644 index 00000000..f6f4d9c2 --- /dev/null +++ b/translations/vi/6-Data-Science-In-Wild/20-Real-World-Examples/README.md @@ -0,0 +1,155 @@ + +# Khoa học dữ liệu trong thế giới thực + +| ![ Sketchnote của [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-RealWorld.png) | +| :--------------------------------------------------------------------------------------------------------------: | +| Khoa học dữ liệu trong thế giới thực - _Sketchnote của [@nitya](https://twitter.com/nitya)_ | + +Chúng ta gần như đã hoàn thành hành trình học tập này! + +Chúng ta đã bắt đầu với các định nghĩa về khoa học dữ liệu và đạo đức, khám phá các công cụ và kỹ thuật phân tích và trực quan hóa dữ liệu, xem xét vòng đời khoa học dữ liệu, và tìm hiểu cách mở rộng và tự động hóa quy trình khoa học dữ liệu với các dịch vụ điện toán đám mây. Vậy, bạn có thể đang tự hỏi: _"Làm thế nào để áp dụng tất cả những kiến thức này vào các bối cảnh thực tế?"_ + +Trong bài học này, chúng ta sẽ khám phá các ứng dụng thực tế của khoa học dữ liệu trong ngành công nghiệp và đi sâu vào các ví dụ cụ thể trong nghiên cứu, nhân văn số, và bền vững. Chúng ta sẽ xem xét các cơ hội dự án dành cho sinh viên và kết thúc với các tài nguyên hữu ích để giúp bạn tiếp tục hành trình học tập của mình! + +## Câu hỏi trước bài giảng + +[Câu hỏi trước bài giảng](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/38) + +## Khoa học dữ liệu + Ngành công nghiệp + +Nhờ sự phổ biến của AI, các nhà phát triển hiện nay dễ dàng hơn trong việc thiết kế và tích hợp các quyết định dựa trên AI và các thông tin chi tiết dựa trên dữ liệu vào trải nghiệm người dùng và quy trình phát triển. Dưới đây là một vài ví dụ về cách khoa học dữ liệu được "áp dụng" vào các ứng dụng thực tế trong ngành công nghiệp: + + * [Google Flu Trends](https://www.wired.com/2015/10/can-learn-epic-failure-google-flu-trends/) đã sử dụng khoa học dữ liệu để liên kết các từ khóa tìm kiếm với xu hướng bệnh cúm. Mặc dù phương pháp này có những hạn chế, nó đã nâng cao nhận thức về khả năng (và thách thức) của dự đoán y tế dựa trên dữ liệu. + + * [Dự đoán tuyến đường của UPS](https://www.technologyreview.com/2018/11/21/139000/how-ups-uses-ai-to-outsmart-bad-weather/) - giải thích cách UPS sử dụng khoa học dữ liệu và học máy để dự đoán các tuyến đường tối ưu cho việc giao hàng, bao gồm điều kiện thời tiết, lưu lượng giao thông, thời hạn giao hàng và nhiều yếu tố khác. + + * [Trực quan hóa tuyến đường taxi NYC](http://chriswhong.github.io/nyctaxi/) - dữ liệu thu thập được từ [Luật Tự do Thông tin](https://chriswhong.com/open-data/foil_nyc_taxi/) đã giúp trực quan hóa một ngày làm việc của taxi NYC, giúp chúng ta hiểu cách họ di chuyển trong thành phố bận rộn, số tiền họ kiếm được, và thời gian của các chuyến đi trong mỗi khoảng thời gian 24 giờ. + + * [Uber Data Science Workbench](https://eng.uber.com/dsw/) - sử dụng dữ liệu (về địa điểm đón & trả khách, thời gian chuyến đi, tuyến đường ưa thích, v.v.) thu thập từ hàng triệu chuyến đi Uber *hàng ngày* để xây dựng công cụ phân tích dữ liệu hỗ trợ định giá, an toàn, phát hiện gian lận và quyết định điều hướng. + + * [Phân tích thể thao](https://towardsdatascience.com/scope-of-analytics-in-sports-world-37ed09c39860) - tập trung vào _phân tích dự đoán_ (phân tích đội và cầu thủ - như [Moneyball](https://datasciencedegree.wisconsin.edu/blog/moneyball-proves-importance-big-data-big-ideas/) - và quản lý người hâm mộ) và _trực quan hóa dữ liệu_ (bảng điều khiển đội & người hâm mộ, trò chơi, v.v.) với các ứng dụng như tìm kiếm tài năng, cá cược thể thao và quản lý địa điểm/kho hàng. + + * [Khoa học dữ liệu trong ngân hàng](https://data-flair.training/blogs/data-science-in-banking/) - nhấn mạnh giá trị của khoa học dữ liệu trong ngành tài chính với các ứng dụng từ mô hình rủi ro và phát hiện gian lận, đến phân khúc khách hàng, dự đoán thời gian thực và hệ thống gợi ý. Phân tích dự đoán cũng thúc đẩy các biện pháp quan trọng như [điểm tín dụng](https://dzone.com/articles/using-big-data-and-predictive-analytics-for-credit). + + * [Khoa học dữ liệu trong chăm sóc sức khỏe](https://data-flair.training/blogs/data-science-in-healthcare/) - nhấn mạnh các ứng dụng như hình ảnh y tế (ví dụ: MRI, X-Ray, CT-Scan), genomics (giải trình tự DNA), phát triển thuốc (đánh giá rủi ro, dự đoán thành công), phân tích dự đoán (chăm sóc bệnh nhân & logistics cung ứng), theo dõi & phòng ngừa bệnh, v.v. + +![Ứng dụng khoa học dữ liệu trong thế giới thực](../../../../translated_images/data-science-applications.4e5019cd8790ebac2277ff5f08af386f8727cac5d30f77727c7090677e6adb9c.vi.png) Nguồn hình ảnh: [Data Flair: 6 Amazing Data Science Applications ](https://data-flair.training/blogs/data-science-applications/) + +Hình minh họa cho thấy các lĩnh vực và ví dụ khác về việc áp dụng các kỹ thuật khoa học dữ liệu. Muốn khám phá thêm các ứng dụng khác? Hãy xem phần [Ôn tập & Tự học](../../../../6-Data-Science-In-Wild/20-Real-World-Examples) bên dưới. + +## Khoa học dữ liệu + Nghiên cứu + +| ![ Sketchnote của [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-Research.png) | +| :---------------------------------------------------------------------------------------------------------------: | +| Khoa học dữ liệu & Nghiên cứu - _Sketchnote của [@nitya](https://twitter.com/nitya)_ | + +Trong khi các ứng dụng thực tế thường tập trung vào các trường hợp sử dụng trong ngành công nghiệp ở quy mô lớn, các ứng dụng và dự án _nghiên cứu_ có thể hữu ích từ hai góc độ: + +* _cơ hội đổi mới_ - khám phá việc tạo mẫu nhanh các khái niệm tiên tiến và thử nghiệm trải nghiệm người dùng cho các ứng dụng thế hệ tiếp theo. +* _thách thức triển khai_ - điều tra các tác hại tiềm năng hoặc hậu quả không mong muốn của các công nghệ khoa học dữ liệu trong các bối cảnh thực tế. + +Đối với sinh viên, các dự án nghiên cứu này có thể cung cấp cả cơ hội học tập và hợp tác, giúp cải thiện sự hiểu biết của bạn về chủ đề, và mở rộng nhận thức cũng như sự tham gia của bạn với những người hoặc nhóm làm việc trong các lĩnh vực quan tâm. Vậy các dự án nghiên cứu trông như thế nào và chúng có thể tạo ra tác động ra sao? + +Hãy xem một ví dụ - [Nghiên cứu Gender Shades của MIT](http://gendershades.org/overview.html) từ Joy Buolamwini (MIT Media Labs) với một [bài báo nghiên cứu nổi bật](http://proceedings.mlr.press/v81/buolamwini18a/buolamwini18a.pdf) đồng tác giả với Timnit Gebru (khi đó tại Microsoft Research) tập trung vào: + + * **Cái gì:** Mục tiêu của dự án nghiên cứu là _đánh giá sự thiên vị trong các thuật toán và tập dữ liệu phân tích khuôn mặt tự động_ dựa trên giới tính và loại da. + * **Tại sao:** Phân tích khuôn mặt được sử dụng trong các lĩnh vực như thực thi pháp luật, an ninh sân bay, hệ thống tuyển dụng và nhiều lĩnh vực khác - những bối cảnh mà phân loại không chính xác (ví dụ: do thiên vị) có thể gây ra các tác hại kinh tế và xã hội tiềm năng cho các cá nhân hoặc nhóm bị ảnh hưởng. Hiểu (và loại bỏ hoặc giảm thiểu) sự thiên vị là chìa khóa để đảm bảo công bằng trong việc sử dụng. + * **Cách thực hiện:** Các nhà nghiên cứu nhận ra rằng các tiêu chuẩn hiện tại chủ yếu sử dụng các đối tượng có làn da sáng hơn, và đã tạo ra một tập dữ liệu mới (hơn 1000 hình ảnh) _cân bằng hơn_ theo giới tính và loại da. Tập dữ liệu này được sử dụng để đánh giá độ chính xác của ba sản phẩm phân loại giới tính (từ Microsoft, IBM & Face++). + +Kết quả cho thấy mặc dù độ chính xác phân loại tổng thể là tốt, có sự khác biệt đáng kể về tỷ lệ lỗi giữa các nhóm con khác nhau - với **sai sót phân loại giới tính** cao hơn đối với nữ giới hoặc người có làn da tối màu, cho thấy sự thiên vị. + +**Kết quả chính:** Nâng cao nhận thức rằng khoa học dữ liệu cần có các _tập dữ liệu đại diện hơn_ (các nhóm con cân bằng) và các _đội ngũ đa dạng hơn_ (nền tảng phong phú) để nhận ra và loại bỏ hoặc giảm thiểu các thiên vị này sớm hơn trong các giải pháp AI. Các nỗ lực nghiên cứu như thế này cũng đóng vai trò quan trọng trong việc nhiều tổ chức định nghĩa các nguyên tắc và thực hành cho _AI có trách nhiệm_ nhằm cải thiện sự công bằng trong các sản phẩm và quy trình AI của họ. + +**Muốn tìm hiểu về các nỗ lực nghiên cứu liên quan tại Microsoft?** + +* Xem [Các dự án nghiên cứu của Microsoft](https://www.microsoft.com/research/research-area/artificial-intelligence/?facet%5Btax%5D%5Bmsr-research-area%5D%5B%5D=13556&facet%5Btax%5D%5Bmsr-content-type%5D%5B%5D=msr-project) về Trí tuệ nhân tạo. +* Khám phá các dự án sinh viên từ [Trường hè Khoa học Dữ liệu của Microsoft Research](https://www.microsoft.com/en-us/research/academic-program/data-science-summer-school/). +* Xem dự án [Fairlearn](https://fairlearn.org/) và các sáng kiến [AI có trách nhiệm](https://www.microsoft.com/en-us/ai/responsible-ai?activetab=pivot1%3aprimaryr6). + +## Khoa học dữ liệu + Nhân văn + +| ![ Sketchnote của [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-Humanities.png) | +| :---------------------------------------------------------------------------------------------------------------: | +| Khoa học dữ liệu & Nhân văn số - _Sketchnote của [@nitya](https://twitter.com/nitya)_ | + +Nhân văn số [được định nghĩa](https://digitalhumanities.stanford.edu/about-dh-stanford) là "một tập hợp các thực hành và cách tiếp cận kết hợp các phương pháp tính toán với nghiên cứu nhân văn". Các dự án [Stanford](https://digitalhumanities.stanford.edu/projects) như _"rebooting history"_ và _"poetic thinking"_ minh họa mối liên kết giữa [Nhân văn số và Khoa học dữ liệu](https://digitalhumanities.stanford.edu/digital-humanities-and-data-science) - nhấn mạnh các kỹ thuật như phân tích mạng, trực quan hóa thông tin, phân tích không gian và văn bản, giúp chúng ta xem xét lại các tập dữ liệu lịch sử và văn học để rút ra những hiểu biết và góc nhìn mới. + +*Muốn khám phá và mở rộng một dự án trong lĩnh vực này?* + +Hãy xem ["Emily Dickinson và nhịp điệu của cảm xúc"](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671) - một ví dụ tuyệt vời từ [Jen Looper](https://twitter.com/jenlooper) đặt câu hỏi làm thế nào chúng ta có thể sử dụng khoa học dữ liệu để xem xét lại thơ ca quen thuộc và đánh giá lại ý nghĩa cũng như đóng góp của tác giả trong các bối cảnh mới. Ví dụ, _chúng ta có thể dự đoán mùa mà một bài thơ được sáng tác bằng cách phân tích giọng điệu hoặc cảm xúc của nó không_ - và điều này nói lên điều gì về trạng thái tâm lý của tác giả trong khoảng thời gian liên quan? + +Để trả lời câu hỏi đó, chúng ta làm theo các bước của vòng đời khoa học dữ liệu: + * [`Thu thập dữ liệu`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#acquiring-the-dataset) - để thu thập một tập dữ liệu phù hợp cho phân tích. Các tùy chọn bao gồm sử dụng API (ví dụ: [Poetry DB API](https://poetrydb.org/index.html)) hoặc quét các trang web (ví dụ: [Project Gutenberg](https://www.gutenberg.org/files/12242/12242-h/12242-h.htm)) bằng các công cụ như [Scrapy](https://scrapy.org/). + * [`Làm sạch dữ liệu`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#clean-the-data) - giải thích cách văn bản có thể được định dạng, làm sạch và đơn giản hóa bằng các công cụ cơ bản như Visual Studio Code và Microsoft Excel. + * [`Phân tích dữ liệu`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#working-with-the-data-in-a-notebook) - giải thích cách chúng ta có thể nhập tập dữ liệu vào "Notebooks" để phân tích bằng các gói Python (như pandas, numpy và matplotlib) để tổ chức và trực quan hóa dữ liệu. + * [`Phân tích cảm xúc`](https://gist.github.com/jlooper/ce4d102efd057137bc000db796bfd671#sentiment-analysis-using-cognitive-services) - giải thích cách chúng ta có thể tích hợp các dịch vụ đám mây như Text Analytics, sử dụng các công cụ low-code như [Power Automate](https://flow.microsoft.com/en-us/) cho các quy trình xử lý dữ liệu tự động. + +Sử dụng quy trình này, chúng ta có thể khám phá tác động của mùa đối với cảm xúc của các bài thơ, và giúp chúng ta hình thành góc nhìn riêng về tác giả. Hãy thử nghiệm - sau đó mở rộng notebook để đặt các câu hỏi khác hoặc trực quan hóa dữ liệu theo cách mới! + +> Bạn có thể sử dụng một số công cụ trong [Bộ công cụ Nhân văn số](https://github.com/Digital-Humanities-Toolkit) để theo đuổi các hướng nghiên cứu này. + +## Khoa học dữ liệu + Bền vững + +| ![ Sketchnote của [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/20-DataScience-Sustainability.png) | +| :---------------------------------------------------------------------------------------------------------------: | +| Khoa học dữ liệu & Bền vững - _Sketchnote của [@nitya](https://twitter.com/nitya)_ | + +[Chương trình nghị sự 2030 về Phát triển Bền vững](https://sdgs.un.org/2030agenda) - được tất cả các thành viên Liên Hợp Quốc thông qua vào năm 2015 - xác định 17 mục tiêu bao gồm các mục tiêu tập trung vào **Bảo vệ hành tinh** khỏi sự suy thoái và tác động của biến đổi khí hậu. Sáng kiến [Bền vững của Microsoft](https://www.microsoft.com/en-us/sustainability) hỗ trợ các mục tiêu này bằng cách khám phá cách các giải pháp công nghệ có thể hỗ trợ và xây dựng tương lai bền vững hơn với [tập trung vào 4 mục tiêu](https://dev.to/azure/a-visual-guide-to-sustainable-software-engineering-53hh) - trở thành carbon âm, nước dương, không rác thải, và đa dạng sinh học vào năm 2030. + +Để giải quyết các thách thức này một cách quy mô và kịp thời, cần có tư duy quy mô đám mây - và dữ liệu lớn. Sáng kiến [Máy tính Hành tinh](https://planetarycomputer.microsoft.com/) cung cấp 4 thành phần để hỗ trợ các nhà khoa học dữ liệu và nhà phát triển trong nỗ lực này: + + * [Danh mục dữ liệu](https://planetarycomputer.microsoft.com/catalog) - với hàng petabyte dữ liệu Hệ thống Trái đất (miễn phí & được lưu trữ trên Azure). + * [API Máy tính Hành tinh](https://planetarycomputer.microsoft.com/docs/reference/stac/) - giúp người dùng tìm kiếm dữ liệu liên quan theo không gian và thời gian. + * [Hub](https://planetarycomputer.microsoft.com/docs/overview/environment/) - môi trường được quản lý cho các nhà khoa học xử lý các tập dữ liệu địa lý lớn. + * [Ứng dụng](https://planetarycomputer.microsoft.com/applications) - trình bày các trường hợp sử dụng & công cụ để có những hiểu biết về bền vững. +**Dự án Planetary Computer hiện đang trong giai đoạn xem trước (tính đến tháng 9 năm 2021)** - đây là cách bạn có thể bắt đầu đóng góp vào các giải pháp bền vững bằng cách sử dụng khoa học dữ liệu. + +* [Yêu cầu quyền truy cập](https://planetarycomputer.microsoft.com/account/request) để bắt đầu khám phá và kết nối với các đồng nghiệp. +* [Khám phá tài liệu](https://planetarycomputer.microsoft.com/docs/overview/about) để hiểu các tập dữ liệu và API được hỗ trợ. +* Khám phá các ứng dụng như [Ecosystem Monitoring](https://analytics-lab.org/ecosystemmonitoring/) để lấy cảm hứng cho các ý tưởng ứng dụng. + +Hãy suy nghĩ về cách bạn có thể sử dụng trực quan hóa dữ liệu để làm nổi bật hoặc khuếch đại những hiểu biết liên quan đến các lĩnh vực như biến đổi khí hậu và nạn phá rừng. Hoặc suy nghĩ về cách những hiểu biết này có thể được sử dụng để tạo ra các trải nghiệm người dùng mới nhằm thúc đẩy thay đổi hành vi hướng tới lối sống bền vững hơn. + +## Khoa học dữ liệu + Sinh viên + +Chúng ta đã nói về các ứng dụng thực tế trong ngành công nghiệp và nghiên cứu, và đã khám phá các ví dụ ứng dụng khoa học dữ liệu trong nhân văn số và bền vững. Vậy làm thế nào bạn có thể xây dựng kỹ năng và chia sẻ chuyên môn của mình khi là người mới bắt đầu với khoa học dữ liệu? + +Dưới đây là một số ví dụ về các dự án khoa học dữ liệu của sinh viên để truyền cảm hứng cho bạn. + + * [Trường hè Khoa học Dữ liệu MSR](https://www.microsoft.com/en-us/research/academic-program/data-science-summer-school/#!projects) với các [dự án](https://github.com/msr-ds3) trên GitHub khám phá các chủ đề như: + - [Định kiến chủng tộc trong việc sử dụng vũ lực của cảnh sát](https://www.microsoft.com/en-us/research/video/data-science-summer-school-2019-replicating-an-empirical-analysis-of-racial-differences-in-police-use-of-force/) | [Github](https://github.com/msr-ds3/stop-question-frisk) + - [Độ tin cậy của hệ thống tàu điện ngầm NYC](https://www.microsoft.com/en-us/research/video/data-science-summer-school-2018-exploring-the-reliability-of-the-nyc-subway-system/) | [Github](https://github.com/msr-ds3/nyctransit) + * [Số hóa Văn hóa Vật chất: Khám phá phân bố kinh tế-xã hội ở Sirkap](https://claremont.maps.arcgis.com/apps/Cascade/index.html?appid=bdf2aef0f45a4674ba41cd373fa23afc) - từ [Ornella Altunyan](https://twitter.com/ornelladotcom) và nhóm tại Claremont, sử dụng [ArcGIS StoryMaps](https://storymaps.arcgis.com/). + +## 🚀 Thử thách + +Tìm kiếm các bài viết gợi ý các dự án khoa học dữ liệu phù hợp cho người mới bắt đầu - như [50 lĩnh vực chủ đề này](https://www.upgrad.com/blog/data-science-project-ideas-topics-beginners/) hoặc [21 ý tưởng dự án này](https://www.intellspot.com/data-science-project-ideas) hoặc [16 dự án với mã nguồn này](https://data-flair.training/blogs/data-science-project-ideas/) mà bạn có thể phân tích và tái sử dụng. Và đừng quên viết blog về hành trình học tập của bạn và chia sẻ những hiểu biết của bạn với tất cả chúng tôi. + +## Câu hỏi kiểm tra sau bài giảng + +[Câu hỏi kiểm tra sau bài giảng](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/39) + +## Ôn tập & Tự học + +Muốn khám phá thêm các trường hợp sử dụng? Dưới đây là một số bài viết liên quan: + * [17 Ứng dụng và Ví dụ về Khoa học Dữ liệu](https://builtin.com/data-science/data-science-applications-examples) - Tháng 7 năm 2021 + * [11 Ứng dụng Khoa học Dữ liệu Đáng Kinh Ngạc trong Thế Giới Thực](https://myblindbird.com/data-science-applications-real-world/) - Tháng 5 năm 2021 + * [Khoa học Dữ liệu Trong Thế Giới Thực](https://towardsdatascience.com/data-science-in-the-real-world/home) - Bộ sưu tập bài viết + * Khoa học Dữ liệu Trong: [Giáo dục](https://data-flair.training/blogs/data-science-in-education/), [Nông nghiệp](https://data-flair.training/blogs/data-science-in-agriculture/), [Tài chính](https://data-flair.training/blogs/data-science-in-finance/), [Phim ảnh](https://data-flair.training/blogs/data-science-at-movies/) và nhiều lĩnh vực khác. + +## Bài tập + +[Khám phá Một Tập Dữ Liệu Planetary Computer](assignment.md) + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/6-Data-Science-In-Wild/20-Real-World-Examples/assignment.md b/translations/vi/6-Data-Science-In-Wild/20-Real-World-Examples/assignment.md new file mode 100644 index 00000000..c081c76a --- /dev/null +++ b/translations/vi/6-Data-Science-In-Wild/20-Real-World-Examples/assignment.md @@ -0,0 +1,50 @@ + +# Khám phá một bộ dữ liệu từ Planetary Computer + +## Hướng dẫn + +Trong bài học này, chúng ta đã thảo luận về các lĩnh vực ứng dụng khoa học dữ liệu khác nhau - với các ví dụ chuyên sâu liên quan đến nghiên cứu, tính bền vững và nhân văn kỹ thuật số. Trong bài tập này, bạn sẽ khám phá một trong những ví dụ này chi tiết hơn và áp dụng một số kiến thức đã học về trực quan hóa và phân tích dữ liệu để rút ra những hiểu biết về dữ liệu liên quan đến tính bền vững. + +Dự án [Planetary Computer](https://planetarycomputer.microsoft.com/) có các bộ dữ liệu và API có thể truy cập bằng tài khoản - hãy yêu cầu một tài khoản nếu bạn muốn thử bước bổ sung của bài tập. Trang web cũng cung cấp tính năng [Explorer](https://planetarycomputer.microsoft.com/explore) mà bạn có thể sử dụng mà không cần tạo tài khoản. + +`Các bước:` +Giao diện Explorer (hiển thị trong ảnh chụp màn hình bên dưới) cho phép bạn chọn một bộ dữ liệu (từ các tùy chọn được cung cấp), một truy vấn cài sẵn (để lọc dữ liệu) và một tùy chọn hiển thị (để tạo trực quan hóa phù hợp). Trong bài tập này, nhiệm vụ của bạn là: + + 1. Đọc [tài liệu Explorer](https://planetarycomputer.microsoft.com/docs/overview/explorer/) - hiểu các tùy chọn. + 2. Khám phá [Danh mục bộ dữ liệu](https://planetarycomputer.microsoft.com/catalog) - tìm hiểu mục đích của từng bộ dữ liệu. + 3. Sử dụng Explorer - chọn một bộ dữ liệu bạn quan tâm, chọn một truy vấn và tùy chọn hiển thị phù hợp. + +![Giao diện Explorer của Planetary Computer](../../../../translated_images/planetary-computer-explorer.c1e95a9b053167d64e2e8e4347cfb689e47e2037c33103fc1bbea1a149d4f85b.vi.png) + +`Nhiệm vụ của bạn:` +Bây giờ hãy nghiên cứu trực quan hóa được hiển thị trong trình duyệt và trả lời các câu hỏi sau: + * Bộ dữ liệu có những _đặc điểm_ nào? + * Trực quan hóa cung cấp những _hiểu biết_ hoặc kết quả nào? + * Những _hệ quả_ của các hiểu biết đó đối với các mục tiêu bền vững của dự án là gì? + * Những _hạn chế_ của trực quan hóa là gì (tức là, bạn không nhận được thông tin nào)? + * Nếu bạn có thể truy cập dữ liệu thô, bạn sẽ tạo ra những _trực quan hóa thay thế_ nào, và tại sao? + +`Điểm thưởng:` +Đăng ký tài khoản - và đăng nhập khi được chấp nhận. + * Sử dụng tùy chọn _Launch Hub_ để mở dữ liệu thô trong Notebook. + * Khám phá dữ liệu một cách tương tác và triển khai các trực quan hóa thay thế mà bạn đã nghĩ đến. + * Bây giờ phân tích các trực quan hóa tùy chỉnh của bạn - liệu bạn có thể rút ra những hiểu biết mà trước đó bạn đã bỏ lỡ không? + +## Tiêu chí đánh giá + +Xuất sắc | Đạt yêu cầu | Cần cải thiện +--- | --- | -- | +Trả lời đầy đủ năm câu hỏi chính. Học sinh xác định rõ cách các trực quan hóa hiện tại và thay thế có thể cung cấp hiểu biết về các mục tiêu hoặc kết quả bền vững. | Học sinh trả lời ít nhất 3 câu hỏi đầu tiên một cách chi tiết, cho thấy đã có trải nghiệm thực tế với Explorer. | Học sinh không trả lời nhiều câu hỏi hoặc cung cấp chi tiết không đủ - cho thấy không có nỗ lực đáng kể nào được thực hiện cho bài tập. | + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/6-Data-Science-In-Wild/README.md b/translations/vi/6-Data-Science-In-Wild/README.md new file mode 100644 index 00000000..728425a9 --- /dev/null +++ b/translations/vi/6-Data-Science-In-Wild/README.md @@ -0,0 +1,25 @@ + +# Khoa học dữ liệu trong thực tế + +Ứng dụng thực tế của khoa học dữ liệu trong các ngành công nghiệp. + +### Chủ đề + +1. [Khoa học dữ liệu trong thế giới thực](20-Real-World-Examples/README.md) + +### Tín dụng + +Được viết với ❤️ bởi [Nitya Narasimhan](https://twitter.com/nitya) + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/CODE_OF_CONDUCT.md b/translations/vi/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..5f0667aa --- /dev/null +++ b/translations/vi/CODE_OF_CONDUCT.md @@ -0,0 +1,23 @@ + +# Quy tắc ứng xử mã nguồn mở của Microsoft + +Dự án này đã áp dụng [Quy tắc ứng xử mã nguồn mở của Microsoft](https://opensource.microsoft.com/codeofconduct/). + +Tài nguyên: + +- [Quy tắc ứng xử mã nguồn mở của Microsoft](https://opensource.microsoft.com/codeofconduct/) +- [Câu hỏi thường gặp về Quy tắc ứng xử của Microsoft](https://opensource.microsoft.com/codeofconduct/faq/) +- Liên hệ [opencode@microsoft.com](mailto:opencode@microsoft.com) nếu có câu hỏi hoặc mối quan tâm + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tham khảo chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/CONTRIBUTING.md b/translations/vi/CONTRIBUTING.md new file mode 100644 index 00000000..e9931622 --- /dev/null +++ b/translations/vi/CONTRIBUTING.md @@ -0,0 +1,23 @@ + +# Đóng góp + +Dự án này hoan nghênh các đóng góp và gợi ý. Hầu hết các đóng góp yêu cầu bạn đồng ý với Thỏa thuận Cấp phép Người đóng góp (CLA), xác nhận rằng bạn có quyền và thực sự cấp cho chúng tôi quyền sử dụng đóng góp của bạn. Để biết thêm chi tiết, hãy truy cập https://cla.microsoft.com. + +Khi bạn gửi một yêu cầu kéo (pull request), CLA-bot sẽ tự động xác định liệu bạn có cần cung cấp CLA hay không và sẽ đánh dấu PR một cách phù hợp (ví dụ: gắn nhãn, bình luận). Chỉ cần làm theo hướng dẫn được cung cấp bởi bot. Bạn chỉ cần thực hiện việc này một lần trên tất cả các kho lưu trữ sử dụng CLA của chúng tôi. + +Dự án này đã áp dụng [Bộ Quy tắc Ứng xử Mã Nguồn Mở của Microsoft](https://opensource.microsoft.com/codeofconduct/). +Để biết thêm thông tin, hãy xem [Câu hỏi thường gặp về Quy tắc Ứng xử](https://opensource.microsoft.com/codeofconduct/faq/) +hoặc liên hệ [opencode@microsoft.com](mailto:opencode@microsoft.com) nếu bạn có bất kỳ câu hỏi hoặc ý kiến bổ sung nào. + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tham khảo chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/README.md b/translations/vi/README.md new file mode 100644 index 00000000..3ca6c8a1 --- /dev/null +++ b/translations/vi/README.md @@ -0,0 +1,155 @@ + +# Khoa học Dữ liệu cho Người mới bắt đầu - Một Chương trình Học + +Azure Cloud Advocates tại Microsoft rất vui mừng giới thiệu một chương trình học kéo dài 10 tuần, gồm 20 bài học về Khoa học Dữ liệu. Mỗi bài học bao gồm các câu hỏi kiểm tra trước và sau bài học, hướng dẫn chi tiết để hoàn thành bài học, giải pháp và bài tập. Phương pháp học dựa trên dự án của chúng tôi cho phép bạn học thông qua việc thực hành, một cách hiệu quả để các kỹ năng mới được ghi nhớ lâu dài. + +**Chân thành cảm ơn các tác giả:** [Jasmine Greenaway](https://www.twitter.com/paladique), [Dmitry Soshnikov](http://soshnikov.com), [Nitya Narasimhan](https://twitter.com/nitya), [Jalen McGee](https://twitter.com/JalenMcG), [Jen Looper](https://twitter.com/jenlooper), [Maud Levy](https://twitter.com/maudstweets), [Tiffany Souterre](https://twitter.com/TiffanySouterre), [Christopher Harrison](https://www.twitter.com/geektrainer). + +**🙏 Đặc biệt cảm ơn 🙏 các [Đại sứ Sinh viên Microsoft](https://studentambassadors.microsoft.com/) là tác giả, người đánh giá và đóng góp nội dung,** đặc biệt là Aaryan Arora, [Aditya Garg](https://github.com/AdityaGarg00), [Alondra Sanchez](https://www.linkedin.com/in/alondra-sanchez-molina/), [Ankita Singh](https://www.linkedin.com/in/ankitasingh007), [Anupam Mishra](https://www.linkedin.com/in/anupam--mishra/), [Arpita Das](https://www.linkedin.com/in/arpitadas01/), ChhailBihari Dubey, [Dibri Nsofor](https://www.linkedin.com/in/dibrinsofor), [Dishita Bhasin](https://www.linkedin.com/in/dishita-bhasin-7065281bb), [Majd Safi](https://www.linkedin.com/in/majd-s/), [Max Blum](https://www.linkedin.com/in/max-blum-6036a1186/), [Miguel Correa](https://www.linkedin.com/in/miguelmque/), [Mohamma Iftekher (Iftu) Ebne Jalal](https://twitter.com/iftu119), [Nawrin Tabassum](https://www.linkedin.com/in/nawrin-tabassum), [Raymond Wangsa Putra](https://www.linkedin.com/in/raymond-wp/), [Rohit Yadav](https://www.linkedin.com/in/rty2423), Samridhi Sharma, [Sanya Sinha](https://www.linkedin.com/mwlite/in/sanya-sinha-13aab1200), [Sheena Narula](https://www.linkedin.com/in/sheena-narua-n/), [Tauqeer Ahmad](https://www.linkedin.com/in/tauqeerahmad5201/), Yogendrasingh Pawar, [Vidushi Gupta](https://www.linkedin.com/in/vidushi-gupta07/), [Jasleen Sondhi](https://www.linkedin.com/in/jasleen-sondhi/) + +|![Sketchnote by @sketchthedocs https://sketchthedocs.dev](../../translated_images/00-Title.8af36cd35da1ac555b678627fbdc6e320c75f0100876ea41d30ea205d3b08d22.vi.png)| +|:---:| +| Khoa học Dữ liệu cho Người mới bắt đầu - _Sketchnote bởi [@nitya](https://twitter.com/nitya)_ | + +### 🌐 Hỗ trợ Đa ngôn ngữ + +#### Được hỗ trợ qua GitHub Action (Tự động & Luôn cập nhật) + +[French](../fr/README.md) | [Spanish](../es/README.md) | [German](../de/README.md) | [Russian](../ru/README.md) | [Arabic](../ar/README.md) | [Persian (Farsi)](../fa/README.md) | [Urdu](../ur/README.md) | [Chinese (Simplified)](../zh/README.md) | [Chinese (Traditional, Macau)](../mo/README.md) | [Chinese (Traditional, Hong Kong)](../hk/README.md) | [Chinese (Traditional, Taiwan)](../tw/README.md) | [Japanese](../ja/README.md) | [Korean](../ko/README.md) | [Hindi](../hi/README.md) | [Bengali](../bn/README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Portuguese (Portugal)](../pt/README.md) | [Portuguese (Brazil)](../br/README.md) | [Italian](../it/README.md) | [Polish](../pl/README.md) | [Turkish](../tr/README.md) | [Greek](../el/README.md) | [Thai](../th/README.md) | [Swedish](../sv/README.md) | [Danish](../da/README.md) | [Norwegian](../no/README.md) | [Finnish](../fi/README.md) | [Dutch](../nl/README.md) | [Hebrew](../he/README.md) | [Vietnamese](./README.md) | [Indonesian](../id/README.md) | [Malay](../ms/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Swahili](../sw/README.md) | [Hungarian](../hu/README.md) | [Czech](../cs/README.md) | [Slovak](../sk/README.md) | [Romanian](../ro/README.md) | [Bulgarian](../bg/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Croatian](../hr/README.md) | [Slovenian](../sl/README.md) | [Ukrainian](../uk/README.md) | [Burmese (Myanmar)](../my/README.md) + +**Nếu bạn muốn có thêm các ngôn ngữ được hỗ trợ, danh sách các ngôn ngữ có sẵn [ở đây](https://github.com/Azure/co-op-translator/blob/main/getting_started/supported-languages.md)** + +#### Tham gia Cộng đồng của Chúng tôi +[![Azure AI Discord](https://dcbadge.limes.pink/api/server/kzRShWzttr)](https://discord.gg/kzRShWzttr) + +# Bạn là sinh viên? + +Hãy bắt đầu với các tài nguyên sau: + +- [Trang Hub Sinh viên](https://docs.microsoft.com/en-gb/learn/student-hub?WT.mc_id=academic-77958-bethanycheum) Tại đây, bạn sẽ tìm thấy các tài nguyên cho người mới bắt đầu, các gói dành cho sinh viên và thậm chí là cách để nhận voucher chứng chỉ miễn phí. Đây là một trang bạn nên đánh dấu và kiểm tra thường xuyên vì nội dung được cập nhật ít nhất hàng tháng. +- [Đại sứ Sinh viên Microsoft](https://studentambassadors.microsoft.com?WT.mc_id=academic-77958-bethanycheum) Tham gia cộng đồng toàn cầu của các đại sứ sinh viên, đây có thể là cơ hội để bạn bước vào Microsoft. + +# Bắt đầu + +> **Giáo viên**: chúng tôi đã [bao gồm một số gợi ý](for-teachers.md) về cách sử dụng chương trình học này. Chúng tôi rất mong nhận được phản hồi của bạn [trong diễn đàn thảo luận của chúng tôi](https://github.com/microsoft/Data-Science-For-Beginners/discussions)! + +> **[Sinh viên](https://aka.ms/student-page)**: để sử dụng chương trình học này một cách độc lập, hãy fork toàn bộ repo và hoàn thành các bài tập theo cách của bạn, bắt đầu với bài kiểm tra trước bài học. Sau đó, đọc bài giảng và hoàn thành các hoạt động còn lại. Hãy cố gắng tạo các dự án bằng cách hiểu bài học thay vì sao chép mã giải pháp; tuy nhiên, mã giải pháp có sẵn trong thư mục /solutions của mỗi bài học dựa trên dự án. Một ý tưởng khác là thành lập nhóm học tập với bạn bè và cùng nhau học qua nội dung. Để học thêm, chúng tôi khuyến nghị [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/qprpajyoy3x0g7?WT.mc_id=academic-77958-bethanycheum). + +## Gặp gỡ Đội ngũ + +[![Video giới thiệu](../../ds-for-beginners.gif)](https://youtu.be/8mzavjQSMM4 "Video giới thiệu") + +**Gif bởi** [Mohit Jaisal](https://www.linkedin.com/in/mohitjaisal) + +> 🎥 Nhấp vào hình ảnh trên để xem video về dự án và những người đã tạo ra nó! + +## Phương pháp giảng dạy + +Chúng tôi đã chọn hai nguyên tắc giảng dạy khi xây dựng chương trình học này: đảm bảo rằng nó dựa trên dự án và bao gồm các câu hỏi kiểm tra thường xuyên. Đến cuối loạt bài này, sinh viên sẽ học được các nguyên tắc cơ bản của khoa học dữ liệu, bao gồm các khái niệm đạo đức, chuẩn bị dữ liệu, các cách làm việc khác nhau với dữ liệu, trực quan hóa dữ liệu, phân tích dữ liệu, các trường hợp sử dụng thực tế của khoa học dữ liệu và nhiều hơn nữa. + +Ngoài ra, một bài kiểm tra nhẹ nhàng trước lớp giúp sinh viên tập trung vào việc học một chủ đề, trong khi một bài kiểm tra thứ hai sau lớp đảm bảo sự ghi nhớ lâu dài. Chương trình học này được thiết kế để linh hoạt và thú vị, có thể học toàn bộ hoặc từng phần. Các dự án bắt đầu từ đơn giản và trở nên phức tạp hơn vào cuối chu kỳ 10 tuần. +> Tìm hiểu [Quy tắc ứng xử](CODE_OF_CONDUCT.md), [Hướng dẫn đóng góp](CONTRIBUTING.md), [Hướng dẫn dịch thuật](TRANSLATIONS.md). Chúng tôi rất mong nhận được phản hồi mang tính xây dựng từ bạn! +## Mỗi bài học bao gồm: + +- Sketchnote (tùy chọn) +- Video bổ sung (tùy chọn) +- Bài kiểm tra khởi động trước bài học +- Bài học viết +- Đối với các bài học dựa trên dự án, hướng dẫn từng bước để xây dựng dự án +- Kiểm tra kiến thức +- Một thử thách +- Tài liệu đọc bổ sung +- Bài tập +- [Bài kiểm tra sau bài học](https://ff-quizzes.netlify.app/en/) + +> **Lưu ý về các bài kiểm tra**: Tất cả các bài kiểm tra được chứa trong thư mục Quiz-App, với tổng cộng 40 bài kiểm tra, mỗi bài gồm ba câu hỏi. Chúng được liên kết từ trong các bài học, nhưng ứng dụng kiểm tra có thể chạy cục bộ hoặc triển khai trên Azure; hãy làm theo hướng dẫn trong thư mục `quiz-app`. Các bài kiểm tra đang dần được bản địa hóa. + +## Các bài học + +|![ Sketchnote của @sketchthedocs https://sketchthedocs.dev](../../translated_images/00-Roadmap.4905d6567dff47532b9bfb8e0b8980fc6b0b1292eebb24181c1a9753b33bc0f5.vi.png)| +|:---:| +| Khoa học Dữ liệu cho Người mới bắt đầu: Lộ trình - _Sketchnote của [@nitya](https://twitter.com/nitya)_ | + +| Số bài học | Chủ đề | Nhóm bài học | Mục tiêu học tập | Liên kết bài học | Tác giả | +| :-----------: | :----------------------------------------: | :--------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------: | :----: | +| 01 | Định nghĩa Khoa học Dữ liệu | [Giới thiệu](1-Introduction/README.md) | Tìm hiểu các khái niệm cơ bản về khoa học dữ liệu và mối liên hệ của nó với trí tuệ nhân tạo, học máy và dữ liệu lớn. | [bài học](1-Introduction/01-defining-data-science/README.md) [video](https://youtu.be/beZ7Mb_oz9I) | [Dmitry](http://soshnikov.com) | +| 02 | Đạo đức trong Khoa học Dữ liệu | [Giới thiệu](1-Introduction/README.md) | Các khái niệm, thách thức và khung đạo đức dữ liệu. | [bài học](1-Introduction/02-ethics/README.md) | [Nitya](https://twitter.com/nitya) | +| 03 | Định nghĩa Dữ liệu | [Giới thiệu](1-Introduction/README.md) | Cách phân loại dữ liệu và các nguồn dữ liệu phổ biến. | [bài học](1-Introduction/03-defining-data/README.md) | [Jasmine](https://www.twitter.com/paladique) | +| 04 | Giới thiệu về Thống kê & Xác suất | [Giới thiệu](1-Introduction/README.md) | Các kỹ thuật toán học về xác suất và thống kê để hiểu dữ liệu. | [bài học](1-Introduction/04-stats-and-probability/README.md) [video](https://youtu.be/Z5Zy85g4Yjw) | [Dmitry](http://soshnikov.com) | +| 05 | Làm việc với Dữ liệu Quan hệ | [Làm việc với Dữ liệu](2-Working-With-Data/README.md) | Giới thiệu về dữ liệu quan hệ và các khái niệm cơ bản để khám phá và phân tích dữ liệu quan hệ bằng Ngôn ngữ Truy vấn Có cấu trúc, còn được gọi là SQL (phát âm là “see-quell”). | [bài học](2-Working-With-Data/05-relational-databases/README.md) | [Christopher](https://www.twitter.com/geektrainer) | | | +| 06 | Làm việc với Dữ liệu NoSQL | [Làm việc với Dữ liệu](2-Working-With-Data/README.md) | Giới thiệu về dữ liệu phi quan hệ, các loại khác nhau của nó và các khái niệm cơ bản để khám phá và phân tích cơ sở dữ liệu tài liệu. | [bài học](2-Working-With-Data/06-non-relational/README.md) | [Jasmine](https://twitter.com/paladique)| +| 07 | Làm việc với Python | [Làm việc với Dữ liệu](2-Working-With-Data/README.md) | Các khái niệm cơ bản về sử dụng Python để khám phá dữ liệu với các thư viện như Pandas. Khuyến nghị có kiến thức cơ bản về lập trình Python. | [bài học](2-Working-With-Data/07-python/README.md) [video](https://youtu.be/dZjWOGbsN4Y) | [Dmitry](http://soshnikov.com) | +| 08 | Chuẩn bị Dữ liệu | [Làm việc với Dữ liệu](2-Working-With-Data/README.md) | Các chủ đề về kỹ thuật làm sạch và chuyển đổi dữ liệu để xử lý các thách thức như dữ liệu thiếu, không chính xác hoặc không đầy đủ. | [bài học](2-Working-With-Data/08-data-preparation/README.md) | [Jasmine](https://www.twitter.com/paladique) | +| 09 | Trực quan hóa Số lượng | [Trực quan hóa Dữ liệu](3-Data-Visualization/README.md) | Tìm hiểu cách sử dụng Matplotlib để trực quan hóa dữ liệu về chim 🦆 | [bài học](3-Data-Visualization/09-visualization-quantities/README.md) | [Jen](https://twitter.com/jenlooper) | +| 10 | Trực quan hóa Phân phối Dữ liệu | [Trực quan hóa Dữ liệu](3-Data-Visualization/README.md) | Trực quan hóa các quan sát và xu hướng trong một khoảng. | [bài học](3-Data-Visualization/10-visualization-distributions/README.md) | [Jen](https://twitter.com/jenlooper) | +| 11 | Trực quan hóa Tỷ lệ | [Trực quan hóa Dữ liệu](3-Data-Visualization/README.md) | Trực quan hóa các tỷ lệ phần trăm rời rạc và nhóm. | [bài học](3-Data-Visualization/11-visualization-proportions/README.md) | [Jen](https://twitter.com/jenlooper) | +| 12 | Trực quan hóa Mối quan hệ | [Trực quan hóa Dữ liệu](3-Data-Visualization/README.md) | Trực quan hóa các kết nối và mối tương quan giữa các tập dữ liệu và các biến của chúng. | [bài học](3-Data-Visualization/12-visualization-relationships/README.md) | [Jen](https://twitter.com/jenlooper) | +| 13 | Trực quan hóa Có ý nghĩa | [Trực quan hóa Dữ liệu](3-Data-Visualization/README.md) | Các kỹ thuật và hướng dẫn để làm cho các trực quan hóa của bạn có giá trị trong việc giải quyết vấn đề và cung cấp thông tin chi tiết hiệu quả. | [bài học](3-Data-Visualization/13-meaningful-visualizations/README.md) | [Jen](https://twitter.com/jenlooper) | +| 14 | Giới thiệu về Vòng đời Khoa học Dữ liệu | [Vòng đời](4-Data-Science-Lifecycle/README.md) | Giới thiệu về vòng đời khoa học dữ liệu và bước đầu tiên của nó là thu thập và trích xuất dữ liệu. | [bài học](4-Data-Science-Lifecycle/14-Introduction/README.md) | [Jasmine](https://twitter.com/paladique) | +| 15 | Phân tích | [Vòng đời](4-Data-Science-Lifecycle/README.md) | Giai đoạn này của vòng đời khoa học dữ liệu tập trung vào các kỹ thuật để phân tích dữ liệu. | [bài học](4-Data-Science-Lifecycle/15-analyzing/README.md) | [Jasmine](https://twitter.com/paladique) | | | +| 16 | Truyền đạt | [Vòng đời](4-Data-Science-Lifecycle/README.md) | Giai đoạn này của vòng đời khoa học dữ liệu tập trung vào việc trình bày các thông tin chi tiết từ dữ liệu theo cách giúp người ra quyết định dễ dàng hiểu hơn. | [bài học](4-Data-Science-Lifecycle/16-communication/README.md) | [Jalen](https://twitter.com/JalenMcG) | | | +| 17 | Khoa học Dữ liệu trên Đám mây | [Dữ liệu Đám mây](5-Data-Science-In-Cloud/README.md) | Chuỗi bài học này giới thiệu khoa học dữ liệu trên đám mây và các lợi ích của nó. | [bài học](5-Data-Science-In-Cloud/17-Introduction/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) và [Maud](https://twitter.com/maudstweets) | +| 18 | Khoa học Dữ liệu trên Đám mây | [Dữ liệu Đám mây](5-Data-Science-In-Cloud/README.md) | Huấn luyện mô hình bằng các công cụ Low Code. |[bài học](5-Data-Science-In-Cloud/18-Low-Code/README.md) | [Tiffany](https://twitter.com/TiffanySouterre) và [Maud](https://twitter.com/maudstweets) | +| 19 | Khoa học Dữ liệu trên Đám mây | [Dữ liệu Đám mây](5-Data-Science-In-Cloud/README.md) | Triển khai mô hình với Azure Machine Learning Studio. | [bài học](5-Data-Science-In-Cloud/19-Azure/README.md)| [Tiffany](https://twitter.com/TiffanySouterre) và [Maud](https://twitter.com/maudstweets) | +| 20 | Khoa học Dữ liệu trong Thực tế | [Trong Thực tế](6-Data-Science-In-Wild/README.md) | Các dự án khoa học dữ liệu được thúc đẩy trong thế giới thực. | [bài học](6-Data-Science-In-Wild/20-Real-World-Examples/README.md) | [Nitya](https://twitter.com/nitya) | + +## GitHub Codespaces + +Thực hiện các bước sau để mở mẫu này trong Codespace: +1. Nhấp vào menu thả xuống Code và chọn tùy chọn Open with Codespaces. +2. Chọn + New codespace ở cuối bảng. +Để biết thêm thông tin, hãy xem [tài liệu GitHub](https://docs.github.com/en/codespaces/developing-in-codespaces/creating-a-codespace-for-a-repository#creating-a-codespace). + +## VSCode Remote - Containers + +Thực hiện các bước sau để mở kho lưu trữ này trong một container bằng máy cục bộ của bạn và VSCode với tiện ích mở rộng VS Code Remote - Containers: + +1. Nếu đây là lần đầu tiên bạn sử dụng container phát triển, hãy đảm bảo hệ thống của bạn đáp ứng các yêu cầu (ví dụ: đã cài đặt Docker) trong [tài liệu bắt đầu](https://code.visualstudio.com/docs/devcontainers/containers#_getting-started). + +Để sử dụng kho lưu trữ này, bạn có thể mở kho lưu trữ trong một volume Docker cách ly: + +**Lưu ý**: Ở phía dưới, điều này sẽ sử dụng lệnh Remote-Containers: **Clone Repository in Container Volume...** để sao chép mã nguồn vào một volume Docker thay vì hệ thống tệp cục bộ. [Volumes](https://docs.docker.com/storage/volumes/) là cơ chế được ưu tiên để lưu trữ dữ liệu container. + +Hoặc mở một phiên bản đã sao chép hoặc tải xuống cục bộ của kho lưu trữ: + +- Sao chép kho lưu trữ này vào hệ thống tệp cục bộ của bạn. +- Nhấn F1 và chọn lệnh **Remote-Containers: Open Folder in Container...**. +- Chọn bản sao đã sao chép của thư mục này, đợi container khởi động và thử nghiệm. + +## Truy cập ngoại tuyến + +Bạn có thể chạy tài liệu này ngoại tuyến bằng cách sử dụng [Docsify](https://docsify.js.org/#/). Fork kho lưu trữ này, [cài đặt Docsify](https://docsify.js.org/#/quickstart) trên máy cục bộ của bạn, sau đó trong thư mục gốc của kho lưu trữ này, gõ `docsify serve`. Trang web sẽ được phục vụ trên cổng 3000 trên localhost của bạn: `localhost:3000`. + +> Lưu ý, các notebook sẽ không được hiển thị qua Docsify, vì vậy khi bạn cần chạy một notebook, hãy thực hiện riêng trong VS Code với kernel Python. + +## Các chương trình học khác + +Nhóm của chúng tôi sản xuất các chương trình học khác! Hãy xem: + +- [Generative AI for Beginners](https://aka.ms/genai-beginners) +- [Generative AI for Beginners .NET](https://github.com/microsoft/Generative-AI-for-beginners-dotnet) +- [Generative AI with JavaScript](https://github.com/microsoft/generative-ai-with-javascript) +- [Generative AI with Java](https://aka.ms/genaijava) +- [AI for Beginners](https://aka.ms/ai-beginners) +- [Data Science for Beginners](https://aka.ms/datascience-beginners) +- [ML for Beginners](https://aka.ms/ml-beginners) +- [Cybersecurity for Beginners](https://github.com/microsoft/Security-101) +- [Web Dev for Beginners](https://aka.ms/webdev-beginners) +- [IoT for Beginners](https://aka.ms/iot-beginners) +- [XR Development for Beginners](https://github.com/microsoft/xr-development-for-beginners) +- [Mastering GitHub Copilot for Paired Programming](https://github.com/microsoft/Mastering-GitHub-Copilot-for-Paired-Programming) +- [Mastering GitHub Copilot for C#/.NET Developers](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers) +- [Choose Your Own Copilot Adventure](https://github.com/microsoft/CopilotAdventures) + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/SECURITY.md b/translations/vi/SECURITY.md new file mode 100644 index 00000000..95a1be46 --- /dev/null +++ b/translations/vi/SECURITY.md @@ -0,0 +1,51 @@ + +## Bảo mật + +Microsoft coi trọng vấn đề bảo mật của các sản phẩm và dịch vụ phần mềm của mình, bao gồm tất cả các kho mã nguồn được quản lý thông qua các tổ chức GitHub của chúng tôi, bao gồm [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), và [các tổ chức GitHub của chúng tôi](https://opensource.microsoft.com/). + +Nếu bạn tin rằng mình đã phát hiện ra một lỗ hổng bảo mật trong bất kỳ kho lưu trữ nào thuộc sở hữu của Microsoft đáp ứng [định nghĩa về lỗ hổng bảo mật của Microsoft](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc751383(v=technet.10)), vui lòng báo cáo cho chúng tôi theo hướng dẫn dưới đây. + +## Báo cáo Vấn đề Bảo mật + +**Vui lòng không báo cáo các lỗ hổng bảo mật thông qua các vấn đề công khai trên GitHub.** + +Thay vào đó, hãy báo cáo chúng cho Trung tâm Phản hồi Bảo mật của Microsoft (MSRC) tại [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report). + +Nếu bạn muốn gửi báo cáo mà không cần đăng nhập, hãy gửi email đến [secure@microsoft.com](mailto:secure@microsoft.com). Nếu có thể, hãy mã hóa tin nhắn của bạn bằng khóa PGP của chúng tôi; vui lòng tải xuống từ [trang Khóa PGP của Trung tâm Phản hồi Bảo mật Microsoft](https://www.microsoft.com/en-us/msrc/pgp-key-msrc). + +Bạn sẽ nhận được phản hồi trong vòng 24 giờ. Nếu vì lý do nào đó bạn không nhận được phản hồi, vui lòng gửi email theo dõi để đảm bảo chúng tôi đã nhận được tin nhắn ban đầu của bạn. Thông tin bổ sung có thể được tìm thấy tại [microsoft.com/msrc](https://www.microsoft.com/msrc). + +Vui lòng bao gồm các thông tin được yêu cầu dưới đây (càng chi tiết càng tốt) để giúp chúng tôi hiểu rõ hơn về bản chất và phạm vi của vấn đề có thể xảy ra: + + * Loại vấn đề (ví dụ: tràn bộ đệm, SQL injection, cross-site scripting, v.v.) + * Đường dẫn đầy đủ của tệp nguồn liên quan đến sự cố + * Vị trí của mã nguồn bị ảnh hưởng (tag/branch/commit hoặc URL trực tiếp) + * Bất kỳ cấu hình đặc biệt nào cần thiết để tái tạo sự cố + * Hướng dẫn từng bước để tái tạo sự cố + * Mã minh chứng hoặc mã khai thác (nếu có thể) + * Tác động của vấn đề, bao gồm cách kẻ tấn công có thể khai thác vấn đề + +Những thông tin này sẽ giúp chúng tôi xử lý báo cáo của bạn nhanh hơn. + +Nếu bạn báo cáo để nhận thưởng lỗi, các báo cáo chi tiết hơn có thể đóng góp vào mức thưởng cao hơn. Vui lòng truy cập trang [Chương trình Thưởng Lỗi của Microsoft](https://microsoft.com/msrc/bounty) để biết thêm chi tiết về các chương trình đang hoạt động. + +## Ngôn ngữ Ưu tiên + +Chúng tôi ưu tiên tất cả các trao đổi bằng tiếng Anh. + +## Chính sách + +Microsoft tuân theo nguyên tắc [Tiết lộ Lỗ hổng Phối hợp](https://www.microsoft.com/en-us/msrc/cvd). + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tham khảo chính thức. Đối với các thông tin quan trọng, chúng tôi khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/SUPPORT.md b/translations/vi/SUPPORT.md new file mode 100644 index 00000000..37e7baff --- /dev/null +++ b/translations/vi/SUPPORT.md @@ -0,0 +1,24 @@ + +# Hỗ trợ +## Cách gửi vấn đề và nhận trợ giúp + +Dự án này sử dụng GitHub Issues để theo dõi lỗi và yêu cầu tính năng. Vui lòng tìm kiếm các vấn đề hiện có trước khi gửi vấn đề mới để tránh trùng lặp. Đối với các vấn đề mới, hãy gửi lỗi hoặc yêu cầu tính năng của bạn dưới dạng một Issue mới. + +Để nhận trợ giúp và đặt câu hỏi về việc sử dụng dự án này, hãy gửi một Issue. + +## Chính sách hỗ trợ của Microsoft + +Hỗ trợ cho kho lưu trữ này chỉ giới hạn trong các tài nguyên được liệt kê ở trên. + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tham khảo chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/docs/_sidebar.md b/translations/vi/docs/_sidebar.md new file mode 100644 index 00000000..9508d9e5 --- /dev/null +++ b/translations/vi/docs/_sidebar.md @@ -0,0 +1,40 @@ + +- Giới thiệu + - [Định nghĩa Khoa học Dữ liệu](../1-Introduction/01-defining-data-science/README.md) + - [Đạo đức trong Khoa học Dữ liệu](../1-Introduction/02-ethics/README.md) + - [Định nghĩa Dữ liệu](../1-Introduction/03-defining-data/README.md) + - [Xác suất và Thống kê](../1-Introduction/04-stats-and-probability/README.md) +- Làm việc với Dữ liệu + - [Cơ sở dữ liệu quan hệ](../2-Working-With-Data/05-relational-databases/README.md) + - [Cơ sở dữ liệu phi quan hệ](../2-Working-With-Data/06-non-relational/README.md) + - [Python](../2-Working-With-Data/07-python/README.md) + - [Chuẩn bị Dữ liệu](../2-Working-With-Data/08-data-preparation/README.md) +- Trực quan hóa Dữ liệu + - [Trực quan hóa Số lượng](../3-Data-Visualization/09-visualization-quantities/README.md) + - [Trực quan hóa Phân phối](../3-Data-Visualization/10-visualization-distributions/README.md) + - [Trực quan hóa Tỷ lệ](../3-Data-Visualization/11-visualization-proportions/README.md) + - [Trực quan hóa Mối quan hệ](../3-Data-Visualization/12-visualization-relationships/README.md) + - [Trực quan hóa Có ý nghĩa](../3-Data-Visualization/13-meaningful-visualizations/README.md) +- Vòng đời Khoa học Dữ liệu + - [Giới thiệu](../4-Data-Science-Lifecycle/14-Introduction/README.md) + - [Phân tích](../4-Data-Science-Lifecycle/15-analyzing/README.md) + - [Truyền đạt thông tin](../4-Data-Science-Lifecycle/16-communication/README.md) +- Khoa học Dữ liệu trên Đám mây + - [Giới thiệu](../5-Data-Science-In-Cloud/17-Introduction/README.md) + - [Low Code](../5-Data-Science-In-Cloud/18-Low-Code/README.md) + - [Azure](../5-Data-Science-In-Cloud/19-Azure/README.md) +- Khoa học Dữ liệu trong Thực tế + - [Khoa học Dữ liệu trong Thực tế](../6-Data-Science-In-Wild/README.md) + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tham khảo chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/for-teachers.md b/translations/vi/for-teachers.md new file mode 100644 index 00000000..29f75cd9 --- /dev/null +++ b/translations/vi/for-teachers.md @@ -0,0 +1,78 @@ + +## Dành cho giáo viên + +Bạn có muốn sử dụng chương trình học này trong lớp học của mình không? Xin cứ tự nhiên! + +Thực tế, bạn có thể sử dụng nó ngay trên GitHub bằng cách sử dụng GitHub Classroom. + +Để làm điều đó, hãy fork repo này. Bạn sẽ cần tạo một repo cho mỗi bài học, vì vậy bạn sẽ cần tách từng thư mục thành một repo riêng biệt. Bằng cách đó, [GitHub Classroom](https://classroom.github.com/classrooms) có thể nhận từng bài học một cách riêng lẻ. + +Những [hướng dẫn đầy đủ](https://github.blog/2020-03-18-set-up-your-digital-classroom-with-github-classroom/) này sẽ giúp bạn hình dung cách thiết lập lớp học của mình. + +## Sử dụng repo như hiện tại + +Nếu bạn muốn sử dụng repo này như hiện tại, mà không cần sử dụng GitHub Classroom, điều đó cũng hoàn toàn khả thi. Bạn sẽ cần giao tiếp với học sinh của mình để xác định bài học nào sẽ cùng nhau thực hiện. + +Trong hình thức trực tuyến (Zoom, Teams, hoặc các nền tảng khác), bạn có thể tạo các phòng thảo luận nhỏ cho các bài kiểm tra, và hướng dẫn học sinh để giúp họ sẵn sàng học tập. Sau đó, mời học sinh tham gia các bài kiểm tra và nộp câu trả lời của họ dưới dạng 'issues' vào một thời điểm nhất định. Bạn cũng có thể làm tương tự với các bài tập, nếu bạn muốn học sinh làm việc cùng nhau một cách công khai. + +Nếu bạn thích hình thức riêng tư hơn, hãy yêu cầu học sinh fork chương trình học, từng bài học một, vào các repo GitHub riêng tư của họ và cấp quyền truy cập cho bạn. Sau đó, họ có thể hoàn thành các bài kiểm tra và bài tập một cách riêng tư và gửi cho bạn thông qua issues trên repo lớp học của bạn. + +Có rất nhiều cách để làm cho điều này hoạt động trong môi trường lớp học trực tuyến. Hãy cho chúng tôi biết cách nào phù hợp nhất với bạn! + +## Bao gồm trong chương trình học này: + +20 bài học, 40 bài kiểm tra, và 20 bài tập. Các ghi chú minh họa đi kèm với bài học dành cho những người học trực quan. Nhiều bài học có sẵn bằng cả Python và R và có thể được hoàn thành bằng cách sử dụng Jupyter notebooks trong VS Code. Tìm hiểu thêm về cách thiết lập lớp học của bạn để sử dụng công nghệ này: https://code.visualstudio.com/docs/datascience/jupyter-notebooks. + +Tất cả các ghi chú minh họa, bao gồm một poster khổ lớn, nằm trong [thư mục này](../../sketchnotes). + +Toàn bộ chương trình học có sẵn [dưới dạng PDF](../../pdf/readme.pdf). + +Bạn cũng có thể chạy chương trình học này dưới dạng một trang web độc lập, thân thiện với chế độ offline bằng cách sử dụng [Docsify](https://docsify.js.org/#/). [Cài đặt Docsify](https://docsify.js.org/#/quickstart) trên máy tính của bạn, sau đó trong thư mục gốc của bản sao repo này, gõ `docsify serve`. Trang web sẽ được phục vụ trên cổng 3000 trên localhost của bạn: `localhost:3000`. + +Phiên bản thân thiện với chế độ offline của chương trình học sẽ mở dưới dạng một trang web độc lập: https://localhost:3000 + +Các bài học được chia thành 6 phần: + +- 1: Giới thiệu + - 1: Định nghĩa Khoa học Dữ liệu + - 2: Đạo đức + - 3: Định nghĩa Dữ liệu + - 4: Tổng quan về Xác suất và Thống kê +- 2: Làm việc với Dữ liệu + - 5: Cơ sở dữ liệu quan hệ + - 6: Cơ sở dữ liệu phi quan hệ + - 7: Python + - 8: Chuẩn bị Dữ liệu +- 3: Trực quan hóa Dữ liệu + - 9: Trực quan hóa Số lượng + - 10: Trực quan hóa Phân phối + - 11: Trực quan hóa Tỷ lệ + - 12: Trực quan hóa Mối quan hệ + - 13: Trực quan hóa Có ý nghĩa +- 4: Vòng đời Khoa học Dữ liệu + - 14: Giới thiệu + - 15: Phân tích + - 16: Giao tiếp +- 5: Khoa học Dữ liệu trên Cloud + - 17: Giới thiệu + - 18: Các tùy chọn Low-Code + - 19: Azure +- 6: Khoa học Dữ liệu trong Thực tế + - 20: Tổng quan + +## Xin hãy cho chúng tôi ý kiến của bạn! + +Chúng tôi muốn làm cho chương trình học này phù hợp với bạn và học sinh của bạn. Xin hãy gửi phản hồi trong các bảng thảo luận! Đừng ngần ngại tạo một khu vực lớp học trên các bảng thảo luận dành cho học sinh của bạn. + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn tham khảo chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/quiz-app/README.md b/translations/vi/quiz-app/README.md new file mode 100644 index 00000000..f551e7cf --- /dev/null +++ b/translations/vi/quiz-app/README.md @@ -0,0 +1,139 @@ + +# Câu hỏi trắc nghiệm + +Các câu hỏi trắc nghiệm này là các bài kiểm tra trước và sau bài giảng trong chương trình học khoa học dữ liệu tại https://aka.ms/datascience-beginners + +## Thêm bộ câu hỏi trắc nghiệm đã dịch + +Thêm bản dịch câu hỏi trắc nghiệm bằng cách tạo cấu trúc câu hỏi tương ứng trong thư mục `assets/translations`. Các câu hỏi gốc nằm trong `assets/translations/en`. Các câu hỏi được chia thành nhiều nhóm. Hãy đảm bảo căn chỉnh số thứ tự với phần câu hỏi phù hợp. Tổng cộng có 40 câu hỏi trong chương trình này, bắt đầu từ số 0. + +Sau khi chỉnh sửa bản dịch, chỉnh sửa tệp index.js trong thư mục bản dịch để nhập tất cả các tệp theo quy ước trong `en`. + +Chỉnh sửa tệp `index.js` trong `assets/translations` để nhập các tệp đã dịch mới. + +Sau đó, chỉnh sửa menu thả xuống trong `App.vue` của ứng dụng này để thêm ngôn ngữ của bạn. Khớp viết tắt ngôn ngữ với tên thư mục của ngôn ngữ bạn. + +Cuối cùng, chỉnh sửa tất cả các liên kết câu hỏi trong các bài học đã dịch, nếu có, để bao gồm tham số truy vấn ngôn ngữ: ví dụ `?loc=fr`. + +## Cài đặt dự án + +``` +npm install +``` + +### Biên dịch và tải lại nhanh cho phát triển + +``` +npm run serve +``` + +### Biên dịch và tối ưu hóa cho sản xuất + +``` +npm run build +``` + +### Kiểm tra và sửa lỗi tệp + +``` +npm run lint +``` + +### Tùy chỉnh cấu hình + +Xem [Tham khảo cấu hình](https://cli.vuejs.org/config/). + +Ghi nhận: Cảm ơn phiên bản gốc của ứng dụng câu hỏi này: https://github.com/arpan45/simple-quiz-vue + +## Triển khai lên Azure + +Dưới đây là hướng dẫn từng bước để giúp bạn bắt đầu: + +1. Fork một kho GitHub +Đảm bảo mã ứng dụng web tĩnh của bạn nằm trong kho GitHub. Fork kho này. + +2. Tạo một Azure Static Web App +- Tạo một [tài khoản Azure](http://azure.microsoft.com) +- Truy cập [cổng Azure](https://portal.azure.com) +- Nhấp vào “Create a resource” và tìm kiếm “Static Web App”. +- Nhấp vào “Create”. + +3. Cấu hình Static Web App +- Cơ bản: + - Subscription: Chọn gói đăng ký Azure của bạn. + - Resource Group: Tạo một nhóm tài nguyên mới hoặc sử dụng nhóm hiện có. + - Name: Đặt tên cho ứng dụng web tĩnh của bạn. + - Region: Chọn khu vực gần nhất với người dùng của bạn. + +- #### Chi tiết triển khai: + - Source: Chọn “GitHub”. + - GitHub Account: Ủy quyền cho Azure truy cập tài khoản GitHub của bạn. + - Organization: Chọn tổ chức GitHub của bạn. + - Repository: Chọn kho chứa ứng dụng web tĩnh của bạn. + - Branch: Chọn nhánh bạn muốn triển khai từ đó. + +- #### Chi tiết xây dựng: + - Build Presets: Chọn framework mà ứng dụng của bạn được xây dựng (ví dụ: React, Angular, Vue, v.v.). + - App Location: Chỉ định thư mục chứa mã ứng dụng của bạn (ví dụ: / nếu nằm ở gốc). + - API Location: Nếu bạn có API, chỉ định vị trí của nó (tùy chọn). + - Output Location: Chỉ định thư mục nơi đầu ra xây dựng được tạo (ví dụ: build hoặc dist). + +4. Xem lại và tạo +Xem lại cài đặt của bạn và nhấp vào “Create”. Azure sẽ thiết lập các tài nguyên cần thiết và tạo một tệp workflow GitHub Actions trong kho của bạn. + +5. Workflow GitHub Actions +Azure sẽ tự động tạo một tệp workflow GitHub Actions trong kho của bạn (.github/workflows/azure-static-web-apps-.yml). Workflow này sẽ xử lý quá trình xây dựng và triển khai. + +6. Theo dõi triển khai +Truy cập tab “Actions” trong kho GitHub của bạn. +Bạn sẽ thấy một workflow đang chạy. Workflow này sẽ xây dựng và triển khai ứng dụng web tĩnh của bạn lên Azure. +Khi workflow hoàn tất, ứng dụng của bạn sẽ hoạt động trên URL Azure được cung cấp. + +### Tệp Workflow Ví dụ + +Dưới đây là một ví dụ về tệp workflow GitHub Actions: +name: Azure Static Web Apps CI/CD +``` +on: + push: + branches: + - main + pull_request: + types: [opened, synchronize, reopened, closed] + branches: + - main + +jobs: + build_and_deploy_job: + runs-on: ubuntu-latest + name: Build and Deploy Job + steps: + - uses: actions/checkout@v2 + - name: Build And Deploy + id: builddeploy + uses: Azure/static-web-apps-deploy@v1 + with: + azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }} + repo_token: ${{ secrets.GITHUB_TOKEN }} + action: "upload" + app_location: "quiz-app" # App source code path + api_location: ""API source code path optional + output_location: "dist" #Built app content directory - optional +``` + +### Tài nguyên bổ sung +- [Tài liệu Azure Static Web Apps](https://learn.microsoft.com/azure/static-web-apps/getting-started) +- [Tài liệu GitHub Actions](https://docs.github.com/actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app) + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/sketchnotes/README.md b/translations/vi/sketchnotes/README.md new file mode 100644 index 00000000..16bd32fb --- /dev/null +++ b/translations/vi/sketchnotes/README.md @@ -0,0 +1,21 @@ + +Tìm tất cả các bản vẽ phác thảo tại đây! + +## Ghi nhận + +Nitya Narasimhan, nghệ sĩ + +![bản vẽ phác thảo lộ trình](../../../translated_images/00-Roadmap.4905d6567dff47532b9bfb8e0b8980fc6b0b1292eebb24181c1a9753b33bc0f5.vi.png) + +--- + +**Tuyên bố miễn trừ trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file