Python vs R สำหรับการเรียนรู้ของเครื่อง


101

ฉันเพิ่งเริ่มพัฒนาแอปพลิเคชั่นการเรียนรู้ของเครื่องจักรเพื่อจุดประสงค์ทางวิชาการ ฉันกำลังใช้Rและฝึกฝนตัวเองอยู่ คนอย่างไรก็ตามในจำนวนมากที่ผมได้เห็นการใช้งูหลาม

ผู้คนกำลังใช้อะไรในสถาบันการศึกษาและอุตสาหกรรมและคำแนะนำคืออะไร


3
ดีสิ่งที่ประเภทของเครื่องการเรียนรู้ (ภาพ / วิดีโอ? NLP? ทางการเงินหรือไม่ดาราศาสตร์?) ซึ่งจําแนกสิ่งที่ชุดข้อมูลขนาด (MB? Gb? Tb?) สิ่งที่ขนาดสิ่งที่แฝงอยู่กับสิ่งที่แพลตฟอร์ม (มือถือ / เดี่ยวคอมพิวเตอร์ / multicore / คลัสเตอร์ / เมฆ) ... ? แอปพลิเคชันของคุณจะใช้ / ต้องการห้องสมุดใดเป็นพิเศษและคุณได้ตรวจสอบว่ามีอะไรบ้างในแต่ละภาษา คุณเพิ่งสร้างแอพพลิเคชั่นของเล่นเพื่อการเรียนรู้ส่วนบุคคลของคุณหรือไม่ก็ตาม ใช้โอเพนซอร์สหรือเป็นกรรมสิทธิ์? คุณจะทำงานกับคนอื่นหรือแอพที่มีอยู่และพวกเขาใช้ / สนับสนุนอะไรบ้าง ส่วนหน้าเว็บ / GUI? ฯลฯ
smci

1
สิ่งหนึ่งที่สังเกตได้คือ Python นั้นถูกใช้โดยคนเรียนรู้เครื่องจักรที่ทำงานกับชุดข้อมูลขนาดใหญ่ในขณะที่ R ถูกใช้งานโดย "นักสถิติ" แบบดั้งเดิมเช่นผู้ที่ทำงานกับการทดลองทางจิตวิทยากับจุดข้อมูลหลายร้อยจุด แม้ว่าความแตกต่างนั้นอาจลดน้อยลง
xji

หลามตลอดทาง! ฉันทำสิ่งที่เพื่อนร่วมงานของฉันทำได้ 4 เท่าในหนึ่งวัน และคุณสามารถใช้ python สำหรับงานการเขียนโปรแกรมทุกประเภทไม่เพียง แต่การเรียนรู้ของเครื่อง
Francesco Pegoraro

คำตอบ:


91

