สรุปงาน Python/Hadoop for Young Data Scientist

ภาพจากเพจ Data Science Thailand https://www.facebook.com/DataScienceTh/photos/a.876705342372714.1073741831.869639369745978/1145673978809181/?type=1&theater

เมื่อวันเสาร์ อาทิตย์ที่ผ่านมา (20-21 สิงหาคม 2559) ผมได้ไปงานสัมมนา Young Data Scientist ครับ โดยงานนี้เป็น Course เริ่มต้นสำหรับผู้ที่สนใจในเรื่อง Data Science ครับ อ๋องานนี่จัดเป็นครั้งที่ 2 แล้วนะ สำหรับงานนี้จะเน้นในเรื่อง Python กับ Hadoop ครับ สำหรับผมที่เป็นสาย Developer อยู่แล้ว ขอเลือก Python ครับ (ตัว Hadoop เคยลอง Set up เล่นๆใน vm แล้ว แต่ถ้าในงานนี้เป็นการเล่นบน MS Azure Cloud ครับ) มาต่อที่ห้อง Python ดีกว่าครับ ห้องนี้สอนโดย ดร. กานต์ ครับ Python for Young Data Scientist * วันแรก Introduction to Python – รวมคำสั่งพื้นฐานที่จำเป็นสำหรับงานด้าน Data Science ครับ มาลองเล่น jupyter กัน มาศึกษา python ผ่านตัว jupyter Library Pandas – สำหรับการจัดการข้อมูลดิบครับ และดูสถิติพื้นฐานครับ ผมมองว่าเป็นการทำ ETL + สถิติครับ แนะนำ Machine Learning Library scikit-learn – เป็น Library สำหรับเรียนรู้ Machine Learning โดยมีอัลกอริทึมสำเร็จรูปมาให้ใช้งานครับ * วันที่สอง แสดงตัวอย่าง Python กับงานจริงครับ ผ่านตัวชุด DataSet ต่างๆ…

มาศึกษา python ผ่านตัว jupyter

จาก Blog ตอนที่แล้วเรื่อง มาลองเล่น “jupyter กัน” มันเป็นการศึกษา ลองเทสว่าใช้งานได้ก่อนมาเรียนครับ คราวนี้มาเรียนจริงและ โดย ดร. กานต์ (ไม่รู้เขียนชื่อ ถูกหรือป่าว ?) มาศึกษา python ผ่านตัว jupyter บ้าง โดยทำไมต้องใช้ jupyter ง่าย – เขียนเสร็จ Run ดูผลลัพธ์ได้เลย jupyter – สามารถเขียน Doc และ Code ร่วมกันได้ notebook – Workspace ที่เราใส่ Code ใส่ไฟล์ต่างๆลงไป เช่น TextFile หรือ JsonFile เป็นต้น แต่ละช่องที่ให้เราพิมพ์อะไรเข้าไป มันเรียกว่า Cell จากรูปมี 3 Cell ครับ มาดู Key ลัดใน jupyter ดีกว่า สำหรับในวันนี้ที่ผมใช้บ่อยๆ เป็นกลุ่มคำสั่งใน Command Mode เข้าได้โดยการกดปุ่ม ESC หรือ Ctrl + Enter ก็ได้นะ ตัว Cell เปลี่ยนเป็นสีฟ้า (ณ 2016-08-20 เผื่ออนาคตโปรแกรมมันเปลี่ยนสีครับ) เพิ่ม Cell : A – Aboove, B – Below ลบ Cell : D – Delete Ctrl + Enter : Run Code ใน Cell นั้น Shift + Enter : Run Code…

