ฉันเพิ่งเริ่มพัฒนาแอปพลิเคชั่นการเรียนรู้ของเครื่องจักรเพื่อจุดประสงค์ทางวิชาการ ฉันกำลังใช้Rและฝึกฝนตัวเองอยู่ คนอย่างไรก็ตามในจำนวนมากที่ผมได้เห็นการใช้งูหลาม
ผู้คนกำลังใช้อะไรในสถาบันการศึกษาและอุตสาหกรรมและคำแนะนำคืออะไร
ฉันเพิ่งเริ่มพัฒนาแอปพลิเคชั่นการเรียนรู้ของเครื่องจักรเพื่อจุดประสงค์ทางวิชาการ ฉันกำลังใช้Rและฝึกฝนตัวเองอยู่ คนอย่างไรก็ตามในจำนวนมากที่ผมได้เห็นการใช้งูหลาม
ผู้คนกำลังใช้อะไรในสถาบันการศึกษาและอุตสาหกรรมและคำแนะนำคืออะไร
คำตอบ:
ความแตกต่างที่สำคัญจริง ๆ ที่ควรพิจารณาเมื่อคุณเลือกRหรือPythonมากกว่ากัน:
ดังนั้นทั้งสองภาษาก็ดีพอ ๆ กัน ดังนั้นขึ้นอยู่กับโดเมนของคุณและสถานที่ทำงานของคุณคุณต้องเลือกภาษาที่เหมาะสม โลกเทคโนโลยีมักชอบใช้ภาษาเดียว ผู้ใช้ทางธุรกิจ (การวิเคราะห์การตลาดการวิเคราะห์การค้าปลีก) มักจะใช้ภาษาการเขียนโปรแกรมเชิงสถิติเช่น R เนื่องจากพวกเขาทำการสร้างต้นแบบอย่างรวดเร็วและสร้างการแสดงภาพ (ซึ่งทำได้เร็วกว่าใน R กว่า Python)
ไม่มีอะไรที่เหมือนกับ "python ดีกว่า" หรือ "R ดีกว่า x"
ความจริงเพียงอย่างเดียวที่ฉันรู้ก็คือในอุตสาหกรรมที่มีคนจำนวนมากติดกับหลามเพราะนั่นคือสิ่งที่พวกเขาเรียนรู้จากมหาวิทยาลัย ชุมชนไพ ธ อนนั้นทำงานจริงๆและมีเฟรมเวิร์กที่ยอดเยี่ยมสำหรับ ML และ data mining เป็นต้น
แต่ตามจริงแล้วถ้าคุณได้โปรแกรมเมอร์ c ที่ดีเขาก็สามารถทำเช่นเดียวกับที่คนทำใน python หรือ r ถ้าคุณมีโปรแกรมเมอร์ Java ที่ดีเขาก็สามารถทำได้ทุกอย่างใน java
ดังนั้นเพียงติดกับภาษาที่คุณคุ้นเคย
ความคิดเพิ่มเติมบางอย่าง
ภาษาการเขียนโปรแกรม 'ต่อ se' เป็นเพียงเครื่องมือ ภาษาทั้งหมดถูกออกแบบมาเพื่อให้การสร้างบางประเภทง่ายต่อการสร้างมากกว่าภาษาอื่น ๆ และความรู้และความเชี่ยวชาญของภาษาการเขียนโปรแกรมมีความสำคัญและมีประสิทธิภาพมากกว่าคุณสมบัติของภาษานั้นเมื่อเทียบกับคนอื่น ๆ
เท่าที่ฉันเห็นมีสองมิติของคำถามนี้ มิติแรกคือความสามารถในการสำรวจสร้างหลักฐานของแนวคิดหรือแบบจำลองที่รวดเร็วในที่สุดก็มีเครื่องมือเพียงพอที่จะศึกษาสิ่งที่เกิดขึ้น (เช่นการทดสอบทางสถิติกราฟิกเครื่องมือวัด ฯลฯ ) กิจกรรมประเภทนี้มักเป็นที่ต้องการของนักวิจัยและนักวิทยาศาสตร์ด้านข้อมูล (ฉันมักจะสงสัยว่ามันหมายถึงอะไร แต่ฉันใช้คำนี้เพื่อนิยามที่ไม่ชัดเจน) พวกเขามักจะพึ่งพาเครื่องมือที่เป็นที่รู้จักและตรวจสอบแล้วซึ่งสามารถนำมาใช้เพื่อพิสูจน์หรือโต้แย้ง
มิติที่สองคือความสามารถในการขยายเปลี่ยนแปลงปรับปรุงหรือสร้างเครื่องมืออัลกอริทึมหรือแบบจำลอง เพื่อให้บรรลุว่าคุณต้องการภาษาการเขียนโปรแกรมที่เหมาะสม พวกเขาทั้งหมดประมาณเดียวกัน หากคุณทำงานให้กับ บริษัท คุณต้องพึ่งพาโครงสร้างพื้นฐานของ บริษัท วัฒนธรรมภายในและทางเลือกของคุณมากมาย นอกจากนี้เมื่อคุณต้องการใช้อัลกอริทึมสำหรับการใช้งานจริงคุณต้องเชื่อถือการใช้งาน และการใช้งานในภาษาอื่นที่คุณไม่เชี่ยวชาญจะไม่ช่วยคุณมากนัก
ฉันมักจะชอบกิจกรรมประเภทแรกที่ระบบนิเวศ R คุณมีชุมชนที่ยอดเยี่ยมชุดเครื่องมือขนาดใหญ่พิสูจน์ได้ว่าเครื่องมือเหล่านี้ทำงานได้ตามที่คาดหวัง นอกจากนี้คุณยังสามารถพิจารณา Python, Octave (เพื่อบอกชื่อบางส่วน) ซึ่งเป็นตัวเลือกที่น่าเชื่อถือ
สำหรับภารกิจที่สองคุณต้องคิดก่อนในสิ่งที่คุณต้องการ หากคุณต้องการเครื่องมือที่พร้อมสำหรับการผลิตที่แข็งแกร่ง C / C ++, Java, C # เป็นตัวเลือกที่ยอดเยี่ยม ฉันถือว่า Python เป็นพลเมืองที่สองในหมวดหมู่นี้พร้อมกับ Scala และเพื่อน ๆ ฉันไม่ต้องการเริ่มสงครามไฟมันเป็นความเห็นของฉันเท่านั้น แต่หลังจากนักพัฒนามากกว่า 17 ปีฉันมักจะชอบสัญญาที่เข้มงวดและความรู้ของฉันมากกว่าอิสระในการทำสิ่งที่คุณอาจคิด (เหมือนมันเกิดขึ้นกับภาษาแบบไดนามิกจำนวนมาก)
ส่วนตัวฉันต้องการเรียนรู้ให้มากที่สุด ฉันตัดสินใจว่าฉันต้องเลือกวิธีที่ยากซึ่งหมายถึงการใช้ทุกอย่างตั้งแต่เริ่มต้น ฉันใช้ R เป็นแบบอย่างและเป็นแรงบันดาลใจ มันมีสมบัติล้ำค่ามากมายในห้องสมุดและมีประสบการณ์กลั่นมากมาย อย่างไรก็ตาม R เป็นภาษาการเขียนโปรแกรมเป็นฝันร้ายสำหรับฉัน ดังนั้นฉันจึงตัดสินใจใช้ Java และไม่ใช้ไลบรารีเพิ่มเติม นั่นเป็นเพียงเพราะประสบการณ์ของฉันและไม่มีอะไรอื่น
หากคุณมีเวลาสิ่งที่ดีที่สุดที่คุณสามารถทำได้คือใช้เวลากับสิ่งเหล่านี้ทั้งหมด ด้วยวิธีนี้คุณจะได้คำตอบที่ดีที่สุดเท่าที่จะเป็นไปได้เพื่อตัวคุณเอง Dijkstra พูดครั้งหนึ่งว่าเครื่องมือมีอิทธิพลต่อวิธีที่คุณคิดดังนั้นขอแนะนำให้รู้จักเครื่องมือของคุณก่อนที่จะปล่อยให้พวกเขาสร้างแบบจำลองที่คุณคิด คุณสามารถอ่านเพิ่มเติมเกี่ยวกับเรื่องนั้นได้ในกระดาษที่โด่งดังของเขาที่ชื่อว่าThe Humble Programmer
ฉันจะเพิ่มสิ่งที่คนอื่นพูดจนถึงตอนนี้ ไม่มีคำตอบเดียวว่าภาษาหนึ่งดีกว่าภาษาอื่น
ต้องบอกว่า R มีชุมชนที่ดีกว่าสำหรับการสำรวจข้อมูลและการเรียนรู้ มันมีความสามารถในการสร้างภาพมากมาย Python ในทางกลับกันการจัดการข้อมูลได้ดีขึ้นนับตั้งแต่มีการนำแพนด้ามาใช้ การเรียนรู้และการพัฒนาใช้เวลาน้อยมากใน Python เมื่อเทียบกับ R (R เป็นภาษาระดับต่ำ)
ฉันคิดว่าท้ายที่สุดแล้วมันจะทำให้ระบบนิเวศของคุณเป็นที่ต้องการ สำหรับรายละเอียดเพิ่มเติมที่คุณสามารถดูการเปรียบเทียบนี้ที่นี่
ไม่มีภาษาสัญลักษณ์แสดงหัวข้อย่อยเงินที่สามารถใช้เพื่อแก้ไขปัญหาที่เกี่ยวข้องกับข้อมูลแต่ละรายการ ตัวเลือกภาษาขึ้นอยู่กับบริบทของปัญหาขนาดของข้อมูลและหากคุณกำลังทำงานในที่ทำงานคุณต้องยึดติดกับสิ่งที่พวกเขาใช้
โดยส่วนตัวแล้วฉันใช้ R บ่อยกว่า Python เนื่องจากไลบรารี่การสร้างภาพและลักษณะการโต้ตอบ แต่ถ้าฉันต้องการประสิทธิภาพที่มากขึ้นหรือรหัสที่มีโครงสร้างฉันใช้ Python แน่นอนเพราะมันมีไลบรารี่ที่ดีที่สุดอย่าง SciKit-Learn, numpy, scipy เป็นต้นฉันใช้ทั้ง R และ Python ในโปรเจ็กต์ของฉันแทนกัน
ดังนั้นถ้าคุณจะเริ่มต้นในการทำงานด้านวิทยาศาสตร์ข้อมูลที่ผมขอแนะนำให้คุณเรียนรู้ทั้งในและก็ไม่ยากเนื่องจากงูใหญ่ยังมีอินเตอร์เฟซคล้ายกับ R กับนุ่น
หากคุณต้องจัดการกับชุดข้อมูลที่มีขนาดใหญ่ขึ้นคุณจะไม่สามารถหลบหนีระบบนิเวศที่สร้างด้วย Java (Hadoop, Pig, Hbase และอื่น ๆ )
ไม่มีภาษา "ดีกว่า" ฉันลองทั้งคู่แล้วและฉันก็พอใจกับ Python ดังนั้นฉันจึงทำงานกับ Python เท่านั้น แม้ว่าฉันจะยังเรียนรู้สิ่งต่าง ๆ อยู่ แต่ฉันไม่พบสิ่งกีดขวางบนถนนกับ Python มาก่อน สิ่งที่ดีเกี่ยวกับ Python ก็คือชุมชนดีเกินไปและคุณสามารถรับความช่วยเหลือมากมายบนอินเทอร์เน็ตได้อย่างง่ายดาย นอกจากนั้นฉันจะบอกว่าไปกับภาษาที่คุณชอบไม่ใช่คนที่แนะนำ
จากประสบการณ์ของฉันคำตอบขึ้นอยู่กับโครงการในมือ เพื่อการวิจัยที่บริสุทธิ์ฉันชอบ R ด้วยเหตุผลสองประการ: 1) ห้องสมุดที่หลากหลายและ 2) วรรณกรรมวิทยาศาสตร์ข้อมูลส่วนใหญ่มีตัวอย่าง R
ถ้าโครงการต้องการอินเทอร์เฟซแบบอินเทอร์แอคทีฟที่จะใช้โดย laypersons ฉันพบว่า R ถูก จำกัด ด้วย Shiny เป็นการเริ่มต้นที่ดี แต่ยังไม่ยืดหยุ่นพอ ในกรณีเหล่านี้ฉันจะเริ่มดูการทำงานพอร์ตของฉันไปที่ Python หรือ js
ปัญหาคำตอบอื่น ๆ ทั้งหมดไม่ได้อยู่คือการออกใบอนุญาต
ไลบรารี R ที่ยอดเยี่ยมส่วนใหญ่ดังกล่าวเป็น GPL (เช่นggplot2 , data.table ) สิ่งนี้จะป้องกันไม่ให้คุณแจกจ่ายซอฟต์แวร์ของคุณในรูปแบบกรรมสิทธิ์
แม้ว่าการใช้งานห้องสมุดจำนวนมากนั้นไม่ได้บอกเป็นนัยถึงการแจกจ่ายซอฟต์แวร์ (เช่นการฝึกอบรมแบบจำลองออฟไลน์) แต่ GPL เองอาจล่อลวง บริษัท ต่างๆ อย่างน้อยในประสบการณ์ของฉัน
ในส่วนของ python ในทางกลับกันไลบรารี่ส่วนใหญ่จะมีลิขสิทธิ์แบบกระจายที่เหมาะกับธุรกิจเช่น BSD หรือ MIT
ในสถาบันการศึกษาปัญหาการออกใบอนุญาตปกติไม่ใช่ปัญหา
ไม่มากที่จะเพิ่มความคิดเห็นที่ให้ไว้ มีเพียงสิ่งเดียวเท่านั้นที่อาจเปรียบเทียบ Infographic R กับ Python เพื่อจุดประสงค์ด้านวิทยาศาสตร์ข้อมูลhttp://blog.datacamp.com/r-or-python-for-data-analysis/
หนึ่งในความท้าทายที่แท้จริงที่ฉันเผชิญกับ R คือแพ็คเกจที่แตกต่างกันเข้ากันได้กับรุ่นที่ต่างกัน .. แพ็คเกจ R ค่อนข้างมากไม่พร้อมใช้งานสำหรับรุ่นล่าสุดของ R .. และ R ค่อนข้างบ่อยครั้งทำให้เกิดข้อผิดพลาดเนื่องจากไลบรารีหรือแพคเกจถูกเขียนขึ้น รุ่น ..
ฉันยังไม่ได้ลอง R (ดีไปหน่อย แต่ไม่เพียงพอที่จะทำการเปรียบเทียบที่ดี) อย่างไรก็ตามนี่คือจุดแข็งของ Pythons:
element in a_list
, for element in sequence
, matrix_a * matrix_b
(สำหรับการคูณเมทริกซ์) ...ฉันชอบ Python มากกว่า R เพราะ Python เป็นภาษาการเขียนโปรแกรมที่สมบูรณ์ดังนั้นฉันจึงสามารถจบงานการเรียนรู้ของเครื่องเช่นรวบรวมข้อมูลโดยใช้เซิร์ฟเวอร์ HTTP ที่เขียนด้วย Python ดำเนินงาน ML ขั้นสูงแล้วเผยแพร่ผลออนไลน์ ทั้งหมดนี้สามารถทำได้ใน Python ฉันพบว่า R นั้นยากที่จะเรียนรู้และการจ่ายเงินเพื่อการเรียนรู้ Python นั้นยิ่งใหญ่กว่ามากเพราะมันสามารถใช้สำหรับงานเขียนโปรแกรมใด ๆ ก็ได้
R: R เป็นแหล่งเปิด ซึ่งมีการใช้แบบดั้งเดิมในด้านวิชาการและการวิจัย เนื่องจากธรรมชาติของโอเพนซอร์ซเทคนิคล่าสุดจึงถูกปล่อยออกมาอย่างรวดเร็ว มีเอกสารจำนวนมากผ่านทางอินเทอร์เน็ตและเป็นตัวเลือกที่คุ้มค่ามาก Python: ด้วยการเริ่มต้นเป็นภาษาสคริปต์โอเพนซอร์ซการใช้ Python จึงเพิ่มขึ้นตามกาลเวลา วันนี้มันเป็นห้องสมุดกีฬา (numpy, scipy และ matplotlib) และฟังก์ชั่นสำหรับการดำเนินการทางสถิติ / การสร้างแบบจำลองที่คุณอาจต้องการทำ นับตั้งแต่เปิดตัวแพนด้าก็มีความแข็งแกร่งในการดำเนินงานกับข้อมูลที่มีโครงสร้าง
รหัสหลาม
จากการนำเข้า sklearn linear_model
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
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)
ฉันไม่คิดว่า Python จะมีGUI แบบคลิกจุดที่เปลี่ยนเป็น SPSS และ SAS การเล่นกับสิ่งเหล่านั้นสนุกอย่างแท้จริง
ฉันได้ภาพนี้ในโพสต์ LinkedIn เมื่อใดก็ตามที่ฉันสงสัยในการใช้ python หรือ R ฉันจะตรวจสอบมันและพิสูจน์ว่ามีประโยชน์มาก