ความแตกต่างที่สำคัญจริง ๆ ที่ควรพิจารณาเมื่อคุณเลือกRหรือPythonมากกว่ากัน:

  • การเรียนรู้ของเครื่องมี 2 ​​ขั้นตอน ขั้นตอนการสร้างแบบจำลองและการทำนาย โดยปกติแล้วการสร้างรูปแบบการดำเนินการเป็นกระบวนการ batch และการคาดการณ์ที่ทำเรียลไทม์ กระบวนการสร้างแบบจำลองเป็นกระบวนการคำนวณแบบเข้มข้นในขณะที่การคาดการณ์เกิดขึ้นในระยะเวลาอันสั้น ดังนั้นประสิทธิภาพของอัลกอริธึมใน Python หรือ R จึงไม่ส่งผลกระทบต่อเวลาการทำงานของผู้ใช้ Python 1, R 1
  • การผลิต:ความแตกต่างที่แท้จริงระหว่าง Python และ R มาพร้อมในการผลิต Python เป็นภาษาโปรแกรมเต็มรูปแบบและองค์กรจำนวนมากใช้ในระบบการผลิตของพวกเขา R เป็นซอฟต์แวร์การเขียนโปรแกรมเชิงสถิติที่ชื่นชอบโดยสถาบันการศึกษาหลายแห่งและเนื่องจากการเพิ่มขึ้นของวิทยาศาสตร์ข้อมูลและความพร้อมใช้งานของห้องสมุดและเป็นโอเพนซอร์สอุตสาหกรรมได้เริ่มใช้อาร์หลายองค์กรเหล่านี้มีระบบการผลิตใน Java, C ++, C #, Python ฯลฯ ดังนั้นโดยหลักแล้วพวกเขาต้องการให้ระบบการทำนายเป็นภาษาเดียวกันเพื่อลดปัญหาเวลาในการตอบสนองและการบำรุงรักษา Python 2, R 1
  • ห้องสมุด:ทั้งสองภาษามีห้องสมุดที่ใหญ่และน่าเชื่อถือ R มีมากกว่า 5000 ห้องสมุดที่จัดไว้ให้หลายโดเมนในขณะที่งูใหญ่มีแพคเกจที่น่าทึ่งบางอย่างเช่นนุ่น NumPy, SciPy, Scikit เรียนรู้ Matplotlib Python 3, R 2
  • การพัฒนา:ทั้งสองภาษาตีความเป็นภาษา หลายคนบอกว่างูเหลือมนั้นเรียนรู้ได้ง่ายมันเกือบจะเหมือนกับการอ่านภาษาอังกฤษ (เพื่อใส่ไว้ในโน้ตที่เบากว่า) แต่ R ต้องการความพยายามในการเริ่มต้นศึกษามากขึ้น นอกจากนี้ทั้งสองยังมี IDE ที่ดี (Spyder และอื่น ๆ สำหรับ Python และ RStudio สำหรับ R) Python 4, R 2
  • ความเร็ว:ซอฟต์แวร์ R เริ่มมีปัญหากับการคำนวณขนาดใหญ่ (พูดเช่นการคูณเมทริกซ์ nxn) แต่ปัญหานี้แก้ไขได้ด้วยการนำ R โดย Revolution Analytics พวกเขามีการคำนวณการดำเนินการอย่างเข้มข้นเขียนซ้ำใน C ซึ่งเร็วอย่างเห็นได้ชัด Python เป็นภาษาระดับสูงค่อนข้างช้า Python 4, R 3
  • การสร้างภาพข้อมูล:ในศาสตร์ข้อมูลเรามักจะวางแผนข้อมูลเพื่อแสดงรูปแบบต่อผู้ใช้ ดังนั้นการมองเห็นจึงเป็นเกณฑ์สำคัญในการเลือกซอฟต์แวร์และ R ฆ่า Python อย่างสมบูรณ์ในเรื่องนี้ ขอบคุณ Hadley Wickham สำหรับแพ็คเกจ ggplot2 ที่เหลือเชื่อ R ชนะมือลง Python 4, R 4
  • การจัดการกับ Big Data:หนึ่งในข้อ จำกัด ของ R คือมันเก็บข้อมูลในหน่วยความจำระบบ (RAM) ดังนั้นความจุแรมจะกลายเป็นข้อ จำกัด เมื่อคุณจัดการกับข้อมูลขนาดใหญ่ Python ทำได้ดี แต่ฉันจะบอกว่าเนื่องจากทั้ง R และ Python มีตัวเชื่อมต่อ HDFS การใช้ประโยชน์จากโครงสร้างพื้นฐาน Hadoop จะทำให้การปรับปรุงประสิทธิภาพดีขึ้นอย่างมาก ดังนั้น Python 5, R 5

ดังนั้นทั้งสองภาษาก็ดีพอ ๆ กัน ดังนั้นขึ้นอยู่กับโดเมนของคุณและสถานที่ทำงานของคุณคุณต้องเลือกภาษาที่เหมาะสม โลกเทคโนโลยีมักชอบใช้ภาษาเดียว ผู้ใช้ทางธุรกิจ (การวิเคราะห์การตลาดการวิเคราะห์การค้าปลีก) มักจะใช้ภาษาการเขียนโปรแกรมเชิงสถิติเช่น R เนื่องจากพวกเขาทำการสร้างต้นแบบอย่างรวดเร็วและสร้างการแสดงภาพ (ซึ่งทำได้เร็วกว่าใน R กว่า Python)


