C++

C++

Struktur programCara terbaik untuk belajar bahasa pemrograman adalah dengan menulis program. Biasanya, program pertama pemula menulis sebuah program yang disebut "Hello World", yang hanya mencetak "Hello World" ke layar komputer Anda.


// Program pertama saya di C ++#include <iostream>
int main (){
  
std :: cout << "Hello World!";}


Halo Dunia!

Mengedit & Run

Panel kiri atas menunjukkan C ++ kode untuk program ini. Panel kanan menunjukkan hasil ketika program dijalankan oleh komputer. Angka abu-abu di sebelah kiri panel yang nomor baris untuk membuat membahas program dan meneliti kesalahan lebih mudah. Mereka bukan merupakan bagian dari program.
Mari kita periksa ini program baris demi baris:
Line 1: // Program pertama saya di C ++
    
Dua tanda garis miring menunjukkan bahwa sisa garis adalah komentar yang dimasukkan oleh programmer tetapi tidak berpengaruh pada perilaku program. Programmer menggunakannya untuk menyertakan penjelasan singkat atau pengamatan mengenai kode atau program. Dalam hal ini, itu adalah deskripsi pengantar singkat dari program.
Jalur 2: #include <iostream>
    
Baris yang dimulai dengan tanda pagar (#) adalah petunjuk dibaca dan diinterpretasikan oleh apa yang dikenal sebagai preprocessor. Mereka adalah jalur khusus ditafsirkan sebelum kompilasi dari program itu sendiri dimulai. Dalam hal ini, direktif # include <iostream>, menginstruksikan preprocessor untuk menyertakan bagian dari standar C ++ kode, dikenal sebagai header iostream, yang memungkinkan untuk melakukan standar operasi input dan output, seperti menulis output dari program ini (Hello World ) ke layar.
Jalur 3: Sebuah baris kosong.
    
Baris kosong tidak berpengaruh pada program. Mereka hanya meningkatkan pembacaan kode.Jalur 4: int main ()
    
Baris ini memulai deklarasi fungsi. Pada dasarnya, fungsi adalah sekelompok pernyataan kode yang diberi nama: dalam hal ini, ini memberikan nama "utama" untuk kelompok pernyataan kode yang mengikuti. Fungsi akan dibahas secara rinci dalam bab berikutnya, tetapi pada dasarnya, definisi mereka diperkenalkan dengan suksesi jenis (int), nama (utama) dan sepasang kurung (()), opsional termasuk parameter.

    
Fungsi bernama utama adalah fungsi khusus dalam semua C ++ program; itu adalah fungsi dipanggil saat program dijalankan. Pelaksanaan semua C ++ program dimulai dengan fungsi utama, terlepas dari mana fungsi sebenarnya terletak dalam kode.Baris 5 dan 7: {} dan
    
Penjepit terbuka ({) pada baris 5 menunjukkan awal dari definisi fungsi utama, dan brace penutupan (}) pada baris 7, menunjukkan akhir. Semuanya antara kawat gigi ini adalah tubuh fungsi yang mendefinisikan apa yang terjadi ketika utama disebut. Semua fungsi menggunakan kawat gigi untuk menunjukkan awal dan akhir dari definisi mereka.
Baris 6: std :: cout <<; "Hello World!"
    
Baris ini adalah C ++ pernyataan. Sebuah pernyataan adalah ekspresi yang benar-benar dapat menghasilkan beberapa efek. Ini adalah daging dari sebuah program, menentukan perilaku yang sebenarnya. Laporan dijalankan dalam urutan yang sama bahwa mereka muncul dalam tubuh fungsi ini.

    
Pernyataan ini memiliki tiga bagian: Pertama, std :: cout, yang mengidentifikasi standar perangkat output karakter (biasanya, ini adalah layar komputer). Kedua, operator penyisipan (<<), yang menunjukkan bahwa apa yang berikut dimasukkan ke std :: cout. Akhirnya, kalimat dalam tanda kutip ("Halo dunia!"), Adalah isi dimasukkan ke output standar.

    
Perhatikan bahwa pernyataan diakhiri dengan tanda titik koma (;). Karakter ini menandai akhir pernyataan, seperti periode berakhir kalimat dalam bahasa Inggris. Laporan semua C ++ harus diakhiri dengan karakter titik koma. Salah satu kesalahan sintaks yang paling umum di C ++ adalah lupa untuk mengakhiri sebuah pernyataan dengan titik koma.

Anda mungkin telah memperhatikan bahwa tidak semua baris program ini melakukan tindakan saat kode dijalankan. Ada garis yang berisi komentar (diawali dengan //). Ada garis dengan direktif untuk preprocessor (dimulai dengan #). Ada garis yang mendefinisikan fungsi (dalam kasus ini, fungsi utama). Dan, akhirnya, garis dengan pernyataan diakhiri dengan tanda titik koma (penyisipan ke pengadilan), yang dalam blok dibatasi oleh kurung ({}) dari fungsi utama.
Program ini telah terstruktur dalam baris yang berbeda dan menjorok benar, untuk membuatnya lebih mudah untuk memahami untuk manusia membacanya. Tapi C ++ tidak memiliki aturan ketat pada lekukan atau bagaimana untuk membagi instruksi dalam baris yang berbeda. Misalnya, alih-alihint main (){
  
std :: cout << "Hello World!";}

Mengedit & Run

Kita bisa menulis:




int main () {std :: cout << "Hello World!"; }

Mengedit & Run

semua dalam satu baris, dan ini akan memiliki arti yang sama persis dengan kode sebelumnya.
Dalam C ++, pemisahan antara pernyataan ditentukan dengan titik koma berakhir (;), dengan pemisahan menjadi baris yang berbeda tidak mattering sama sekali untuk tujuan ini. Banyak pernyataan dapat ditulis dalam satu baris, atau setiap pernyataan bisa sejalan sendiri. Pembagian kode dalam baris yang berbeda hanya melayani untuk membuatnya lebih mudah dibaca dan skematis untuk manusia yang mungkin membacanya, tapi tidak berpengaruh pada perilaku aktual dari program.

// Program kedua saya di C ++#include <iostream>
int main (){
  
std :: cout << "Hello World!";
  
std :: cout << "Aku C ++ Program";}


Halo Dunia! Aku program C ++

Mengedit & Run

Dalam hal ini, program yang dilakukan dua insersi ke std :: cout di dua pernyataan yang berbeda. Sekali lagi, pemisahan dalam baris yang berbeda dari kode hanya memberikan pembacaan yang lebih besar untuk program ini, karena utama bisa saja sempurna berlaku didefinisikan dengan cara ini:




int main () {std :: cout << "Hello World!"; std :: cout << "Aku C ++ Program"; }

Mengedit & Run
int main (){
  
std :: cout <<
    
"Halo Dunia!";
  
std :: cout
    
<< "Aku C ++ Program";}

Mengedit & Run

Dan hasilnya akan lagi sudah persis sama seperti pada contoh sebelumnya.
Arahan preprocessor (orang-orang yang mulai dengan #) adalah keluar dari aturan umum ini karena mereka tidak pernyataan. Mereka garis dibaca dan diproses oleh preprocessor sebelum kompilasi yang tepat dimulai. Arahan preprocessor harus ditentukan dalam jalur sendiri dan, karena mereka tidak pernyataan, tidak perlu diakhiri dengan titik koma (;).
KomentarSeperti disebutkan di atas, komentar tidak mempengaruhi operasi dari program; Namun, mereka menyediakan alat penting untuk mendokumentasikan secara langsung dalam kode sumber program apa yang dilakukan dan bagaimana beroperasi.
C ++ mendukung dua cara kode komentar:

// Baris komentar/ * Blok komentar * /



Yang pertama dari mereka, yang dikenal sebagai baris komentar, membuang segala sesuatu dari mana sepasang tanda garis miring (//) ditemukan sampai akhir dari baris yang sama. Yang kedua, yang dikenal sebagai blok komentar, membuang segala sesuatu antara / * karakter dan penampilan pertama dari * / karakter, dengan kemungkinan termasuk beberapa baris.

/ * Program kedua saya di C ++
   
dengan lebih komentar * /
#include <iostream>
int main (){
  
std :: cout << "Hello World!"; // Cetak Hello World!
  
std :: cout << "Aku C ++ Program"; // Cetak Aku C program ++}


Halo Dunia! Aku program C ++

Mengedit & Run

Jika komentar yang termasuk dalam kode sumber dari program tanpa menggunakan karakter komentar kombinasi //, / * atau * /, compiler membawa mereka seolah-olah mereka C ++ ekspresi, kemungkinan besar menyebabkan kompilasi gagal dengan satu, atau beberapa, pesan kesalahan.
Menggunakan namespace stdJika Anda telah melihat C ++ kode sebelumnya, Anda mungkin telah melihat cout yang digunakan bukan std :: cout. Kedua nama objek yang sama: yang pertama menggunakan nama wajar tanpa pengecualian nya (cout), sedangkan yang kedua memenuhi syarat langsung dalam std namespace (seperti std :: cout).
cout merupakan bagian dari perpustakaan standar, dan semua elemen dalam standar C ++ perpustakaan dinyatakan dalam apa yang disebut namespace: std namespace.
Dalam rangka untuk merujuk pada unsur-unsur dalam namespace std program akan baik memenuhi syarat setiap penggunaan elemen perpustakaan (seperti yang telah kita lakukan dengan awalan cout dengan std: :), atau memperkenalkan visibilitas komponennya. Cara yang paling khas untuk memperkenalkan visibilitas komponen ini adalah dengan cara menggunakan deklarasi:




menggunakan namespace std;



Deklarasi di atas memungkinkan semua elemen dalam namespace std untuk diakses secara wajar tanpa pengecualian (tanpa std :: awalan).

// Program kedua saya di C ++#include <iostream>menggunakan namespace std;
int main (){
  
cout << "Hello World!";
  
cout << "Aku C ++ Program";}


Halo Dunia! Aku program C ++

Mengedit & Run

Kedua cara mengakses elemen dari namespace std (kualifikasi eksplisit dan menggunakan deklarasi) yang berlaku di C ++ dan menghasilkan perilaku yang sama persis. Untuk kesederhanaan, dan agar lebih mudah dibaca, contoh dalam tutorial ini akan lebih sering menggunakan pendekatan yang terakhir ini dengan menggunakan deklarasi, meskipun catatan bahwa kualifikasi eksplisit adalah satu-satunya cara untuk menjamin bahwa nama tabrakan tidak pernah terjadi.
Bahasa Pemrograman

Bahasa Pemrograman

bahasa pemrogramanDengan Vangie BealSyarat terkait C ++ C # C BASIC C-RIMM cHTML Visual C ++ Visual Basic AspectC ++ c-learningBahasa pemrogramanSebuah kosakata dan seperangkat aturan tata bahasa untuk memerintahkan komputer untuk melakukan tugas-tugas tertentu. Bahasa pemrograman jangka biasanya mengacu pada bahasa tingkat tinggi, seperti BASIC, C, C ++, COBOL, FORTRAN, Ada, dan Pascal. Setiap bahasa memiliki seperangkat unik kata kunci (kata-kata yang mengerti) dan sintaks khusus untuk mengorganisir instruksi program.Bahasa pemrograman tingkat tinggi, sementara sederhana dibandingkan dengan bahasa manusia, yang lebih kompleks daripada bahasa komputer benar-benar mengerti, yang disebut bahasa mesin. Setiap jenis yang berbeda dari CPU memiliki bahasa mesin yang unik.Bermigrasi ke CloudUnduh sekarangBerbohong antara bahasa mesin dan bahasa tingkat tinggi adalah bahasa yang disebut bahasa assembly. Majelis bahasa mirip dengan bahasa mesin, tetapi mereka jauh lebih mudah untuk program karena mereka memungkinkan programmer untuk mengganti nama menjadi angka. Bahasa mesin terdiri dari angka saja.Berbaring di atas tingkat tinggi bahasa bahasa disebut bahasa generasi keempat (biasanya disingkat 4GL). 4GLs yang jauh dari bahasa mesin dan mewakili kelas bahasa komputer yang paling dekat dengan bahasa manusia.Terlepas dari apa bahasa yang Anda gunakan, Anda akhirnya harus convertyour program ke bahasa mesin agar komputer dapat memahaminya. Ada dua cara untuk melakukannya:1) mengkompilasi program2) menafsirkan programRekomendasi Reading: Lihat mengkompilasi dan interpreter untuk informasi lebih lanjut tentang dua metode ini.Pertanyaan yang bahasa terbaik adalah salah satu yang mengkonsumsi banyak waktu dan energi di kalangan profesional komputer. Setiap bahasa memiliki kekuatan dan kelemahan. Misalnya, FORTRAN adalah bahasa yang sangat baik untuk mengolah data numerik, tetapi tidak meminjamkan sendiri sangat baik untuk mengatur program-program besar. Pascal sangat baik untuk menulis program terstruktur dengan baik dan mudah dibaca, tetapi tidak fleksibel seperti bahasa pemrograman C. C ++ mewujudkan fitur berorientasi objek yang kuat, tetapi rumit dan sulit untuk belajar.Pilihan bahasa untuk menggunakan tergantung pada jenis komputer program ini adalah untuk berjalan di, apa semacam program itu, dan keahlian programmer.
Internal Komputer

Internal Komputer

Internal KomputerpengantarKomputer adalah bagian fisik dari sebuah komputer, yang dibedakan dari perangkat lunak komputer yang dijalankan atau berjalan pada perangkat keras. Perangkat keras komputer sering berubah, sedangkan perangkat lunak dan data yang dimodifikasi sering. Istilah lembut mengacu mudah dibuat, dimodifikasi, atau dihapus. Ini adalah tidak seperti komponen fisik dalam komputer yang sulit.Ketika Anda berpikir tentang perangkat keras komputer jangka Anda mungkin berpikir tentang keberanian dalam komputer pribadi Anda di rumah atau satu di kelas Anda. Namun, perangkat keras komputer tidak secara khusus merujuk pada komputer pribadi. Sebaliknya, itu adalah semua jenis sistem komputer. Hardware komputer dalam embedded system di mobil, microwave oven, pemutar CD, pemutar DVD, dan lebih banyak perangkat. Pada tahun 2003, hanya 0,2% dari semua mikroprosesor dijual di mana untuk komputer pribadi. Berapa banyak hal lain di rumah Anda atau ruang kelas hardware menggunakan komputer Anda?Dalam KomputerDalam KomputerMotherboardMotherboard ini adalah badan atau mainframe dari komputer, melalui mana semua komponen lain antarmuka. Ini adalah papan sirkuit pusat membuat sebuah sistem elektronik yang kompleks. Motherboard A menyediakan sambungan listrik oleh komponen yang lain dari sistem berkomunikasi. Papan ibu mencakup banyak komponen seperti: central processing unit (CPU), memori akses acak (RAM), firmware, dan bus internal dan eksternal.MotherboardMotherboardUnit pemrosesan utamaCentral Processing Unit (CPU, kadang-kadang hanya disebut prosesor) adalah mesin yang dapat mengeksekusi program-program komputer. Hal ini kadang-kadang disebut sebagai otak dari komputer.CPU DiagramCPU DiagramAda empat langkah yang hampir semua CPU gunakan dalam operasi mereka: fetch, decode, mengeksekusi, dan writeback. Langkah pertama, mengambil, melibatkan mengambil instruksi dari memori program. Pada langkah decode, instruksi dipecah menjadi bagian-bagian yang memiliki signifikansi untuk bagian lain dari CPU. Selama melaksanakan langkah berbagai bagian dari CPU, seperti unit aritmatika logika (ALU) dan unit floating point (FPU) yang terhubung sehingga mereka dapat melakukan operasi yang diinginkan. Langkah terakhir, writeback, hanya menulis kembali hasil eksekusi langkah untuk beberapa bentuk memori.Random Access MemoryRandom access memory (RAM) adalah cepat-akses memori yang dihapus ketika komputer adalah kekuatan-down. RAM menempel langsung ke motherboard, dan digunakan untuk menyimpan program yang sedang berjalan. RAM adalah seperangkat sirkuit terpadu yang memungkinkan data yang disimpan untuk diakses dalam urutan apapun (mengapa disebut random). Ada berbagai jenis RAM. Perbedaan antara berbagai jenis antara lain: dapat ditulis vs read-only, static vs dinamis, mudah menguap vs non-volatile, dllRAMRAMFirmwareFirmware dimuat dari Baca only memory (ROM) run dari Input-Output Dasar Sistem (BIOS). Ini adalah program komputer yang tertanam dalam perangkat keras, misalnya mikrokontroler. Seperti nama menyarankan, firmware adalah suatu tempat antara hardware dan software. Seperti perangkat lunak, ini adalah program komputer yang dieksekusi oleh mikroprosesor atau mikrokontroler. Tetapi juga terkait erat dengan perangkat keras, dan memiliki sedikit makna di luar itu. Kebanyakan perangkat yang terpasang ke sistem modern adalah komputer tujuan khusus di kanan mereka sendiri, menjalankan perangkat lunak mereka sendiri. Beberapa dari perangkat ini menyimpan perangkat lunak ("firmware") dalam ROM dalam perangkat itu sendiriSumber Daya listrikCatu daya sebagai nama mungkin menyarankan adalah perangkat yang memasok listrik ke semua komponen dalam komputer. Kasusnya merupakan tempat transformer, kontrol tegangan, dan (biasanya) kipas pendingin. Catu daya mengkonversi sekitar 100-120 volt listrik AC ke tegangan rendah DC daya untuk komponen internal untuk digunakan. Pasokan daya komputer yang paling umum dibangun agar sesuai dengan faktor bentuk ATX. Hal ini memungkinkan pasokan daya yang berbeda untuk menjadi dipertukarkan dengan berbagai komponen di dalam komputer. Pasokan listrik ATX juga dirancang untuk menghidupkan dan mematikan menggunakan sinyal dari motherboard, dan memberikan dukungan untuk fungsi-fungsi modern seperti modus siaga.Removable Devices MediaJika Anda meletakkan sesuatu di komputer Anda dan mengambil itu kemungkinan besar bentuk removable media. Ada banyak perangkat removable media yang berbeda. Yang paling populer mungkin CD dan DVD drive yang hampir setiap komputer hari ini memiliki setidaknya satu dari. Ada beberapa disk drive baru seperti Blu-ray yang dapat menampung jumlah yang jauh lebih besar dari informasi kemudian CD atau DVD yang normal. Salah satu jenis media removable yang menjadi kurang populer adalah floppy disk.CDCD adalah jenis yang paling umum dari removable media. Mereka murah tapi juga memiliki pendek rentang hidup. Ada jenis yang berbeda dari CD. CD-ROM yang merupakan singkatan dari Compact Disc read-only memory populer digunakan untuk mendistribusikan perangkat lunak komputer meskipun jenis data dapat disimpan pada mereka. CD-R adalah variasi lain yang hanya dapat ditulis sekali tapi dapat dibaca berkali-kali. CD-RW (rewritable) dapat ditulis lebih dari sekali serta membaca lebih dari sekali. Beberapa jenis lain dari CD yang tidak populer termasuk Super Audio CD (SACD), Video Compact Disc (VCD), Super Video Compact Disc (SVCD), PhotoCD, PictureCD, CD-i, dan Enhanced CD.CD-ROM DriveCD-ROM DriveAda dua jenis perangkat dalam komputer yang menggunakan CD: CD-ROM drive dan CD writer. CD-ROM yang digunakan untuk membaca CD. CD writer drive dapat membaca dan menulis CD. Penulis CD jauh lebih populer adalah komputer baru dari CD-ROM drive. Kedua jenis drive CD disebut disk drive optik karena penggunaan sinar laser atau gelombang elektromagnetik untuk membaca atau menulis data ke atau dari CD.DVDDVD (disc serbaguna digital) adalah cakram optik Format media penyimpanan populer lain. Penggunaan utama untuk DVD video dan penyimpanan data. Kebanyakan DVD adalah dari dimensi yang sama seperti compact disc. Sama seperti CD ada banyak variasi yang berbeda. DVD-ROM memiliki data yang yang hanya bisa dibaca dan tidak ditulis. DVD-R dan DVD + R dapat ditulis sekali dan kemudian berfungsi sebagai DVD-ROM. DVD-RAM, DVD-RW, atau DVD + RW Data hold yang dapat dihapus dan ditulis ulang beberapa kali. DVD-Video dan DVD-Audio disc masing-masing mengacu benar diformat dan video yang terstruktur dan konten audio. Perangkat yang menggunakan DVD sangat mirip dengan perangkat yang menggunakan CD. Ada DVD-ROM serta DVD writer yang bekerja dengan cara yang sama seperti CD-ROM drive dan CD writer. Ada juga DVD-RAM drive yang membaca dan menulis untuk variasi DVD-RAM DVD.DVDDVDBlu-rayBlu-ray adalah cakram optik format yang media penyimpanan yang lebih baru. Kegunaan utamanya adalah high-definition video dan penyimpanan data. Disc memiliki dimensi yang sama seperti CD atau DVD. Istilah "Blu-ray" berasal dari laser biru yang digunakan untuk membaca dan menulis ke disk. Cakram Blu-ray dapat menyimpan data lebih banyak maka CD atau DVD. Sebuah dual layer disc Blu-ray dapat menyimpan hingga 50GB, hampir enam kali thecapacity dari dual layer DVD (WOW!). Cakram Blu-ray memiliki perangkat serupa yang digunakan untuk membacanya dan menulis kepada mereka sebagai CD memiliki. Sebuah BD-ROM hanya bisa membaca disc Blu-ray dan penulis BD dapat membaca dan menulis disk Blu-ray.DisketSebuah floppy disk adalah jenis penyimpanan data yang terdiri dari disk tipis, fleksibel ("floppy") media penyimpanan magnetik terbungkus dalam persegi atau shell plastik persegi panjang. Floppy disk dibaca dan ditulis oleh seorang floppy disk drive. Floppy disk adalah sekarat dan digantikan oleh drive optik dan flash. Banyak komputer baru tidak datang dengan floppy drive lagi tetapi ada banyak yang lebih tua dengan floppy drive tergeletak di sekitar. Sementara disket yang sangat murah jumlah penyimpanan pada mereka dibandingkan dengan jumlah penyimpanan untuk harga flash drive membuat disket tidak masuk akal untuk menggunakan.DisketDisketPenyimpanan internalPenyimpanan internal adalah perangkat keras yang menyimpan data di dalam komputer untuk digunakan dan tetap gigih bahkan ketika komputer tidak memiliki kekuasaan. Ada jenis yang berbeda dari penyimpanan internal. Hard disk adalah jenis yang paling populer dari penyimpanan internal. Solid-state drive telah tumbuh dalam popularitas perlahan. Sebuah controller disk array adalah populer ketika Anda membutuhkan lebih banyak penyimpanan maka har disk tunggal dapat terus.Hard Disk DriveSebuah hard disk drive (HDD) adalah perangkat penyimpanan non-volatile yang menyimpan data digital dikodekan pada piring-piring berputar cepat dengan permukaan magnetik. Hampir setiap komputer baru datang dengan hard disk hari ini kecuali ia datang dengan solid-state drive baru. Khas desktop hard disk drive toko antara 120 dan 400GB, berputar pada 7200 rpm, dan memiliki transfer rate madia dari 1 Gbit / s atau lebih tinggi. Hard disk drive yang diakses melalui salah satu dari sejumlah jenis bus, termasuk paralel ATA (juga disebut IDE), Serial ATA (SATA), SCSI, Serial Attached SCSI, dan Fibre Channel.Perangkat kerasPerangkat kerasSolid-State DriveSebuah solid-state drive (SSD) adalah perangkat penyimpanan data yang menggunakan memori solid-state untuk menyimpan data persisten. SSD mengemulasi hard disk drive, sehingga dengan mudah menggantikannya dalam aplikasi apapun. SSD telah mulai muncul dalam laptop karena mereka bisa lebih kecil dari HDD. SSD saat ini lebih mahal per unit kapasitas dari HDD yang mengapa mereka belum tertangkap begitu cepat.Disk Array PengendaliSebuah controller disk array adalah perangkat yang mengelola disk drive fisik dan menyajikan mereka ke komputer sebagai unit logis. Ini hampir selalu menerapkan hardware RAID. RAID (Redundant Array of Independent Drives) adalah teknologi yang mempekerjakan penggunaan simultan dari dua atau lebih hard disk drive untuk mencapai tingkat yang lebih besar dari kinerja, kehandalan, dan / atau ukuran volume data yang lebih besar. Sebuah controller disk array juga menyediakan disk cache tambahan.
Semua Tools untuk Course Lengkap pada Grafik Komputer

Semua Tools untuk Course Lengkap pada Grafik Komputer

Semua Tools untuk Course Lengkap pada Grafik KomputerIdeal untuk Program Sarjana dan Self-StudyMenggunakan gaya belajar aktif mengajar konsep-konsep kunci di lapangan
Dari primitif geometris untuk animasi untuk pemodelan 3D untuk pencahayaan, shading dan texturing, Komputer Grafis Melalui OpenGL: dari Teori ke Percobaan adalah pengenalan yang komprehensif untuk komputer grafis yang menggunakan gaya belajar aktif mengajar konsep-konsep kunci. Sama menekankan teori dan praktek, buku ini memberikan pemahaman tidak hanya prinsip-prinsip komputer grafis 3D, tetapi juga penggunaan OpenGL Application Programming Interface (API) untuk kode adegan 3D dan animasi, termasuk game dan film.
Inti sarjana dari buku ini adalah urutan satu semester mengambil siswa dari nol pengetahuan tentang komputer grafis untuk penguasaan konsep dasar dengan kemampuan untuk kode aplikasi menggunakan generasi keempat OpenGL. Bab-bab selanjutnya mengeksplorasi topik yang lebih maju, termasuk struktur kurva dan permukaan dan aplikasi ruang proyektif dan transformasi.fitur
Meliputi dasar-dasar komputer grafis 3D, termasuk animasi, teknik visual dan 3DpemodelanCakupan yang komprehensif dari OpenGL 4.3, termasuk GLSL dan vertex, fragmen, tessellation danshader geometriTermasuk 170 program dengan 250 percobaan berdasarkan pada merekaBerisi 650 latihan, 100 contoh bekerja, dan 600 ilustrasi empat warnaTidak memerlukan pengetahuan sebelumnya komputer grafisMenyeimbangkan teori dengan praktek pemrograman menggunakan tangan-pendekatan interaktif untuk menjelaskankonsep yang mendasari
RAM (Random Access Memory)

RAM (Random Access Memory)

RAM
Atau disebut sebagai memori utama, memori utama, atau memori sistem, Random Access Memory (RAM) adalah sebuah perangkat keras yang memungkinkan informasi untuk disimpan dan diambil pada komputer. RAM biasanya berhubungan dengan DRAM, yang merupakan jenis modul memori. Karena informasi diakses secara acak, bukan secara berurutan seperti itu pada CD atau hard drive, komputer dapat mengakses data lebih cepat. Namun, tidak seperti ROM atau hard drive, RAM adalah memori volatile dan membutuhkan daya untuk menyimpan data diakses. Jika komputer dimatikan, semua data yang ada di RAM hilang.
Tip: Pengguna baru sering membingungkan RAM dengan ruang disk drive. Lihat definisi ingatan kita untuk perbandingan antara memori dan penyimpanan.Sejarah RAM
Bentuk pertama dari RAM muncul pada tahun 1947 dengan menggunakan tabung Williams. Ini dimanfaatkan tabung sinar katoda (CRT) dan data disimpan di muka CRT tempat sebagai bermuatan listrik.
Bentuk banyak digunakan kedua RAM adalah memori magnetik-core, diciptakan pada tahun 1947. Frederick Viehe dikreditkan dengan banyak pekerjaan, setelah mengajukan beberapa paten yang berkaitan dengan desain. Memori magnetik-core bekerja melalui penggunaan cincin logam kecil dan kabel yang menghubungkan ke setiap cincin. Satu bit data dapat disimpan per cincin dan diakses setiap saat.
Namun, RAM seperti yang kita kenal sekarang, sebagai memori solid state, pertama kali ditemukan pada tahun 1968 oleh Robert Dennard. Dikenal secara khusus sebagai dynamic random access memory, atau DRAM, transistor digunakan untuk menyimpan bit data.Jenis RAM
Selama evolusi komputer telah ada variasi yang berbeda dari RAM. Beberapa contoh yang lebih umum adalah DIMM, RIMM, SIMM, SO-DIMM, dan SOO-RIMM. Di bawah ini adalah contoh gambar dari modul memori komputer 512MB DIMM, sepotong khas RAM ditemukan di komputer desktop. Modul memori ini akan diinstal ke dalam salah satu slot memori pada motherboard.
Komputer DIMM atau modul memori dual-inlineInformasi tambahan
Sebagai komputer boot, bagian dari sistem operasi dan driver dimuat ke memori, yang memungkinkan CPU untuk memproses instruksi lebih cepat dan mempercepat proses booting. Setelah sistem operasi telah dimuat, setiap program Anda membuka, seperti browser yang Anda gunakan untuk melihat halaman ini, dimuat ke memori ketika sedang berjalan. Jika terlalu banyak program yang terbuka komputer akan menukar data dalam memori antara RAM dan hard disk drive.
HARDWARE SOFTWARE

HARDWARE SOFTWARE

Software adalah istilah umum yang digunakan untuk menggambarkan koleksi program komputer, prosedur, dan dokumentasi yang melakukan beberapa tugas pada sistem komputer. Sistem komputer praktis membagi sistem perangkat lunak menjadi tiga kelas utama: perangkat lunak sistem, perangkat lunak pemrograman, dan perangkat lunak aplikasi, meskipun perbedaan itu sewenang-wenang dan sering kabur. Software adalah memerintahkan urutan instruksi untuk mengubah keadaan perangkat keras komputer dalam urutan tertentu. Software biasanya diprogram dengan antarmuka yang user-friendly yang memungkinkan manusia untuk berinteraksi lebih lebih efisien dengan sistem komputer.
Hardware digambarkan sebagai perangkat, seperti hard drive, yang secara fisik terhubung ke komputer atau sesuatu yang dapat secara fisik menyentuh. Sebuah CD-ROM, layar monitor komputer, printer, dan kartu video merupakan contoh dari perangkat keras komputer. Tanpa hardware, komputer tidak akan berfungsi, dan perangkat lunak akan memiliki apa-apa untuk berjalan di. Hardware dan software berinteraksi satu sama lain: software memberitahu hardware yang tugas perlu untuk melakukan.
Ada beberapa perbedaan antara hardware dan software komputer.Perbandingan grafik
Perangkat keras
Perangkat lunakPerangkat definisi yang diperlukan untuk menyimpan dan melaksanakan (atau menjalankan) perangkat lunak. Koleksi instruksi yang memungkinkan pengguna untuk berinteraksi dengan komputer. Software adalah program yang memungkinkan komputer untuk melakukan tugas tertentu, yang bertentangan dengan komponen fisik dari sistem (hardware).Jenis Input, penyimpanan, pengolahan, kontrol, dan perangkat output. Perangkat lunak sistem, perangkat lunak Pemrograman, dan perangkat lunak aplikasi.Contoh CD-ROM, monitor, printer, kartu video, scanner, pembuat label, router, dan modem. Quickbooks, Adobe Acrobat, Winoms-Cs, Internet Explorer, Microsoft Word, Microsoft ExcelFungsi Hardware berfungsi sebagai sistem pengiriman untuk solusi perangkat lunak. Perangkat keras komputer yang jarang berubah, dibandingkan dengan perangkat lunak dan data, yang "lunak" dalam arti bahwa mereka mudah dibuat, dimodifikasi, atau dihapus pada comput Untuk melakukan tugas tertentu yang Anda butuhkan untuk menyelesaikan. Software umumnya tidak diperlukan untuk hardware untuk melakukan tugas-tugas tingkat dasar seperti menyalakan dan reponding untuk masukan.Inter ketergantungan Hardware mulai berfungsi setelah perangkat lunak dimuat. Untuk memberikan set instruksi, Software diinstal pada perangkat keras.Gangguan Hardware adalah acak. Hardware memang memiliki peningkatan kegagalan pada tahap terakhir. Kegagalan perangkat lunak sistematis. Software tidak memiliki tingkat kegagalan meningkat.Daya tahan Hardware memakai dari waktu ke waktu. Software tidak aus dari waktu ke waktu. Namun, bug yang ditemukan dalam perangkat lunak seiring berjalannya waktu.Nature Hardware adalah fisik di alam. Software adalah logis di alam.Isi: Hardware vs Software

    
1 Jenis
    
2 Fungsi
    
3 Interdependensi
    
4 Firewall
    
5 Perubahan
    
6 Referensi
Mengetik
Hardware adalah perangkat fisik, sesuatu yang salah mampu menyentuh dan melihat. Sebagai contoh, monitor komputer yang digunakan untuk melihat teks ini atau mouse digunakan untuk menavigasi Diffen dianggap perangkat keras komputer. Software adalah program, seperti sistem operasi atau browser web, yang mampu menginstruksikan perangkat keras komputer untuk melakukan tugas tertentu. Tidak seperti perangkat keras, perangkat lunak tidak memiliki bentuk fisik.
Meskipun hardware dan software yang paling sering dikaitkan dengan komputer, software juga berjalan pada perangkat keras lainnya, seperti ponsel, Global Positioning Satellite (GPS) unit, peralatan medis, dan sistem kontrol lalu lintas udara. Tanpa jenis perangkat lunak komputer akan sia-sia. Misalnya, seseorang tidak akan bisa berinteraksi dengan komputer tanpa sistem operasi perangkat lunak.Fungsi
Software melakukan tugas tertentu dengan memberikan seperangkat memerintahkan instruksi program untuk hardware. Hardware berfungsi sebagai sistem pengiriman untuk solusi perangkat lunak.Interdependensi
Hardware tidak dapat berfungsi sampai perangkat lunak dimuat dan perangkat lunak yang diinstal di perangkat keras untuk mengatur program dalam tindakan.Firewall
Firewall yang tersedia untuk kedua hardware dan software. Yang paling populer pilihan firewall adalah firewall software; ini diinstal pada komputer (seperti perangkat lunak apapun) dan dapat disesuaikan untuk memenuhi kebutuhan keamanan pengguna individu. Hardware firewall biasanya ditemukan di router broadband.Perubahan
Sementara itu adalah umum untuk beralih ke perangkat lunak baru atau menggunakan beberapa jenis perangkat lunak pada suatu waktu, hardware kurang sering berubah. Software dapat dengan mudah dibuat, diubah, atau dihapus, tapi beralih keluar hardware membutuhkan keterampilan yang lebih besar dan biasanya usaha yang lebih mahal.Referensi

    
Wikipedia: Software
    
Wikipedia: hardware Komputer
PEMBELAJARAN MESIN

PEMBELAJARAN MESIN

Mesin belajar adalah ilmu mendapatkan komputer untuk bertindak tanpa eksplisit diprogram. Dalam dekade terakhir, pembelajaran mesin telah memberi kita mobil self-driving, pengenalan suara praktis, pencarian web yang efektif, dan pemahaman jauh lebih baik dari genom manusia. Mesin belajar begitu meresap hari ini bahwa Anda mungkin menggunakannya puluhan kali sehari tanpa menyadarinya. Banyak peneliti juga berpikir itu adalah cara terbaik untuk membuat kemajuan menuju manusia-tingkat AI. Di kelas ini, Anda akan belajar tentang teknik pembelajaran mesin yang paling efektif, dan mendapatkan latihan menerapkan mereka dan membuat mereka bekerja untuk diri sendiri. Lebih penting lagi, Anda akan belajar tentang tidak hanya teoretis belajar, tetapi juga mendapatkan pengetahuan praktis yang diperlukan untuk dengan cepat dan kuat menerapkan teknik ini untuk masalah baru. Akhirnya, Anda akan belajar tentang beberapa praktik terbaik Silicon Valley dalam inovasi karena berkaitan dengan pembelajaran mesin dan AI. Kursus ini menyediakan pengenalan luas untuk pembelajaran mesin, data mining, dan pengenalan pola statistik. Topik meliputi: (i) pengawasan belajar (parametrik / algoritma non-parametrik, mesin dukungan vektor, kernel, jaringan saraf). (ii) belajar Unsupervised (clustering, pengurangan dimensi, sistem recommender, pembelajaran yang mendalam). (iii) praktik terbaik dalam mesin pembelajaran (teori Bias / varians, proses inovasi dalam pembelajaran mesin dan AI). Kursus ini juga akan menarik dari berbagai studi kasus dan aplikasi, sehingga Anda juga akan belajar bagaimana menerapkan algoritma pembelajaran untuk membangun robot cerdas (persepsi, kontrol), teks pemahaman (pencarian web, anti-spam), visi komputer, informatika medis , audio, pertambangan database, dan daerah lainnya. Dapatkah saya mendapatkan Sertifikat Kursus jika saya menyelesaikan kursus ini sebelum mereka tersedia? Dalam rangka untuk memverifikasi identitas seseorang dan menjaga integritas akademik, pelajar yang menyelesaikan tugas atau kuis untuk Machine Learning sebelum 1 November akan perlu mengulang dan mengirimkan kembali penilaian ini untuk mendapatkan Sertifikat Course. Untuk memperjelas, baik kuis dan tugas pemrograman perlu dikirim ulang. Meskipun tenggat waktu Anda mungkin telah berlalu teknis, yakinlah bahwa Anda bisa mengirimkan kembali kedua jenis penilaian setiap saat. Kami mohon maaf atas ketidaknyamanan ini dan menghargai kesabaran Anda karena kami berusaha untuk memastikan integritas dan nilai sertifikat kami. Harap dicatat bahwa, dalam rangka untuk mendapatkan Sertifikat Kursus, Anda harus menyelesaikan kursus dalam waktu 180 hari dari pembayaran, atau dengan 1 Mei 2016, mana yang lebih awal.
Support Vector Machines

Support Vector Machines

1.4. Support Vector Machines
Mesin dukungan vektor (SVMs) adalah seperangkat metode pembelajaran terawasi digunakan untuk deteksi klasifikasi, regresi dan outlier.
Keuntungan dari mesin dukungan vektor adalah:

        
Efektif di ruang dimensi tinggi.
        
Masih efektif dalam kasus-kasus di mana jumlah dimensi lebih besar dari jumlah sampel.
        
Menggunakan subset poin pelatihan dalam fungsi keputusan (disebut vektor dukungan), sehingga juga memori efisien.
        
Serbaguna: fungsi Kernel yang berbeda dapat ditentukan untuk fungsi keputusan. Kernel umum disediakan, tetapi juga memungkinkan untuk menentukan kernel kustom.
Kelemahan mesin dukungan vektor meliputi:

        
Jika jumlah fitur jauh lebih besar dari jumlah sampel, metode ini kemungkinan akan memberikan pertunjukan miskin.
        
SVMs tidak langsung memberikan perkiraan probabilitas, ini dihitung dengan menggunakan mahal lima kali lipat cross-validasi (lihat Skor dan probabilitas, di bawah).
Mesin-mesin dukungan vektor di scikit-belajar mendukung padat (numpy.ndarray dan convertible itu oleh numpy.asarray) dan jarang (scipy.sparse ada) vektor sampel sebagai masukan. Namun, untuk menggunakan SVM untuk membuat prediksi untuk data jarang, itu harus telah masuk pada data tersebut. Untuk kinerja optimal, gunakan C-memerintahkan numpy.ndarray (padat) atau scipy.sparse.csr_matrix (jarang) dengan dtype = float64.1.4.1. Klasifikasi
SVC, NuSVC dan LinearSVC adalah kelas mampu melakukan klasifikasi multi-kelas pada dataset.../_images/plot_iris_0012.png
SVC dan NuSVC adalah metode yang serupa, tetapi menerima set sedikit berbeda dari parameter dan memiliki formulasi matematika yang berbeda (lihat bagian formulasi Matematika). Di sisi lain, LinearSVC adalah implementasi lain Support Vector Klasifikasi untuk kasus kernel linear. Perhatikan bahwa LinearSVC tidak menerima kernel kata kunci, karena ini dianggap linear. Hal ini juga tidak memiliki beberapa anggota SVC dan NuSVC, seperti support_.
Sebagai pengklasifikasi lainnya, SVC, NuSVC dan LinearSVC mengambil sebagai masukan dua array: array X ukuran [N_SAMPLES, n_features] memegang sampel pelatihan, dan y array label kelas (string atau bilangan bulat), ukuran [N_SAMPLES]:
>>> Dari sklearn impor SVM>>> X = [[0, 0], [1, 1]]>>> Y = [0, 1]>>> CLF = svm.SVC ()>>> Clf.fit (X, y)SVC (C = 1,0, cache_size = 200, class_weight = None, coef0 = 0,0,
    
decision_function_shape = None, gelar = 3, gamma = 'auto', kernel = 'rbf',
    
max_iter = -1, probabilitas = False, random_state = None, menyusut = True,
    
tol = 0,001, verbose = False)
Setelah dipasang, model kemudian dapat digunakan untuk memprediksi nilai-nilai baru:
>>> Clf.predict ([[2., 2.]])array ([1])
SVMs fungsi keputusan tergantung pada beberapa subset dari data pelatihan, yang disebut vektor dukungan. Beberapa sifat vektor dukungan ini dapat ditemukan pada anggota support_vectors_, support_ dan n_support:
>>> # Vektor get dukungan>>> Clf.support_vectors_array ([[0, 0],
       
[1., 1.]])>>> # Get indeks vektor dukungan>>> Clf.support_array ([0, 1] ...)>>> # Mendapatkan jumlah vektor dukungan untuk masing-masing kelas>>> Clf.n_support_array ([1, 1] ...)
1.4.1.1. Klasifikasi multi-kelas
SVC dan NuSVC menerapkan "satu-lawan satu" pendekatan (Knerr et al., 1990) untuk klasifikasi kelas multi. Jika n_class adalah jumlah kelas, maka n_class * (n_class - 1) / 2 pengklasifikasi dibangun dan masing-masing kereta data dari dua kelas. Untuk menyediakan antarmuka yang konsisten dengan pengklasifikasi lain, opsi decision_function_shape memungkinkan untuk agregat hasil dari "satu-lawan satu" pengklasifikasi untuk fungsi keputusan bentuk (N_SAMPLES, n_classes):
>>> X = [[0], [1], [2], [3]]>>> Y = [0, 1, 2, 3]>>> CLF = svm.SVC (decision_function_shape = 'ovo')>>> Clf.fit (X, Y)SVC (C = 1,0, cache_size = 200, class_weight = None, coef0 = 0,0,
    
decision_function_shape = 'ovo', gelar = 3, gamma = 'auto', kernel = 'rbf',
    
max_iter = -1, probabilitas = False, random_state = None, menyusut = True,
    
tol = 0,001, verbose = False)>>> Desember = clf.decision_function ([[1]])>>> Dec.shape [1] # 4 kelas: 4 * 02/03 = 66>>> Clf.decision_function_shape = "ovr">>> Desember = clf.decision_function ([[1]])>>> Dec.shape [1] # 4 kelas4
Di sisi lain, LinearSVC menerapkan "satu-vs-the-sisa" strategi multi-kelas, sehingga pelatihan model n_class. Jika hanya ada dua kelas, hanya satu model dilatih:
>>> Lin_clf = svm.LinearSVC ()>>> Lin_clf.fit (X, Y)LinearSVC (C = 1,0, class_weight = None, dual = True, fit_intercept = True,
     
intercept_scaling = 1, hilangnya = 'squared_hinge', max_iter = 1000,
     
multi_class = 'ovr', penalti = 'l2', random_state = None, tol = 0,0001,
     
verbose = 0)>>> Desember = lin_clf.decision_function ([[1]])>>> Dec.shape [1]4
Lihat formulasi matematika untuk penjelasan lengkap dari fungsi keputusan.
Perhatikan bahwa LinearSVC juga menerapkan alternatif strategi multi-kelas, yang disebut multi-kelas SVM dirumuskan oleh penipu dan Singer, dengan menggunakan multi_class option = 'crammer_singer'. Metode ini konsisten, yang tidak benar untuk klasifikasi satu-vs-rest. Dalam prakteknya, klasifikasi satu-vs-sisa biasanya disukai, karena hasilnya sebagian besar sama, tetapi runtime secara signifikan kurang.
Untuk "satu-vs-sisa" LinearSVC atribut coef_ dan intercept_ memiliki bentuk [n_class, n_features] dan [n_class] masing-masing. Setiap baris dari koefisien sesuai dengan salah satu n_class banyak "satu-vs-sisa" pengklasifikasi dan sama untuk penyadapan, dalam urutan "satu" kelas.
Dalam kasus "satu-vs satu" SVC, tata letak atribut adalah sedikit lebih terlibat. Dalam kasus memiliki kernel linear, Tata letak coef_ dan intercept_ mirip dengan yang dijelaskan untuk LinearSVC dijelaskan di atas, kecuali bahwa bentuk coef_ adalah [n_class * (n_class - 1) / 2, n_features], sesuai dengan yang banyak pengklasifikasi biner. Urutan untuk kelas 0 sampai n adalah "0 vs 1", "0 vs 2", ... "0 vs n", "1 vs 2", "1 vs 3", "1 vs n",. . . "N-1 vs n".
Bentuk dual_coef_ adalah [n_class-1, n_SV] dengan agak sulit untuk memahami tata letak. Kolom sesuai dengan vektor dukungan terlibat dalam salah satu n_class * (n_class - 1) / 2 "satu-satu-vs" pengklasifikasi. Setiap vektor dukungan digunakan dalam n_class - 1 pengklasifikasi. The n_class - 1 entri dalam setiap baris sesuai dengan koefisien ganda untuk pengklasifikasi tersebut.
Ini mungkin dibuat lebih jelas dengan contoh:
Pertimbangkan masalah tiga kelas dengan dengan kelas 0 memiliki tiga vektor dukungan v ^ {0} _0, v ^ {1} _0, v ^ {2} _0 dan kelas 1 dan 2 memiliki dua vektor dukungan v ^ {0} _1, v ^ {1} _1 dan v ^ {0} _2, v ^ {1} _2 masing-masing. Untuk setiap dukungan vektor v ^ {j} _i, ada dua koefisien ganda. Mari kita sebut koefisien dukungan vektor v ^ {j} _i di classifier antara kelas i dan k \ alpha ^ {j} _ {i, k}. Kemudian dual_coef_ terlihat seperti ini:\ alpha ^ {0} _ {0,1} \ alpha ^ {0} _ {0,2} Koefisien untuk SVs kelas 0\ alpha ^ {1} _ {0,1} \ alpha ^ {1} _ {} 0,2\ alpha ^ {2} _ {0,1} \ alpha ^ {2} _ {} 0,2\ alpha ^ {0} _ {1,0} \ alpha ^ {0} _ {1,2} Koefisien untuk SVs kelas 1\ alpha ^ {1} _ {1,0} \ alpha ^ {1} _ {1,2}\ alpha ^ {0} _ {2,0} \ alpha ^ {0} _ {2,1} Koefisien untuk SVs kelas 2\ alpha ^ {1} _ {2,0} \ alpha ^ {1} _ {} 2,11.4.1.2. Skor dan probabilitas
Metode SVC decision_function memberikan skor per kelas untuk setiap sampel (atau nilai tunggal per sampel dalam kasus biner). Ketika probabilitas pilihan konstruktor diatur ke True, perkiraan probabilitas keanggotaan kelas (dari metode predict_proba dan predict_log_proba) diaktifkan. Dalam kasus biner, probabilitas dikalibrasi menggunakan Platt skala: regresi logistik pada nilai SVM ini, cocok dengan tambahan cross-validasi data pelatihan. Dalam kasus multiclass, ini diperpanjang sesuai Wu et al. (2004).
Tak perlu dikatakan, salib-validasi terlibat dalam Platt skala adalah operasi yang mahal untuk dataset besar. Selain itu, perkiraan probabilitas mungkin tidak konsisten dengan nilai, dalam arti bahwa "argmax" dari skor tidak mungkin argmax dari probabilitas. (Misalnya, dalam klasifikasi biner, sampel dapat diberi label oleh memprediksi sebagai milik kelas yang memiliki probabilitas <½ menurut predict_proba.) Metode Platt juga dikenal memiliki masalah teoritis. Jika skor kepercayaan yang diperlukan, tetapi ini tidak harus probabilitas, maka dianjurkan untuk mengatur probabilitas = False dan penggunaan decision_function bukan predict_proba.
Referensi:

    
Wu, Lin dan Weng, "perkiraan Probabilitas untuk multi-kelas klasifikasi dengan kopling berpasangan". JMLR 5: 975-1005 2004.
1.4.1.3. Masalah tidak seimbang
Dalam masalah di mana diinginkan untuk memberikan lebih penting untuk kelas-kelas tertentu atau kata kunci sampel individu tertentu class_weight dan sample_weight dapat digunakan.
SVC (tapi tidak NuSVC) menerapkan class_weight kata kunci dalam metode fit. Ini adalah kamus dari bentuk {class_label: value}, di mana nilai adalah angka floating point> 0 yang menentukan parameter C kelas class_label nilai C *.../_images/plot_separating_hyperplane_unbalanced_0011.png
SVC, NuSVC, SVR, NuSVR dan OneClassSVM menerapkan juga bobot untuk sampel individu dalam metode fit melalui kata kunci sample_weight. Mirip dengan class_weight, ini mengatur parameter C untuk contoh ke-i ke C * sample_weight [i].../_images/plot_weighted_samples_0011.png
Contoh:

    
Plot pengklasifikasi SVM yang berbeda dalam dataset iris,
    
SVM: Margin Maksimum memisahkan hyperplane,
    
SVM: Memisahkan hyperplane untuk kelas tidak seimbang
    
SVM-Anova: SVM dengan pilihan fitur univariat,
    
Non-linear SVM
    
Sampel tertimbang,: SVM
1.4.2. Regresi
Metode Support Vector Klasifikasi dapat diperpanjang untuk memecahkan masalah regresi. Metode ini disebut Support Vector Regression.
Model yang diproduksi oleh klasifikasi dukungan vektor (seperti dijelaskan di atas) hanya bergantung pada subset dari data pelatihan, karena fungsi biaya untuk membangun model tidak peduli poin pelatihan yang berada di luar margin. Analog, model yang diproduksi oleh Support Vector Regression hanya bergantung pada subset dari data pelatihan, karena fungsi biaya untuk membangun model mengabaikan data dekat pelatihan dengan model prediksi.
Ada tiga implementasi yang berbeda dari Support Vector Regression: SVR, NuSVR dan LinearSVR. LinearSVR menyediakan implementasi lebih cepat dari SVR tetapi hanya menganggap kernel linear, sementara NuSVR menerapkan formulasi yang sedikit berbeda dari SVR dan LinearSVR. Lihat detail Implementasi untuk keterangan lebih lanjut.
Seperti kelas klasifikasi, metode fit akan mengambil sebagai vektor argumen X, y, hanya itu dalam hal ini y diharapkan memiliki nilai floating point bukan nilai integer:
>>> Dari sklearn impor SVM>>> X = [[0, 0], [2, 2]]>>> Y = [0,5, 2,5]>>> CLF = svm.SVR ()>>> Clf.fit (X, y)SVR (C = 1,0, cache_size = 200, coef0 = 0,0, tingkat = 3, epsilon = 0,1, gamma = 'auto',
    
kernel = 'rbf', max_iter = -1, menyusut = True, tol = 0,001, verbose = False)>>> Clf.predict ([[1, 1]])array ([1,5])
Contoh:

    
Support Vector Regression (SVR) menggunakan linear dan non-linear kernel
1.4.3. Estimasi kepadatan, deteksi baru
Satu kelas SVM digunakan untuk deteksi baru, yaitu, diberikan satu set sampel, akan mendeteksi batas lembut set yang sehingga dapat mengklasifikasikan poin baru sebagai milik yang ditetapkan atau tidak. Kelas yang mengimplementasikan ini disebut OneClassSVM.
Dalam hal ini, karena ini adalah jenis pembelajaran tanpa pengawasan, metode fit akan hanya mengambil sebagai masukan array X, karena tidak ada label kelas.
Lihat, bagian Novelty dan outlier Detection untuk rincian lebih lanjut tentang penggunaan ini.../_images/plot_oneclass_0011.png
Contoh:

    
Satu kelas SVM dengan kernel non-linear (RBF)
    
Pemodelan distribusi spesies
1.4.4. Kompleksitas
Support Vector Machines adalah alat yang kuat, tetapi menghitung dan penyimpanan kebutuhan mereka meningkat pesat dengan jumlah vektor pelatihan. Inti dari sebuah SVM adalah masalah pemrograman kuadratik (QP), memisahkan vektor dukungan dari seluruh data pelatihan. QP solver digunakan oleh ini skala implementasi berbasis libsvm antara O (n_ {fitur} \ kali n_ {sampel} ^ 2) dan O (n_ {fitur} \ kali n_ {sampel} ^ 3) tergantung pada seberapa efisien cache libsvm digunakan dalam praktek (tergantung dataset). Jika data yang sangat jarang n_ {} fitur harus diganti dengan jumlah rata-rata fitur non-nol dalam vektor sampel.
Juga mencatat bahwa untuk kasus linear, algoritma yang digunakan dalam LinearSVC oleh pelaksanaan liblinear jauh lebih efisien daripada berbasis libsvm nya SVC rekan dan dapat skala hampir linear untuk jutaan sampel dan / atau fitur.1.4.5. Tips Praktis Gunakan

        
Menghindari Data copy: Untuk SVC, SVR, NuSVC dan NuSVR, jika data yang diberikan kepada metode-metode tertentu tidak C-memerintahkan berdekatan, dan presisi ganda, itu akan disalin sebelum memanggil pelaksanaan C mendasarinya. Anda dapat memeriksa apakah array memberi numpy adalah C-contiguous dengan memeriksa bendera yang atribut.

        
Untuk LinearSVC (dan LogisticRegression) setiap masukan lulus sebagai array numpy akan disalin dan dikonversi ke representasi liblinear internal yang jarang data (mengapung presisi ganda dan indeks int32 komponen non-nol). Jika Anda ingin menyesuaikan linear classifier skala besar tanpa menyalin numpy C-contiguous berbagai presisi ganda padat sebagai masukan kami sarankan untuk menggunakan kelas SGDClassifier gantinya. Fungsi tujuan dapat dikonfigurasi untuk menjadi hampir sama dengan model LinearSVC.

        
Kernel ukuran cache: Untuk SVC, SVR, nuSVC dan NuSVR, ukuran cache kernel memiliki dampak yang kuat pada lari kali untuk masalah yang lebih besar. Jika Anda memiliki RAM yang cukup tersedia, dianjurkan untuk mengatur cache_size ke nilai lebih tinggi dari default 200 (MB), seperti 500 (MB) atau 1000 (MB).

        
Pengaturan C: C adalah 1 secara default dan itu adalah pilihan standar yang wajar. Jika Anda memiliki banyak pengamatan bising Anda harus mengurangi itu. Hal ini sesuai untuk mengatur lebih estimasi.

        
Support Vector Machine algoritma tidak skala invarian, sehingga sangat dianjurkan untuk skala data Anda. Sebagai contoh, skala setiap atribut pada vektor input X untuk [0,1] atau [-1, + 1], atau standarisasi untuk memiliki mean 0 dan varians 1. Perhatikan bahwa skala yang sama harus diterapkan pada vektor tes untuk memperoleh hasil yang berarti. Lihat bagian Preprocessing data untuk rincian lebih lanjut tentang scaling dan normalisasi.

        
Parameter nu di NuSVC / OneClassSVM / NuSVR mendekati fraksi kesalahan pelatihan dan vektor dukungan.

        
Dalam SVC, jika data untuk klasifikasi yang tidak seimbang (misalnya banyak positif dan negatif beberapa), ditetapkan class_weight = 'seimbang' dan / atau mencoba parameter penalti yang berbeda C.

        
Yang mendasari pelaksanaan LinearSVC menggunakan nomor acak generator untuk memilih fitur ketika pas model. Dengan demikian tidak jarang, memiliki hasil yang sedikit berbeda untuk input data yang sama. Jika itu terjadi, cobalah dengan parameter tol lebih kecil.

        
Menggunakan L1 hukuman yang disediakan oleh LinearSVC (rugi = 'l2', penalti = 'l1', dual = False) menghasilkan solusi jarang, yaitu hanya sebagian dari fitur bobot berbeda dari nol dan berkontribusi pada fungsi keputusan. Meningkatkan C menghasilkan model yang lebih kompleks (lebih fitur yang dipilih). Nilai C yang menghasilkan "nol" model (semua bobot sama dengan nol) dapat dihitung dengan menggunakan l1_min_c.
1.4.6. Fungsi kernel
Fungsi kernel dapat salah satu dari berikut:

        
linear: \ Langle x, x '\ rangle.
        
polinomial: (\ gamma \ Langle x, x '\ rangle + r) ^ d. d ditentukan oleh tingkat kata kunci, r oleh coef0.
        
RBF: \ exp (- \ gamma | x-x '| ^ 2). \ gamma ditentukan oleh gamma kata kunci, harus lebih besar dari 0.
        
sigmoid (\ tanh (\ gamma \ Langle x, x '\ rangle + r)), di mana r ditentukan oleh coef0.
Kernel yang berbeda yang ditentukan oleh kernel kata kunci di inisialisasi:
>>> Linear_svc = svm.SVC (kernel = 'linear')>>> Linear_svc.kernel'linear'>>> Rbf_svc = svm.SVC (kernel = 'rbf')>>> Rbf_svc.kernel'RBF'
1.4.6.1. Kustom Kernel
Anda dapat menentukan kernel Anda sendiri dengan baik memberikan kernel sebagai fungsi python atau dengan precomputing matriks Gram.
Pengklasifikasi dengan kernel kustom berperilaku dengan cara yang sama seperti pengklasifikasi lainnya, kecuali bahwa:

        
Bidang support_vectors_ sekarang kosong, hanya indeks vektor dukungan disimpan di support_
        
Sebuah referensi (dan bukan salinan) dari argumen pertama dalam metode fit () disimpan untuk referensi di masa mendatang. Jika array yang berubah antara penggunaan fit () dan memprediksi () Anda akan memiliki hasil yang tidak diharapkan.
1.4.6.1.1. Menggunakan fungsi Python sebagai kernel
Anda juga dapat menggunakan kernel sendiri didefinisikan dengan melewati fungsi untuk kernel kata kunci dalam konstruktor.
Kernel Anda harus mengambil sebagai argumen dua matriks bentuk (n_samples_1, n_features), (n_samples_2, n_features) dan kembali matriks kernel bentuk (n_samples_1, n_samples_2).
Kode berikut mendefinisikan kernel linear dan menciptakan contoh classifier yang akan menggunakan kernel yang:
>>> Impor numpy sebagai np>>> Dari sklearn impor SVM>>> Def my_kernel (X, Y):... Kembali np.dot (X, Y.T)...>>> CLF = svm.SVC (kernel = my_kernel)
Contoh:

    
SVM dengan kernel kustom.
1.4.6.1.2. Menggunakan matriks Gram
Set kernel = 'Precomputed' dan lulus matriks Gram bukan X dalam metode fit. Pada saat ini, nilai-nilai kernel antara semua vektor pelatihan dan vektor uji harus disediakan.
>>> Impor numpy sebagai np>>> Dari sklearn impor SVM>>> X = np.array ([[0, 0], [1, 1]])>>> Y = [0, 1]>>> CLF = svm.SVC (kernel = 'Precomputed')>>> # Linear perhitungan kernel>>> Gram = np.dot (X, X.T)>>> Clf.fit (gram, y)SVC (C = 1,0, cache_size = 200, class_weight = None, coef0 = 0,0,
    
decision_function_shape = None, gelar = 3, gamma = 'auto',
    
kernel = 'Precomputed', max_iter = -1, probabilitas = False,
    
random_state = None, menyusut = True, tol = 0,001, verbose = False)>>> # Memprediksi pada contoh pelatihan>>> Clf.predict (gram)array ([0, 1])
1.4.6.1.3. Parameter dari RBF Kernel
Ketika melatih sebuah SVM dengan Radial Basis Function (RBF) kernel, dua parameter harus dipertimbangkan: C dan gamma. Parameter C, umum untuk semua kernel SVM, perdagangan off kesalahan klasifikasi contoh pelatihan terhadap kesederhanaan permukaan keputusan. Sebuah rendah C membuat permukaan keputusan halus, sementara C tinggi bertujuan mengelompokkan semua contoh pelatihan dengan benar. gamma mendefinisikan seberapa besar pengaruh contoh pelatihan tunggal memiliki. Semakin besar gamma, yang lebih dekat contoh lain harus akan terpengaruh.
Pilihan yang tepat dari C dan gamma sangat penting untuk kinerja SVM ini. Satu disarankan untuk menggunakan sklearn.grid_search.GridSearchCV dengan C dan gamma spasi eksponensial jauh untuk memilih nilai-nilai yang baik.
Contoh:

    
Parameter RBF SVM
1.4.7. Formulasi matematika
Sebuah mesin dukungan vektor membangun sebuah hiper-pesawat atau set hiper-pesawat dalam ruang dimensi tinggi atau tak terbatas, yang dapat digunakan untuk klasifikasi, regresi atau tugas lainnya. Secara intuitif, pemisahan yang baik dicapai oleh hiper-pesawat yang memiliki jarak terbesar ke titik data pelatihan terdekat dari setiap kelas (disebut marjin fungsional), karena pada umumnya semakin besar margin yang lebih rendah kesalahan generalisasi classifier.../_images/plot_separating_hyperplane_0011.png1.4.7.1. SVC
Vektor pelatihan diberikan x_i \ di \ mathbb {R} ^ p, i = 1, ..., n, dalam dua kelas, dan vektor y \ di \ {1, -1 \} ^ n, SVC memecahkan primal berikut masalah:
\ min_ {w, b, \ zeta} \ frac {1} {2} w ^ T w + C \ sum_ {i = 1} ^ {n} \ zeta_i \ textrm {tunduk} & y_i (w ^ T \ phi (x_i) + b) \ GEQ 1 - \ zeta_i, \\ & \ zeta_i \ GEQ 0, i = 1, ..., n
Dual yaitu
\ min _ {\ alpha} \ frac {1} {2} \ alpha ^ TQ \ alpha - e ^ T \ alpha \ textrm {tunduk} & y ^ T \ alpha = 0 \\ & 0 \ leq \ alpha_i \ leq C, i = 1, ..., n
dimana e adalah vektor dari semua orang, C> 0 adalah batas atas, Q adalah n oleh matriks semidefinite n positif, Q_ {ij} \ equiv y_i y_j K (x_i, x_j) Dimana K (x_i, x_j) = \ phi (x_i) ^ T \ phi (x_j) adalah kernel. Berikut vektor pelatihan secara implisit dipetakan menjadi lebih tinggi (mungkin tak terbatas) ruang dimensi dengan fungsi \ phi.
Fungsi keputusan adalah:
\ operatorname {} sgn (\ sum_ {i = 1} ^ n y_i \ alpha_i K (x_i, x) + \ rho)
Catatan
Sementara model SVM berasal dari libsvm dan liblinear penggunaan C sebagai parameter regularisasi, paling estimator lainnya menggunakan alpha. Hubungan antara kedua adalah C = \ frac {n \ _samples} {alpha}.
Parameter ini dapat diakses melalui anggota dual_coef_ yang memegang produk y_i \ alpha_i, support_vectors_ yang memegang vektor dukungan, dan intercept_ yang memegang independen jangka \ rho:
Referensi:

    
"Kapasitas Tuning otomatis Very Large Classifiers VC-dimensi" Saya Guyon, B Boser, V Vapnik - Kemajuan informasi saraf pengolahan tahun 1993,
    
"Dukungan jaringan-vektor" C. Cortes, V. Vapnik, Mesin Leaming, 20, 273-297 (1995)
1.4.7.2. NuSVC
Kami memperkenalkan baru parameter \ nu yang mengontrol jumlah vektor dukungan dan kesalahan pelatihan. Parameter \ nu \ di (0, 1] adalah batas atas fraksi kesalahan pelatihan dan batas bawah dari fraksi vektor dukungan.
Hal ini dapat menunjukkan bahwa formulasi \ nu-SVC adalah reparametrization dari C-SVC dan karena itu matematis setara.1.4.7.3. SVR
Vektor pelatihan diberikan x_i \ di \ mathbb {R} ^ p, i = 1, ..., n, dan vektor y \ di \ mathbb {R} ^ n \ varepsilon-SVR memecahkan berikut masalah primal:
\ min_ {w, b, \ zeta, \ zeta ^ *} \ frac {1} {2} w ^ T w + C \ sum_ {i = 1} ^ {n} (\ zeta_i + \ zeta_i ^ *) \ textrm {tunduk} & y_i - w ^ T \ phi (x_i) - b \ leq \ varepsilon + \ zeta_i, \\ & w ^ T \ phi (x_i) + b - y_i \ leq \ varepsilon + \ zeta_i ^ * , \\ & \ zeta_i, \ zeta_i ^ * \ GEQ 0, i = 1, ..., n
Dual yaitu
\ min _ {\ alpha, \ alpha ^ *} \ frac {1} {2} (\ alpha - \ alpha ^ *) ^ TQ (\ alpha - \ alpha ^ *) + \ varepsilon e ^ T (\ alpha + \ alpha ^ *) - y ^ T (\ alpha - \ alpha ^ *) \ textrm {tunduk} & e ^ T (\ alpha - \ alpha ^ *) = 0 \\ & 0 \ leq \ alpha_i, \ alpha_i ^ * \ leq C, i = 1, ..., n
dimana e adalah vektor dari semua orang, C> 0 adalah batas atas, Q adalah n oleh matriks semidefinite n positif, Q_ {ij} \ equiv K (x_i, x_j) = \ phi (x_i) ^ T \ phi ( x_j) adalah kernel. Berikut vektor pelatihan secara implisit dipetakan menjadi lebih tinggi (mungkin tak terbatas) ruang dimensi dengan fungsi \ phi.
Fungsi keputusan adalah:
\ sum_ {i = 1} ^ n (\ alpha_i - \ alpha_i ^ *) K (x_i, x) + \ rho
Parameter ini dapat diakses melalui anggota dual_coef_ yang memegang perbedaan \ alpha_i - \ alpha_i ^ *, support_vectors_ yang memegang vektor dukungan, dan intercept_ yang memegang independen jangka \ rho
Referensi:

    
"Sebuah Tutorial Support Vector Regression" Alex J. Smola, Bernhard Schölkopf -Statistics dan Komputasi Volume arsip 14 Issue 3, Agustus 2004, hal. 199-222
1.4.8. Rincian pelaksanaan
Secara internal, kami menggunakan libsvm dan liblinear untuk menangani semua perhitungan. Perpustakaan ini dibungkus menggunakan C dan Cython.
Referensi:
Untuk penjelasan dari pelaksanaan dan rincian dari algoritma yang digunakan, silakan lihat

        
LIBSVM: perpustakaan untuk Support Vector Machines
        
LIBLINEAR - Sebuah Perpustakaan untuk Besar Klasifikasi Linear