Tôi đang cố gắng sử dụng train_test_split
hàm và viết:
from sklearn.model_selection import train_test_split
và điều này gây ra
ImportError: No module named model_selection
Tại sao? Và cách khắc phục?
Tôi đang cố gắng sử dụng train_test_split
hàm và viết:
from sklearn.model_selection import train_test_split
và điều này gây ra
ImportError: No module named model_selection
Tại sao? Và cách khắc phục?
Câu trả lời:
Tôi đoán bạn có phiên bản sai của scikit-learn
, một tình huống tương tự đã được mô tả ở đây trên GitHub . Trước đây (trước đây v0.18
), train_test_split
nằm trong cross_validation
mô-đun:
from sklearn.cross_validation import train_test_split
Tuy nhiên, bây giờ nó nằm trong model_selection
mô-đun:
from sklearn.model_selection import train_test_split
vì vậy bạn sẽ cần phiên bản mới nhất.
Để nâng cấp lên phiên bản ít nhất 0.18
, hãy làm:
pip install -U scikit-learn
(Hoặc pip3
, tùy thuộc vào phiên bản Python của bạn). Nếu bạn đã cài đặt nó theo một cách khác, hãy đảm bảo rằng bạn sử dụng một phương pháp khác để cập nhật, chẳng hạn như khi sử dụng Anaconda.
import sklearn
, sklearn
(vâng, chỉ là từ) và sklearn.__version__
? Mặc dù nó đã được khắc phục cho bạn, nhưng sẽ rất thú vị khi biết vấn đề đến từ đâu.
conda cập nhật scikit-learning
Tôi đã gặp sự cố tương tự khi sử dụng Jupyter Notebook, bất kể tôi đã cập nhật nội dung gì trong Python 3, tôi không thể truy cập vào Jupyter:
import sklearn
print (sklearn.__version__)
0.17.1
để hiển thị scikit-learning-0.18.1
Cuối cùng, tôi đã gỡ bỏ Anaconda3 và Jupyter Notebook và cài đặt lại mới. Tôi đã nhận nó để làm việc.
http://ukitech.blogspot.com/2017/02/sklearnmodelselection.html
Để cài đặt scikit-learning phiên bản 18.0, tôi đã sử dụng cả hai lệnh:
conda cập nhật scikit-learning
pip install -U scikit-learning
Nhưng nó không hoạt động. Đã xảy ra sự cố "Không thể cài đặt 'scikit-learning'. Đây là một dự án đã cài đặt distutils và do đó chúng tôi không thể xác định chính xác tệp nào thuộc về nó, điều này sẽ chỉ dẫn đến việc gỡ cài đặt một phần".
Cuối cùng, tôi có thể cài đặt nó bằng cách sử dụng lệnh sau:
pip install --user --upgrade scikit-learning == 0.18.0
Vào cuối tháng 9 năm 2016, SciKit Learn 0.18 đã được phát hành và có một chút thay đổi đối với mã. Với SciKit Learn 0.18, hàm train_test_split hiện được nhập từ model_selection thay vì cross_validation.
from sklearn.cross_validation import train_test_split
đã được thay đổi thành :
from sklearn.model_selection import train_test_split
Điều tương tự cũng đã xảy ra đối với GridSearchCV.
Bản phát hành ổn định mới nhất của sklearn 0.20.0 có train_test_split nằm trong model_selection chứ không phải cross_validation
Để kiểm tra phiên bản sklearn của bạn:
nhập bản in sklearn (sklearn. phiên bản ) 0.20.2
Thêm một số thông tin vào câu trả lời trước từ @linusg:
sklearn
giữ lịch sử phát hành của tất cả các thay đổi của nó. Thỉnh thoảng hãy nghĩ đến việc kiểm tra nó. Đây là liên kết đến tài liệu.
Như bạn có thể thấy trong tài liệu cho phiên bản 0.18 , một mô-đun mới đã được tạo có tên model_selection
. Do đó, nó không tồn tại trong các phiên bản trước.
Cập nhật sklearn
và nó sẽ hoạt động!
Phiên bản sklearn của bạn quá thấp, model_selection
được nhập bằng 0.18.1, vì vậy vui lòng cập nhật phiên bản sklearn.