15
R แทบจะไม่เต้นหลามในการสร้างภาพข้อมูล ฉันคิดว่ามันค่อนข้างตรงกันข้าม ไม่เพียงหลามได้ggplot (ซึ่งผมไม่ได้ใช้ตัวเองเนื่องจากมีตัวเลือก pythonic มากขึ้นเช่นทะเล ) ก็สามารถทำได้แม้กระทั่งการสร้างภาพโต้ตอบในเบราว์เซอร์ที่มีแพ็กเกจเช่นโบเก้
Emre

10
นอกจากนี้ R ยังมีความสามารถในการโต้ตอบ ได้แก่ กับ Shiny
stanekam

13
บรรณารักษ์ - ฉันไม่เห็นด้วยเลย R เป็นชุดเครื่องมือที่รวยที่สุดและยิ่งกว่านั้นให้ข้อมูลในวิธีที่เหมาะสมส่วนหนึ่งโดยการสืบทอด S ส่วนหนึ่งจากชุมชนที่ใหญ่ที่สุดแห่งหนึ่งของผู้เชี่ยวชาญที่มีชื่อเสียง
rapaio

34
"ซอฟต์แวร์ Speed: R ในตอนแรกมีปัญหากับการคำนวณขนาดใหญ่ (พูดเช่นการคูณเมทริกซ์ nxn) แต่ปัญหานี้ได้รับการแก้ไขด้วยการแนะนำของ R โดย Revolution Analytics พวกเขามีการคำนวณที่เข้มข้นใน C ซึ่งเร็วมาก Python เป็นภาษาระดับสูงค่อนข้างช้า " ฉันไม่ใช่ผู้ใช้ R ที่มีประสบการณ์ แต่เท่าที่ฉันรู้ทุกอย่างเกี่ยวกับการใช้งานระดับต่ำใน R ก็มีการใช้งานในระดับต่ำที่คล้ายกันใน numpy / scipy / pandas / scikit-learning / อะไรก็ตาม Python มี numba และ cython ด้วย จุดนี้ควรจะเสมอกัน
Dougal

8
สำหรับคุณที่แสดงความคิดเห็น "การจัดการกับข้อมูลขนาดใหญ่" ฉันจะเพิ่ม python ว่าเป็นหนึ่งใน 3 ภาษาที่สนับสนุนโดย apache spark ซึ่งมีความเร็วที่รวดเร็ว ความคิดเห็นของคุณเกี่ยวกับ R ที่มีจุดแบ็คเอนด์ C เป็นเรื่องจริง แต่ไพ ธ อนห้องสมุด scikitlearn นั้นก็รวดเร็วเช่นกัน ฉันคิดว่าโพสต์ของคุณมีความสมดุลที่ดี แต่ฉันยืนยันว่าความเร็วนั้นน้อยเสมอกันและความสามารถในการปรับขยาย
jagartner

23

ไม่มีอะไรที่เหมือนกับ "python ดีกว่า" หรือ "R ดีกว่า x"

ความจริงเพียงอย่างเดียวที่ฉันรู้ก็คือในอุตสาหกรรมที่มีคนจำนวนมากติดกับหลามเพราะนั่นคือสิ่งที่พวกเขาเรียนรู้จากมหาวิทยาลัย ชุมชนไพ ธ อนนั้นทำงานจริงๆและมีเฟรมเวิร์กที่ยอดเยี่ยมสำหรับ ML และ data mining เป็นต้น

แต่ตามจริงแล้วถ้าคุณได้โปรแกรมเมอร์ c ที่ดีเขาก็สามารถทำเช่นเดียวกับที่คนทำใน python หรือ r ถ้าคุณมีโปรแกรมเมอร์ Java ที่ดีเขาก็สามารถทำได้ทุกอย่างใน java