[C#] ทำไม int / int แล้วไม่มีทศนิยมหละ

พอดีผมได้ Port Code ในส่วน Business Logic อันนึงจาก VB6 มาเป็ C# แทน เพราะดูแล้วเขียนใหม่น่าจะรีด Performance ได้ดีกว่าครับ หลังจากผมใช้เวลาไปประมาณ 1 เดือน ในการยก Code ขึ้นมา Complile ผ่านนะ แต่ Run แล้ว ประกอบกับ UnitTest แล้วผลลัพธ์ผิด พอลอง Debug เข้าไปดูแล้วพบว่า C# int หาร int ได้ 0 VB6 ได้ค่าทศนิยมมาครับ ถึงตอนนี้เราต้องไปดูที่ C# Specification ครับ โดยตัวภาษา C# แบ่งเรื่อง Division operator เป็น 3 กลุ่มครับ Integer Division Floating-point Division – ตามหลักของ IEEE 754 arithmetic Decimal Division พออ่านมาถึงจุดนี้แล้ว ทำไม Microsoft ไม่ทำให้  Integer division แล้วได้ทศนิยมออกมาเลย หละ สำหรับผม ขอให้ความเห็น ดังนี้ครับ ความเร็ว พื้นฐานคอมพิวเตอร์ที่เราเรียนตอนนี้ยังเป็นระบบ Bit เลข 0 และ 1 ถ้าไม่สนใจทศนิยมมันทำให้กระบวนการคิดสั้นลงมาก (Simple & Fast) ไม่ต้องการสนใจพวก Rounding เพราะ ถ้าเราต้องการให้ Integer Division มีทศนิยมให้ได้เนี่ย สิ่งที่เราต้องเจอการ Rounding ครับ จากเหตุผลข้อที่แล้วคอมพิวเตอร์ไม่ได้คิดเลขแบบคนคิดแบบ 0 และ 1 และถ้าเคสที่หารแล้วได้ทศนิยมแบบ 0.6666666666 ระบบต้องมาหาวิธีปัดครับ ดูตามรูปจาก Wiki ดีกว่าครับ มีอัลกอริทึมที่เกี่ยวข้องด้วย เข้าใจสาเหตุแล้วการแก้ไขหละ…

มาลองเล่น jupyter กัน

ก่อนที่จะไปเรียนในวันรุ่งขึ้น ลองมาเล่น jupyter หรือ ชื่อเดิม IPython  โดยเจ้าตัวนี้เป็น Tools ที่รันบนเว็บเบราเซอร์ครับ เป็น IDE ที่ใช้งานง่ายตัวเลยครับ ติดตั้ง ถ้าลงตัว Anaconda มาแล้ว มีตัว jupyter ติดตั้งมาให้ในตัวครับ (ทางเว็บแนะนำครับ เพราะมันจะจัดการพวก Dependency ให้หมดเลย แต่ถ้าไม่มีสามารถใช้คำสั่ง pip3 install jupyter pip3 ของ Python3 ส่วนเวอร์ชั่น 2 ใช้คำสั่ง pip ครับ หลังจากลงเสร็จ สามารถเรียกใช้ผ่านคำสั่งผ่าน Command line ได้เลย jupyter notebook หรือ ถ้ามีลงตัว Anaconda ไว้แล้ว สามารถเปิดจากได้จากตัว Anaconda Navigator ได้เลยครับ รอสักพักมี Web Application เปิดขึ้นมาครับ ลองมา Hello World ครับ มาที่เมูน New ครับ เขียน Code และลอง Run ดูครับ สำหรับ Error SyntaxError: Missing parentheses in call to ‘print’ พอดีผมใช้ Python3 ครับ มันเลยให้คำสั่งบางคำสั่งของ Python2 ใช้งานไม่ได้ครับ รู้สึกว่าการกลับมาเขียน Python ในรอบ 3 ปีนี่มีอะไรเปลี่ยนไปเยอะเลยครับ

Data Science 0.121

ก่อนไปเรียนในวันเสาร์นี้ ทีมงานผู้สอนให้ดู Session เริ่มต้นของ Data Science ครับ โดยผมสรุปเป็นหัวข้อ ดังนี้ Data = ข้อมูลดิบ ทำอะไรได้บ้าง ? – ภาพนี้คงตอบได้หมดครับ ถ้าเรามีการจัดการกับข้อมูลที่ดี เราสามารถใช้ประโยชน์จากมันได้เต็มที่ครับ ถ้า Data เป็นวัตถุดิบที่ป้อนเข้าโรงงาน Information, knowledge, Insight และ Wisdom เป็นผลิตภัณฑ์ (Product) ที่ได้จากกระบวนการในขั้นตอนต่างๆครับ แล้วข้อมูลแต่ละแบบ บอกอะไรเราบ้าง ? เข้าใจความสัมพันธ์ รู้รูปแบบ Pattern ทำนายได้ ลองมาดูอีกมุม Mind Map vs Mega Mind Map ข้อมูลมันเยอะขึ้นจน Mind Map มันเล็กเกินไป ในมุมของผมเอา Consept ของ Mind Map มาใช้ แต่มีการจัดกลุ่มของข้อมูล โดยมีการเรียงลำดับความสำคัญ จากราก ลำต้นไป กิ่งใหญ่ และกิ่งย่อยๆ จนแตกออกมาเป็นใบ เป็นผล ครับ Transaction Processing vs Event-Based Processing Transaction Processing – Batch ข้อมูลเข้าระบบ ทำ Decision Tree ออกมา Event-Based Processing – เมื่อข้อมูลมันเยอะมากขึ้น Macine Learning ก็เข้ามา อะไรที่ทำให้ Data Science ดัง Business Need – ทุกอย่างเริ่มต้นจากความต้องการของมนุษย์ ต้องการสร้าง Insight เพื่อเข้าใจลูกค้า Technology Cloud – รองรับการประมวลผลที่เยอะมากๆได้ Internet of Things…

Anaconda: Test Drive

จากบทความที่แล้วที่เตรียม Environment มาแล้ว ผมลองเทสบางส่วน โดยอ้างอิงจาก conda 30-minute test drive. ครับ ตรวจ Version กันก่อนครับ ด้วยคำสั่ง conda –version มีคำสั่งเหมือนพวกฝั่ง Java เลยนะ มาดูว่าลงอะไรไปบ้าง ด้วยคำสั่ง conda info และก็มีตัว Anaconda Navigator ด้วยครับ เดี๋ยวถ้ามีอะไรเพิ่มเติมเดี๋ยวผมมา Note ใน Blog นะครับ นอนและครับ พุ่งนี้ต้องไปนั่งเขียน Test ก่อน

Anaconda: Data science platform powered by Python

เนื่องจากผมได้ไปสมัครอบรม “Python/Hadoop for Young Data Scientists” ที่จัดโดย Data Science Thailand ทันพอดีครับ ก็เลยลองหาข้อมูลเล่นครับ ว่ามี Tools อะไรที่น่าเล่นบ้าง ในส่วนของ Python ครับ หลังจากลองหาข้อมูลสักพัก ผมเจอ Tools ตัวนึงที่น่าสนใจครับ Anaconda เจ้า Anaconda  มองว่าเป็น Package ที่พื้นฐานจาก Python และเสริมด้วย Plug-in ต่างๆ สำหรับงานทางด้าน Data Science ตามคำอธิบายของมันเลยครับ “Anaconda is the leading open data science platform powered by Python.” โดยส่วนเสริมที่มี เช่น  IPython หรือปัจจุบันเป็น jupyter, NumPy, Tornado , statsmodels และ อื่นๆ ลองไปดูได้เลยตรับ  ต่อไปเป็นการติดตั้งสามารถ Download ได้ตามลิงค์ Anaconda เลยครับ รองรับทุกค่ายครับ ทั้ง Windows, Linux และ Mac ครับ (รู้สึกว่ามี  Plug-in พิเศษสำหรับแต่ละค่ายด้วย ถ้าเป็นตัว Windows เหมือนเป็นตัวเสริมที่เกี่ยวกับ VS2015 นะ) มี Package สำหรับ Python2 และ Python3 มีตัวฟรี และเสียเงินครับ สำหรับผมที่เป็น Developer ที่เขียน Python ครั้งสุดท้ายตอน 3 ปี ก่อนโน้น จึงยังไม่มีอะไรมากแนะนำมากครับ รอรื้อฟื้นพลังในวันเสาร์ตอนอบรมครับ ขอไปลง Anaconda Windows Edition ครับ ช่วงนี้เป็นเด็กสาย .Net Framework (C#) ครับ ตอนลงของผมเจอปัญหา ดังนี้ครับ Q…

Pokémon Go เปลี่ยนวิถีชีวิตในวันหยุด

หลังจากเขียน Blog เกี่ยวกับ Pokémon Go มา 2 ตอนและ วันนี้มาเล่าวิถีชีวิตที่เปลี่ยนไปในวันหยุด เพราะ เกมนี้นะครับ โดยเริ่มจากสาเหตุ แถวบ้านไม่มี Pokéstop !!! ตอนแรกเรียกว่า Pokéshop เพราะ มันมีปุ่มรูกระเป๋าให้ใช้เหรียญทองซื้อของได้ (เหรียญมาจากการตี Gym ครับ) วางแผน ถัดมาเริ่มวางแผนและ โดยวันเสาร์อาทิตย์ได้ลองเดินจากบ้านมา ตามแผนผัง ดังนี้ครับ (จริงๆ ตอนแรกกะเดินไปเรื่อยๆ) แต่ผมไม่เปิดตัว AR นะครับ มันกินแบตครับ ออกเดินทาง ออกเดินทางประมาณ 11 โมง กินอะไรให้เรียบร้อย เตรียม Power Bank ไว้พร้อมเลย และก็แบก Notebook หลังจากลงหลักปักฐานเสร็จ เผื่อมาแกะ Code Market Price FI ด้วย ฮ่าๆ เป้าหมาย แถมจุดจับ Pokémon สุดท้าย Blog นี้เกิดขึ้น เพราะ ความสงสัย ว่าทำไมไข่มันฟักนานมากก เลยมาลองเดิน 2 วัน และวัดระยะด้วย Google Map ครับ ใกล้เคียงระดับนึงเลย 2 วันเดินได้วันละประมาณ 11 กิโลเมตรครับ สำหรับเกมนี้มันเป็นเกมที่นำ Character ของ Pokémon มาใช้ได้ดีเลยทีเดียว รวมถึงมี Business Model ที่ดีมากครับ รณรงค์คนออกจากบ้านได้ “ออกจากบ้าน ก็เสียเงินแล้วครับ” (สสส ต้องส่งเสริมต่อนะ แค่ขยับก็เท่ากับออกกำลัง) และการเดิน 2 วันนี้ไม่สูญเปล่านะครับ ก่อนกลับในวันอาทิตย์เจอตัวนี้ด้วย  

[C#] Pass By ?

Blog ตอนที่แล้ว ผมได้กล่าวสรุปไปแล้ว ว่าภาษา Java มีการส่งข้อมูล Pass by Value อย่างเดียว คราวนี้มาอีกภาษาที่ผมใช้ในการทำงานบ้าง C# จากโลกของ .NOT เฮ้ยย .NET ครับ  ซึ่งผมได้เขียน Code โดยปรับจาก Java ในบทความก่อน ดังนี้ ครับ namespace TestCSharpPassby { class Program { public static void Main(string[] args) { Company company = new Company(); company.CompanyName= “COMSWU”; Console.WriteLine(“First >> ” + company.CompanyName); ChangeNameVer1(company); Console.WriteLine(“Second >> ” + company.CompanyName); ChangeNameVer2(company); Console.WriteLine(“Third >> ” + company.CompanyName); ChangeNameVer3(company); Console.WriteLine(“Fourth >> ” + company.CompanyName); } public static void ChangeNameVer1(Company pCompany) { pCompany.CompanyName = “DebuggingSoft”; } public static void ChangeNameVer2(Company pCompany) { pCompany = new Company(); pCompany.CompanyName = “Chatri Soft”; } public static void ChangeNameVer3(Company pCompany) { pCompany =…