5

Tôi sử dụng Spark 2.1.0.Làm thế nào để thay thế các giá trị DataField với tên cột chính xác trong tập tin PMML Spark-MLlib?

Tôi đã cố gắng xuất mô hình Hồi quy tuyến tính Spark-MLlib làm tệp PMML. Tôi cũng đã xuất thành công tệp PMML. Nhưng trong tập tin đó, tôi không thể thấy bất kỳ tên trường nào trong đó. Tất cả tôi có thể thấy là như thế này,

enter image description here

bất cứ ai có thể cho tôi biết lý do cho điều này là những gì? Ngoài ra, xin vui lòng cho tôi biết làm thế nào để có được tên cột thay cho điều đó.

Trả lời

1

Có hai phương pháp để xuất mô hình Apache Spark sang định dạng dữ liệu PMML. Trước tiên, khi làm việc ở mức trừu tượng Spark ML, bạn có thể sử dụng thư viện JPMML-SparkML. Thứ hai, khi làm việc ở mức trừu tượng Spark MLlib, có vẻ như là trường hợp ở đây, thì bạn có thể sử dụng đặc điểm PMMLExportable được tích hợp sẵn.

JPMML-SparkML truy xuất tên cột từ lược đồ dữ liệu Spark ML qua DataFrame#schema(). Thật không may, không có tùy chọn như vậy cho Spark MLlib, do đó, tên tính năng "field_ {n}" và tên nhãn "target" chỉ đơn giản là các tên mã cứng giả.

Nó là khá dễ dàng để đổi tên trường trong tài liệu PMML sử dụng JPMML-Model thư viện:

pmmlExportable.toPMML("/tmp/raw-pmml-file") 
org.dmg.pmml.PMML pmml = org.jpmml.model.JAXBUtil.unmarshal("/tmp/raw-pmml-file"); 
org.jpmml.model.visitors.FieldRenamer targetRenamer = new FieldRenamer(FieldName.create("target"), FieldRenamer.create("y")); 
targetRenamer.applyTo(pmml); 
org.jpmml.model.JAXBUtil.marshal(pmml, "/tmp/final-pmml-file"); 

Nếu bạn marshal trường hợp này đối tượng PMML vào một tập tin PMML, sau đó bạn có thể thấy rằng lĩnh vực này "mục tiêu" (và tất cả các tham chiếu của nó) đã được đổi tên thành "y". Lặp lại quy trình với các tính năng.

Các vấn đề liên quan