ดังนั้นเพียงติดกับภาษาที่คุณคุ้นเคย


5
แต่ห้องสมุดล่ะ มีแพ็คเกจ R ขั้นสูง (คิด Ranfom Forest หรือ Caret) ที่จะไม่สามารถนำมาใช้ซ้ำได้ในภาษาที่ใช้งานทั่วไปเช่น C หรือ Java
Santiago Cepas

mahout ie สนับสนุนป่าสุ่มสำหรับ java
Johnny000

1
อาจจะใช่ แต่ R ไม่ได้ให้ประสิทธิภาพที่คุณต้องการสำหรับการทำชุดข้อมูลขนาดใหญ่และส่วนใหญ่คุณจะมีชุดข้อมูลขนาดใหญ่ที่ใช้ในอุตสาหกรรม
Johnny000

1
ใช่โปรแกรมเมอร์ที่ดีสามารถทำเช่นเดียวกันใน C. แต่โปรแกรมเมอร์ที่ไม่ดีสามารถทำได้ใน Python เร็วที่สุดเท่าที่โปรแกรมเมอร์ที่มีประสบการณ์สามารถทำได้ใน C.
Pithikos

1
ฉันไม่คิดว่ามันจะเป็นความจริงเสมอ @Pithikos จากสูตรทางคณิตศาสตร์พื้นฐานฉันสามารถสร้างมันเองได้เร็วขึ้นด้วย VB / T-SQL เร็วกว่าที่ฉันจะทำได้ และในขั้นตอนนี้ทำให้โค้ดที่ได้นั้นสามารถปรับขนาดได้มากขึ้น ฉันดีใจที่ห้องสมุดเหล่านี้มีอยู่ แต่มีข้อเสียอยู่ภายใน ในบางสถานการณ์และบางโครงการจะเป็นการดีกว่าที่จะหลีกเลี่ยง
SQLServerSteve

16

ความคิดเพิ่มเติมบางอย่าง

ภาษาการเขียนโปรแกรม 'ต่อ se' เป็นเพียงเครื่องมือ ภาษาทั้งหมดถูกออกแบบมาเพื่อให้การสร้างบางประเภทง่ายต่อการสร้างมากกว่าภาษาอื่น ๆ และความรู้และความเชี่ยวชาญของภาษาการเขียนโปรแกรมมีความสำคัญและมีประสิทธิภาพมากกว่าคุณสมบัติของภาษานั้นเมื่อเทียบกับคนอื่น ๆ

เท่าที่ฉันเห็นมีสองมิติของคำถามนี้ มิติแรกคือความสามารถในการสำรวจสร้างหลักฐานของแนวคิดหรือแบบจำลองที่รวดเร็วในที่สุดก็มีเครื่องมือเพียงพอที่จะศึกษาสิ่งที่เกิดขึ้น (เช่นการทดสอบทางสถิติกราฟิกเครื่องมือวัด ฯลฯ ) กิจกรรมประเภทนี้มักเป็นที่ต้องการของนักวิจัยและนักวิทยาศาสตร์ด้านข้อมูล (ฉันมักจะสงสัยว่ามันหมายถึงอะไร แต่ฉันใช้คำนี้เพื่อนิยามที่ไม่ชัดเจน) พวกเขามักจะพึ่งพาเครื่องมือที่เป็นที่รู้จักและตรวจสอบแล้วซึ่งสามารถนำมาใช้เพื่อพิสูจน์หรือโต้แย้ง

มิติที่สองคือความสามารถในการขยายเปลี่ยนแปลงปรับปรุงหรือสร้างเครื่องมืออัลกอริทึมหรือแบบจำลอง เพื่อให้บรรลุว่าคุณต้องการภาษาการเขียนโปรแกรมที่เหมาะสม พวกเขาทั้งหมดประมาณเดียวกัน หากคุณทำงานให้กับ บริษัท คุณต้องพึ่งพาโครงสร้างพื้นฐานของ บริษัท วัฒนธรรมภายในและทางเลือกของคุณมากมาย นอกจากนี้เมื่อคุณต้องการใช้อัลกอริทึมสำหรับการใช้งานจริงคุณต้องเชื่อถือการใช้งาน และการใช้งานในภาษาอื่นที่คุณไม่เชี่ยวชาญจะไม่ช่วยคุณมากนัก

