2015-04-18 40 views
9

Chúng tôi đã nâng cấp sklearn của chúng tôi từ 0.13-git cũ lên 0.14.1 và tìm hiệu suất của trình phân loại hồi quy logistic của chúng tôi thay đổi khá nhiều. Hai phân loại được đào tạo với cùng một dữ liệu có hệ số khác nhau, và do đó thường cho kết quả phân loại khác nhau.Các phiên bản khác nhau của sklearn cho kết quả đào tạo khá khác nhau

Theo một thử nghiệm tôi đã sử dụng 5 điểm dữ liệu (cao chiều) để đào tạo các phân loại LR, và kết quả là:

0.13-git:

clf.fit(data_test.data, y) 
LogisticRegression(C=10, class_weight='auto', dual=False, fit_intercept=True, 
intercept_scaling=1, penalty='l2', tol=0.0001) 
np.sort(clf.coef_) 
array([[-0.12442518, -0.11137502, -0.11137502, ..., 0.05428562, 
0.07329358, 0.08178794]]) 

0.14.1:

clf1.fit(data_test.data, y) 
LogisticRegression(C=10, class_weight='auto', dual=False, fit_intercept=True, 
intercept_scaling=1, penalty='l2', random_state=None, tol=0.0001) 
np.sort(clf1.coef_) 
array([[-0.11702073, -0.10505662, -0.10505662, ..., 0.05630517, 
0.07651478, 0.08534311]]) 

Tôi sẽ nói sự khác biệt là khá lớn, trong khoảng 10^(- 2). Rõ ràng dữ liệu tôi sử dụng ở đây không phải là lý tưởng, bởi vì chiều hướng của các tính năng lớn hơn nhiều so với số lượng mục nhập. Tuy nhiên, nó thường là trường hợp trong thực tế quá. Có liên quan gì đến lựa chọn tính năng không? Làm thế nào tôi có thể tạo ra kết quả giống như trước đây? Tôi hiểu các kết quả mới không nhất thiết phải tồi tệ hơn trước đây, nhưng bây giờ tập trung là làm cho chúng nhất quán nhất có thể. Cảm ơn.

+1

Trong 0.13.1 bạn không có 'random_state = None', đây có phải là lỗi đánh máy không? – EdChum

+0

Phiên bản 0.13 không có thông số đó. Trong 0.14.1 tôi cũng đã cố gắng để thiết lập random_state = 0, và kết quả là giống như random_state = None. – ymeng

+0

Đó là giá trị kiểm tra các tài liệu như có đôi khi sửa lỗi trong các phiên bản khác nhau – EdChum

Trả lời

2

Dưới đây là một lời nhận xét về việc phát hành 0.13 từ trang what's new:

Fixed class_weight support in svm.LinearSVC and linear_model.LogisticRegression 
by Andreas Müller. The meaning of class_weight was reversed as erroneously 
higher weight meant less positives of a given class in earlier releases. 

Tuy nhiên, mô tả của bản cập nhật dành cho phiên bản 0.13, không phải là một phiên bản cao hơn. Bạn đề cập rằng bạn đã sử dụng phiên bản 0.13-git, có thể bạn đã sử dụng bản phát hành trước của phiên bản 0.13 mà đối tượng địa lý không được chỉnh sửa: theo cách này, bản cập nhật có thể có ý nghĩa tương đối với vấn đề của bạn.

Bằng cách xem các hệ số của bạn, chúng thấp hơn trong phiên bản mới, điều này có ý nghĩa với mô tả của bản cập nhật cho biết trọng số ban đầu đã giảm xuống.

Bạn có thể muốn thay đổi các thông số mới của LogisticRegression(...) và cố gắng điều chỉnh mọi thứ một chút.

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