[R] จะทำอย่างไรเมื่อเกิดข้อผิดพลาดในฟังก์ชันนิวรัลเน็ต

2018 11 年月日 15

ฟังก์ชันนิวรัลเน็ต

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

ข้อผิดพลาดและวิธีแก้ไขเมื่อเรียกใช้ neuralnet

ข้อผิดพลาดในการป้อนข้อมูลในตัวแปรเชิงคุณภาพ

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

library(caret) 
tmp <- dummyVars(~.,data=train) 
dummy <- as.data.frame(predict(tmp, train))

สูตรสำหรับการจำแนกหลายชั้น

สามารถเขียนฟังก์ชัน nnet ได้ดังนี้ที่นี่ สำหรับสายพันธุ์ ตัวแปรอื่นๆ จะถูกระบุเป็นตัวแปรอธิบาย (".” หมายถึงนอกเหนือจากตัวแปรวัตถุประสงค์)

library(nnet) 
nn1 <- nnet(formula = Species ~ ., size=5, data=train)

เนื่องจากตัวแปรอธิบายถูกสร้างเป็นตัวแปรจำลอง สูตรจึงอธิบายโดยเชื่อมต่อคลาสทั้งหมดที่จะจัดประเภทด้วย "+"

library("neuralnet") f = Species.setosa + Species.versicolor + Species.virginica       
~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width 
nn2 <- neuralnet(formula = f, data = dummy)

結果

คุณจำแนกม่านตาสำเร็จแล้ว