ฉันมักจะชอบกิจกรรมประเภทแรกที่ระบบนิเวศ R คุณมีชุมชนที่ยอดเยี่ยมชุดเครื่องมือขนาดใหญ่พิสูจน์ได้ว่าเครื่องมือเหล่านี้ทำงานได้ตามที่คาดหวัง นอกจากนี้คุณยังสามารถพิจารณา Python, Octave (เพื่อบอกชื่อบางส่วน) ซึ่งเป็นตัวเลือกที่น่าเชื่อถือ

สำหรับภารกิจที่สองคุณต้องคิดก่อนในสิ่งที่คุณต้องการ หากคุณต้องการเครื่องมือที่พร้อมสำหรับการผลิตที่แข็งแกร่ง C / C ++, Java, C # เป็นตัวเลือกที่ยอดเยี่ยม ฉันถือว่า Python เป็นพลเมืองที่สองในหมวดหมู่นี้พร้อมกับ Scala และเพื่อน ๆ ฉันไม่ต้องการเริ่มสงครามไฟมันเป็นความเห็นของฉันเท่านั้น แต่หลังจากนักพัฒนามากกว่า 17 ปีฉันมักจะชอบสัญญาที่เข้มงวดและความรู้ของฉันมากกว่าอิสระในการทำสิ่งที่คุณอาจคิด (เหมือนมันเกิดขึ้นกับภาษาแบบไดนามิกจำนวนมาก)

ส่วนตัวฉันต้องการเรียนรู้ให้มากที่สุด ฉันตัดสินใจว่าฉันต้องเลือกวิธีที่ยากซึ่งหมายถึงการใช้ทุกอย่างตั้งแต่เริ่มต้น ฉันใช้ R เป็นแบบอย่างและเป็นแรงบันดาลใจ มันมีสมบัติล้ำค่ามากมายในห้องสมุดและมีประสบการณ์กลั่นมากมาย อย่างไรก็ตาม R เป็นภาษาการเขียนโปรแกรมเป็นฝันร้ายสำหรับฉัน ดังนั้นฉันจึงตัดสินใจใช้ Java และไม่ใช้ไลบรารีเพิ่มเติม นั่นเป็นเพียงเพราะประสบการณ์ของฉันและไม่มีอะไรอื่น

หากคุณมีเวลาสิ่งที่ดีที่สุดที่คุณสามารถทำได้คือใช้เวลากับสิ่งเหล่านี้ทั้งหมด ด้วยวิธีนี้คุณจะได้คำตอบที่ดีที่สุดเท่าที่จะเป็นไปได้เพื่อตัวคุณเอง Dijkstra พูดครั้งหนึ่งว่าเครื่องมือมีอิทธิพลต่อวิธีที่คุณคิดดังนั้นขอแนะนำให้รู้จักเครื่องมือของคุณก่อนที่จะปล่อยให้พวกเขาสร้างแบบจำลองที่คุณคิด คุณสามารถอ่านเพิ่มเติมเกี่ยวกับเรื่องนั้นได้ในกระดาษที่โด่งดังของเขาที่ชื่อว่าThe Humble Programmer


15

ฉันจะเพิ่มสิ่งที่คนอื่นพูดจนถึงตอนนี้ ไม่มีคำตอบเดียวว่าภาษาหนึ่งดีกว่าภาษาอื่น

ต้องบอกว่า R มีชุมชนที่ดีกว่าสำหรับการสำรวจข้อมูลและการเรียนรู้ มันมีความสามารถในการสร้างภาพมากมาย Python ในทางกลับกันการจัดการข้อมูลได้ดีขึ้นนับตั้งแต่มีการนำแพนด้ามาใช้ การเรียนรู้และการพัฒนาใช้เวลาน้อยมากใน Python เมื่อเทียบกับ R (R เป็นภาษาระดับต่ำ)

ฉันคิดว่าท้ายที่สุดแล้วมันจะทำให้ระบบนิเวศของคุณเป็นที่ต้องการ สำหรับรายละเอียดเพิ่มเติมที่คุณสามารถดูการเปรียบเทียบนี้ที่นี่


2
"R มีชุมชนที่ดีกว่าสำหรับการเรียนรู้ [... ]" - ฉันคิดว่าสิ่งนี้ขึ้นอยู่กับประเภทของการเรียนรู้ เครือข่ายนิวรัล (สถาปัตยกรรมแบบส่งต่อโดยพลการ, CNNs, RNNs) ใน R คือเท่าใด?
Martin Thoma

1
R ไม่ได้จริงๆว่า IMO "ระดับต่ำ" นอกจากนี้ยังเป็นภาษาแบบไดนามิก
xji

12

ไม่มีภาษาสัญลักษณ์แสดงหัวข้อย่อยเงินที่สามารถใช้เพื่อแก้ไขปัญหาที่เกี่ยวข้องกับข้อมูลแต่ละรายการ ตัวเลือกภาษาขึ้นอยู่กับบริบทของปัญหาขนาดของข้อมูลและหากคุณกำลังทำงานในที่ทำงานคุณต้องยึดติดกับสิ่งที่พวกเขาใช้

โดยส่วนตัวแล้วฉันใช้ R บ่อยกว่า Python เนื่องจากไลบรารี่การสร้างภาพและลักษณะการโต้ตอบ แต่ถ้าฉันต้องการประสิทธิภาพที่มากขึ้นหรือรหัสที่มีโครงสร้างฉันใช้ Python แน่นอนเพราะมันมีไลบรารี่ที่ดีที่สุดอย่าง SciKit-Learn, numpy, scipy เป็นต้นฉันใช้ทั้ง R และ Python ในโปรเจ็กต์ของฉันแทนกัน

ดังนั้นถ้าคุณจะเริ่มต้นในการทำงานด้านวิทยาศาสตร์ข้อมูลที่ผมขอแนะนำให้คุณเรียนรู้ทั้งในและก็ไม่ยากเนื่องจากงูใหญ่ยังมีอินเตอร์เฟซคล้ายกับ R กับนุ่น

หากคุณต้องจัดการกับชุดข้อมูลที่มีขนาดใหญ่ขึ้นคุณจะไม่สามารถหลบหนีระบบนิเวศที่สร้างด้วย Java (Hadoop, Pig, Hbase และอื่น ๆ )


8

ไม่มีภาษา "ดีกว่า" ฉันลองทั้งคู่แล้วและฉันก็พอใจกับ Python ดังนั้นฉันจึงทำงานกับ Python เท่านั้น แม้ว่าฉันจะยังเรียนรู้สิ่งต่าง ๆ อยู่ แต่ฉันไม่พบสิ่งกีดขวางบนถนนกับ Python มาก่อน สิ่งที่ดีเกี่ยวกับ Python ก็คือชุมชนดีเกินไปและคุณสามารถรับความช่วยเหลือมากมายบนอินเทอร์เน็ตได้อย่างง่ายดาย นอกจากนั้นฉันจะบอกว่าไปกับภาษาที่คุณชอบไม่ใช่คนที่แนะนำ


8

จากประสบการณ์ของฉันคำตอบขึ้นอยู่กับโครงการในมือ เพื่อการวิจัยที่บริสุทธิ์ฉันชอบ R ด้วยเหตุผลสองประการ: 1) ห้องสมุดที่หลากหลายและ 2) วรรณกรรมวิทยาศาสตร์ข้อมูลส่วนใหญ่มีตัวอย่าง R

ถ้าโครงการต้องการอินเทอร์เฟซแบบอินเทอร์แอคทีฟที่จะใช้โดย laypersons ฉันพบว่า R ถูก จำกัด ด้วย Shiny เป็นการเริ่มต้นที่ดี แต่ยังไม่ยืดหยุ่นพอ ในกรณีเหล่านี้ฉันจะเริ่มดูการทำงานพอร์ตของฉันไปที่ Python หรือ js


8

ปัญหาคำตอบอื่น ๆ ทั้งหมดไม่ได้อยู่คือการออกใบอนุญาต

ไลบรารี R ที่ยอดเยี่ยมส่วนใหญ่ดังกล่าวเป็น GPL (เช่นggplot2 , data.table ) สิ่งนี้จะป้องกันไม่ให้คุณแจกจ่ายซอฟต์แวร์ของคุณในรูปแบบกรรมสิทธิ์

แม้ว่าการใช้งานห้องสมุดจำนวนมากนั้นไม่ได้บอกเป็นนัยถึงการแจกจ่ายซอฟต์แวร์ (เช่นการฝึกอบรมแบบจำลองออฟไลน์) แต่ GPL เองอาจล่อลวง บริษัท ต่างๆ อย่างน้อยในประสบการณ์ของฉัน

ในส่วนของ python ในทางกลับกันไลบรารี่ส่วนใหญ่จะมีลิขสิทธิ์แบบกระจายที่เหมาะกับธุรกิจเช่น BSD หรือ MIT

ในสถาบันการศึกษาปัญหาการออกใบอนุญาตปกติไม่ใช่ปัญหา



6

หนึ่งในความท้าทายที่แท้จริงที่ฉันเผชิญกับ R คือแพ็คเกจที่แตกต่างกันเข้ากันได้กับรุ่นที่ต่างกัน .. แพ็คเกจ R ค่อนข้างมากไม่พร้อมใช้งานสำหรับรุ่นล่าสุดของ R .. และ R ค่อนข้างบ่อยครั้งทำให้เกิดข้อผิดพลาดเนื่องจากไลบรารีหรือแพคเกจถูกเขียนขึ้น รุ่น ..


3
ฉันไม่แน่ใจว่านี่เป็นปัญหาเฉพาะกับ R หรือว่ามันตอบคำถามว่า Python และ R แตกต่างกันอย่างไร
Sean Owen

5

ฉันยังไม่ได้ลอง R (ดีไปหน่อย แต่ไม่เพียงพอที่จะทำการเปรียบเทียบที่ดี) อย่างไรก็ตามนี่คือจุดแข็งของ Pythons:

  • ไวยากรณ์ง่ายมาก : tuple เอาออก, element in a_list, for element in sequence, matrix_a * matrix_b(สำหรับการคูณเมทริกซ์) ...
  • ห้องสมุดหลายแห่ง :
    • scipy : การคำนวณทางวิทยาศาสตร์; หลายส่วนของมันเป็นเพียงการห่อหุ้มสำหรับรหัส Fortran ที่ค่อนข้างเร็ว
    • theano > Lasagne > nolearn : ไลบรารีสำหรับเครือข่ายประสาทเทียม - สามารถฝึกอบรมได้บน GPU (จำเป็นต้องใช้ NVIDIA, CUDA) โดยไม่มีการปรับแต่งใด ๆ
    • sklearn : อัลกอริทึมการเรียนรู้ทั่วไป
  • ชุมชนที่ดี :
  • สมุดบันทึก IPython
  • อื่น ๆ :
    • อาร์เรย์ 0 ที่จัดทำดัชนี ... ฉันทำข้อผิดพลาดนั้นตลอดเวลาด้วย R
    • สร้างโครงสร้างแพ็คเกจ
    • การสนับสนุนที่ดีสำหรับการทดสอบรหัสของคุณ

3

ฉันชอบ Python มากกว่า R เพราะ Python เป็นภาษาการเขียนโปรแกรมที่สมบูรณ์ดังนั้นฉันจึงสามารถจบงานการเรียนรู้ของเครื่องเช่นรวบรวมข้อมูลโดยใช้เซิร์ฟเวอร์ HTTP ที่เขียนด้วย Python ดำเนินงาน ML ขั้นสูงแล้วเผยแพร่ผลออนไลน์ ทั้งหมดนี้สามารถทำได้ใน Python ฉันพบว่า R นั้นยากที่จะเรียนรู้และการจ่ายเงินเพื่อการเรียนรู้ Python นั้นยิ่งใหญ่กว่ามากเพราะมันสามารถใช้สำหรับงานเขียนโปรแกรมใด ๆ ก็ได้


2
คุณสามารถทำ 3 สิ่งเหล่านี้ได้อย่างง่ายดายใน R
Gaius

2

R: R เป็นแหล่งเปิด ซึ่งมีการใช้แบบดั้งเดิมในด้านวิชาการและการวิจัย เนื่องจากธรรมชาติของโอเพนซอร์ซเทคนิคล่าสุดจึงถูกปล่อยออกมาอย่างรวดเร็ว มีเอกสารจำนวนมากผ่านทางอินเทอร์เน็ตและเป็นตัวเลือกที่คุ้มค่ามาก Python: ด้วยการเริ่มต้นเป็นภาษาสคริปต์โอเพนซอร์ซการใช้ Python จึงเพิ่มขึ้นตามกาลเวลา วันนี้มันเป็นห้องสมุดกีฬา (numpy, scipy และ matplotlib) และฟังก์ชั่นสำหรับการดำเนินการทางสถิติ / การสร้างแบบจำลองที่คุณอาจต้องการทำ นับตั้งแต่เปิดตัวแพนด้าก็มีความแข็งแกร่งในการดำเนินงานกับข้อมูลที่มีโครงสร้าง

รหัสหลาม

นำเข้าห้องสมุด

นำเข้าห้องสมุดที่จำเป็นอื่น ๆ เช่นนุ่น, ไม่สนใจ ...

จากการนำเข้า sklearn linear_model

โหลดชุดข้อมูล Train and Test

ระบุคุณลักษณะและตัวแปรตอบกลับและค่าต่าง ๆ ต้องเป็นอาร์เรย์ตัวเลขและตัวเลข

x_train = input_variables_values_training_datasets y_train = target_variables_values_training_datasets x_test = input_variables_values_test_datasets

สร้างวัตถุการถดถอยเชิงเส้น

linear = linear_model.LinearRegression ()

ฝึกโมเดลโดยใช้ชุดการฝึกอบรมและตรวจสอบคะแนน

linear.fit (x_train, y_train) linear.score (x_train, y_train)

สัมประสิทธิ์สมการและการสกัดกั้น

พิมพ์ ('สัมประสิทธิ์: \ n', linear.coef_) การพิมพ์ ('ตัด: \ n', linear.intercept_)

ทำนายผลผลิต

ทำนาย = linear.predict (x_test) รหัส R

โหลดชุดข้อมูล Train and Test

ระบุคุณลักษณะและตัวแปรตอบกลับและค่าต่าง ๆ ต้องเป็นอาร์เรย์ตัวเลขและตัวเลข

x_train <- input_variables_values_training_datasets y_train <- target_variables_values_training_datasets x_test <- input_variables_values_test_datasets x <- cbind (x_train, y_train)

ฝึกโมเดลโดยใช้ชุดการฝึกอบรมและตรวจสอบคะแนน

เส้นตรง <- lm (y_train ~., data = x) สรุป (เชิงเส้น)

ทำนายผลผลิต

ทำนาย = ทำนาย (เชิงเส้น, x_test)



0

ป้อนคำอธิบายรูปภาพที่นี่

ฉันได้ภาพนี้ในโพสต์ LinkedIn เมื่อใดก็ตามที่ฉันสงสัยในการใช้ python หรือ R ฉันจะตรวจสอบมันและพิสูจน์ว่ามีประโยชน์มาก


แล้วคุณจะเลือกอะไร
Serhii Polishchuk
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.